SSM入门
分类:计算机教程

SpringMVC,

继续学习SpringMVC框架,发现好长时间没学习。共勉!

步骤:
1.加入 jar 包
2.在 web.xml 中配置 DispatcherServlet
3.加入 Spring MVC 的配置文件
4.编写处理请求的处理器,并标识为处理器
5.编写视图

目录结构说明

图片 1

spring-mvc.xml 配置:

配置自动扫描的包
配置视图解析器:视图名称解析器:将视图逻辑 名解析为: /.html

    <context:component-scan base-package="com.controller"></context:component-scan>

    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/"></property>
        <property name="suffix" value=".html"></property>
    </bean>

web.xml配置:

配 置 DispatcherServlet :DispatcherServlet 默 认 加 载  Spring 配置文件, 启动 WEB 层 的 Spring 容器。可以通过 contextConfigLocation 初始化参数自定 义配置文件的位置和名称

  <!--配置Springmvc核心控制器  -->  
  <servlet>
      <servlet-name>springDispatcherServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:spring-mvc.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <!-- 将所有请求映射到DispatcherServlet进行处理 -->
  <servlet-mapping>
      <servlet-name>springDispatcherServlet</servlet-name>
    <url-pattern>*.action</url-pattern>
  </servlet-mapping>  

controller :

创建请求处理器类

@Controller
@RequestMapping("/hello")
public class HelloController {

    @RequestMapping("/helloWorld")
    public String helloWord(){
        System.out.println("Hello World!");
        return "success";
    }
}

url请求:

<a href="hello/helloWorld.action">请求</a>

代码及架包下载https://pan.baidu.com/s/1dOm7x0 密码:kdcv

没有架包的同学可以省去找架包的时间。

http://www.bkjia.com/Javabc/1296021.htmlwww.bkjia.comtruehttp://www.bkjia.com/Javabc/1296021.htmlTechArticleSpringMVC, 继续学习SpringMVC框架,发现好长时间没学习。共勉! 步骤: 1.加入 jar 包 2.在 web.xml 中配置 DispatcherServlet 3.加入 Spring MVC 的配置文...

学习SpringMVC的过程(一)

  • 什么是SpringMVC
  • 什么是MVC
  • SpringMVC的框架流程图
  • SpringMVC框架的流程描述
  • 几个重要的组件

1.什么是SpringMVC

SpringMVC是Spring的一个模块,SpringMVC和Spring不需要通过中间进行整合(struts2与spring整合需要单独的jar包),
springMVC是基于MVC的Web框架。

下图是Spring框架中的SpringMVC

图片 2

Spring框架图

2.什么是MVC

MVC是一个设计模式,下图是它在b/s系统下的应用

图片 3

传统MVC

3.SpringMVC的内部流程

图片 4

SpringMVC框架图


4.SpringMVC框架的流程描述

我的天,看这个图是不是不难啊,看着很简单的样子。

这个故事还没有完结     
                    --亚索

一、user向服务器server发起请求,请求到达前端控制器DispatcherServlet

二、前端控制器DispatcherServlet调用处理器映射器HandlerMapping返回该请求的handler

三、处理器映射器HandlerMapping根据url查找请求对应的hander(XML注释、注解)

四、前端控制器DispatcherServlet获取handler之后,调用处理器适配器HandlerAdapter

五、处理器适配器HandlerAdapter来调用Handel处理器,并获去Handel处理器返回的ModelAndView对象

六、处理器适配器将ModelAndView对象返回给前端控制器DispatcherServlet

七、前端控制器DispatcherServlet请求进行视图解析

八、视图解析器View resolver进行解析,很据逻辑视图名,转换成真正的视图(例如:JSP),返回view给前端控制器 DispatcherServlet

九、前端控制器DispatcherServlet请求渲染视图,将ModelAndView对象的内容填充到view中

十、前端控制器DispatcherServlet将响应结果返回给user

5.几个重要的组件

从上面的描述中很明显能抽取出几个重要的组件

前端控制器DispatcherServlet

作用:用于接收用户的请求,进行转发,响应,相当于中央处理器,
它降低了组件之间的耦合度。相当于中央控制器,掌控着其他个组件的运作。
这是不需要程序员自己编写的,框架本身提供了。

处理器映射器HandlerMapping

根据url查找handler,不需要自己编写。

处理器适配器HandlerAdapter

按照特的规则去执行handler

视图解析器View resolver

很据逻辑视图名,转换成真正的视图(例如:JSP)
Handel处理器
需要程序自己开发,要按照处理器适配器HandlerAdapter特定的规则去编写

view

view的一个接口,不同的实现代表不同的view

小结
上面的组件只有view和handler处理器是需要自己编写的

学习SpringMVC的过程(二)

  • 项目结构
  • 在web.xml中设置前端控制器
  • 在类路径下的springmvc.xml中配置其他的组件
  • 开发Handler
  • 部署测试一下

项目结构

图片 5

image

在web.xml中设置前端控制器

<servlet>
    <servlet-name>springmvc</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
    <!-- contextConfigLocation:指定springmvc配置的加载位置
    ,如果不指定则默认加载WEB-INF/[DispatcherServlet 的Servlet 名字]-servlet.xml。 -->
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:springmvc.xml</param-value>
    </init-param>  
  </servlet>
  <servlet-mapping>
    <servlet-name>springmvc</servlet-name>
    <url-pattern>*.action</url-pattern>
    <!-- url-pattern:*.action的请交给DispatcherServlet处理。 -->
  </servlet-mapping>

可以追踪org.springframework.web.servlet.DispatcherServlet的源码,可以看到

图片 6

image

user-pattern:解释

第一种:*.action 访问以action结尾,由DispatcherServlet进行解析

第二种:/ 所有访问的地址都由DispatherServlet进行解析,静态文件可以通过配置不使用DispatcherServlet解析,符合Restful风格;

第三种:/* 这是错误的,这样的配置是解析jsp,仍会由DispatherServlet进行解析,不能根据jsp去找到Handler,会报错的!!

在类路径下的springmvc.xml中配置其他的组件

配置处理器适配器

<!-- 每个处理器适配器都实现了HandlerAdapter接口 -->
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>

简单处理器适配器,可以跟踪一下源码:

图片 7

image

public class SimpleControllerHandlerAdapter implements HandlerAdapter {

    public boolean supports(Object handler) {
        return (handler instanceof Controller);
    }

    public ModelAndView handle(HttpServletRequest request, HttpServletResponse response, Object handler)
            throws Exception {

        return ((Controller) handler).handleRequest(request, response);
    }

    public long getLastModified(HttpServletRequest request, Object handler) {
        if (handler instanceof LastModified) {
            return ((LastModified) handler).getLastModified(request);
        }
        return -1L;
    }

}

可以看到简单处理器支配器实现了Controller接口

配置处理器映射器

<!-- 配置处理器映射器 -->
<!-- 根据bean的name进行查找Handler 将action的url配置在bean的name中 -->
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>

配置视图解析器

<!-- 配置视图解析器
这个是解析jsp的,默认使用jstl标签,所有classpath路径下要存在jstl的包-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"/>

配置处理器

==这一步需要先自己开发Handler,移至下一步==

<!-- 配置处理器 -->
<bean name="/items.action" class="com.aikuyun.ssm.controller.ItemsController"/>

解释一下:name属性时自己编写的,处理器映射器隔根据这个name去查找handler

开发Handler

==先不关心数据库,只是简单的模拟一下数据==

com.aikuyun.ssm.controller包中重新建ItemsController.java

代码如下:要实现Controller接口

package com.aikuyun.ssm.controller;

import java.util.ArrayList;
import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;

import com.aikuyun.ssm.po.Items;

/*
 * 
    * @ClassName: ItemsController
    * @Description: TODO(这里用一句话描述这个类的作用)
    * @author 陶世磊
    * @date 2017年3月20日
    *
 */
//实现org.springframework.web.servlet.mvc.Controller接口,按照特定的规范
public class ItemsController implements Controller {

    @Override
    public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
        // 商品列表
        List<Items> itemsList = new ArrayList<Items>();

        Items items_1 = new Items();
        items_1.setName("联想笔记本");
        items_1.setPrice(6000f);
        items_1.setDetail("ThinkPad T430 联想笔记本电脑!");

        Items items_2 = new Items();
        items_2.setName("苹果手机");
        items_2.setPrice(5000f);
        items_2.setDetail("iphone6苹果手机!");

        itemsList.add(items_1);
        itemsList.add(items_2);
        //创建ModelAndView对象
        ModelAndView modelAndView = new ModelAndView();
        // 填充数据
        modelAndView.addObject("itemsList", itemsList);
        // 填充视图
        modelAndView.setViewName("/WEB-INF/items/itemsList.jsp");
        //返回ModelAndView
        return modelAndView;
    }

}

开发Handler之后要在配置文件中配置该类,==返回看上一步==;

部署测试一下

打开服务器之后,在浏览器里访问:http://localhost:8080/项目名/items.action

查看测试结果,OK!

学习SpringMVC的过程(三)

  • 非注解的处理器适配器和处理器映射器
  • DispatcherSerlvet.properties
  • 注解的处理器适配器和处理器映射器

本文由美洲杯赔率发布于计算机教程,转载请注明出处:SSM入门

上一篇:TreeMap添加元素时异常 Comparable异常,treemapcompar 下一篇:没有了
猜你喜欢
热门排行
精彩图文
  • PHP实现Soap通讯的方法
    PHP实现Soap通讯的方法
    本文实例讲述了PHP实现Soap通讯的方法。分享给大家供大家参考。具体实现方法如下: 复制代码 代码如下: ?php function HttpSoap($server, $port, $url, $namespace, $act
  • 男篮世界杯赔率php结合js实现点击超链接执行删除
    男篮世界杯赔率php结合js实现点击超链接执行删除
    如题,本次是要实现点击超链接实现执行js代码,并确认是否删除数据库数据,采用php。 首先链接数据库,查询数据库数据: 复制代码 代码如下: ?php $db
  • js出生日期 年月日级联菜单示例代码
    js出生日期 年月日级联菜单示例代码
    现在世界通用的公历(阳历)也经过一个长期演变的过程。我们先看,公历每个月的日数是固定的:"七前单大,八后双大"。也就是说,一、三、五、七、
  • php.ini 中文版
    php.ini 中文版
    ; 错误报告是按位的。或者将数字加起来得到想要的错误报告等级。 ; E_ALL - 所有的错误和警告 ; E_ERROR - 致命性运行时错 ; E_WARNING - 运行时警告(非致命性
  • PHP编码转换男篮世界杯赔率
    PHP编码转换男篮世界杯赔率
    SELECT COLLATIONPROPERTY('Chinese_PRC_Stroke_CI_AI_KS_WS','CodePage') 男篮世界杯赔率,返回为936,即GBK编码。 936 简体中文GBK 950 繁体中文BIG5 437 美国/加拿大英语 932 日文