SpringMVC

1.Spring MVC的设计是围绕DispatcherServlet展开的:

  • 约定大于配置的契约式编程支持
  • 支持灵活的URL到页面控制器的映射、支持Restful风格
  • 模型数据不放在特定的API里,而是放在一个Model里(Map数据结构实现,因此很容易被其他框架使用)

2.Spring MVC工作原理

1、客户端发送请求

2、客户端发送的请求到达服务器控制器

  服务器控制器由Servlet(DispatcherServlet)实现的,来完成请求的转发

3、该控制器(DispatcherServlet)调用了一个用于映射的类HandlerMapping,

  该类用于将请求映射到对应的处理器来处理请求。

4、HandlerMapping将请求映射到对应的处理器Controller(相当于Action)

  在Spring当中如果写一些处理器组件,一般实现Controller接口

5、在Controller中就可以调用一些Service或DAO来进行数据操作

6、ModelAndView用于存放从DAO中取出的数据,还可以存放响应视图的一些数据

7、如果想将处理结果返回给用户,那么在Spring框架中还提供一个视图组件ViewResolver,

  该组件根据Controller返回的标示,找到对应的视图并传递数据信息,将响应response返回给用户

3.开发流程 

XML配置文件方式

A.添加依赖包

  spring-context-4.2.8(其它spring依赖包会依赖导入)、spring-webmvc-4.2.8

B.添加xml配置文件

C.在web.xml中配置DispatcherServlet前端控制器组件

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 3     xmlns="http://java.sun.com/xml/ns/javaee"
 4     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
 5     id="WebApp_ID" version="3.0">
 6     <display-name>day</display-name>
 7     <welcome-file-list>
 8         <welcome-file>index.html</welcome-file>
 9         <welcome-file>index.htm</welcome-file>
10         <welcome-file>index.jsp</welcome-file>
11         <welcome-file>default.html</welcome-file>
12         <welcome-file>default.htm</welcome-file>
13         <welcome-file>default.jsp</welcome-file>
14     </welcome-file-list>
15     <!-- spring的核心控制器 当tomcat容器启动的时候,会自动加载配置在web.xml的servlet,从而创建核心控制器 该核心控制器是处理所有的请求的匹配,并且调用其他的组件来处理请求 
16         当前匹配逻辑是做后缀匹配 spring的核心控制器有一个属性是用来设置启动的时候加载哪些xml配置文件的 -->
17     <servlet>
18         <servlet-name>springmvc</servlet-name>
19         <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
20         <!-- 当该对象初始化的时候会调用当前的信息来给bean赋初始化值 -->
21         <init-param>
22             <!-- 该参数是用来指定加载spring的主配置文件的 -->
23             <param-name>contextConfigLocation</param-name>
24             <param-value>classpath:application.xml</param-value>
25         </init-param>
26     </servlet>
27 
28     <servlet-mapping>
29         <servlet-name>springmvc</servlet-name>
30         <!-- 匹配以 .do结尾的url -->
31         <url-pattern>*.do</url-pattern>
32     </servlet-mapping>
33 
34 </web-app>

 

D.配置Spring HandlerMapping组件(分发web请求到Controller的映射)

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns="http://www.springframework.org/schema/beans"
 3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
 4     xmlns:jdbc="http://www.springframework.org/schema/jdbc" xmlns:jee="http://www.springframework.org/schema/jee"
 5     xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop"
 6     xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:util="http://www.springframework.org/schema/util"
 7     xmlns:jpa="http://www.springframework.org/schema/data/jpa"
 8     xsi:schemaLocation="
 9         http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
10         http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd
11         http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-4.2.xsd
12         http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-4.2.xsd
13         http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.2.xsd
14         http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa-1.3.xsd
15         http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.2.xsd
16         http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd
17         http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.2.xsd">
18 
19     <!-- handelMapping 配置 该组件可以通过url找到对应的Controller组件 并且调用Controller对应的方法执行程序 -->
20     <bean id="handelMapping"
21         class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
22         <property name="mappings" ref="urlMaps"></property>
23     </bean>
24 
25     <util:properties id="urlMaps">
26         <prop key="/hello.do">helloController</prop>
27         <!-- 可以设置其他多个的请求和对应的Controller关系 -->
28         <prop key="/rjl.do">rjlController</prop>
29     </util:properties>
30     <!-- ################################### -->
31     <!-- 设置Controller组件的配置  必须与前面对应!!!-->
32     <bean id="helloController" class="com.rong.controller.HelloController">
33     </bean>
34     <bean id="rjlController" class="com.rong.controller.RjlController"></bean>
35     <!-- 视图解析器设置
36         该视图解析器是由spring提供
37         prefix:前缀
38         suffix:后缀
39         视图解析器会根据Controller响应回来的视图字符串数据hello,再通过前面拼接前缀"/WEB-INF/view/"和后缀".jsp"
40         生成新字符串:/WEB-INF/view/hello.jsp
41      -->
42     <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
43         <property name="prefix" value="/WEB-INF/view/"></property>
44         <property name="suffix" value=".jsp"></property>
45     </bean>
46 </beans>

 

E.新建Controller类并实现spring提供的Controller接口,配置该bean

 1 package com.rong.controller;
 2 
 3 import javax.servlet.http.HttpServletRequest;
 4 import javax.servlet.http.HttpServletResponse;
 5 
 6 import org.springframework.web.servlet.ModelAndView;
 7 import org.springframework.web.servlet.mvc.Controller;
 8 
 9 public class HelloController implements Controller {
10     /**
11      * 该方法类似servlet里面的service方法,会自动被调用执行
12      * ModelAndView:是模型和视图对象,里面封装了模型层数据和响应视图数据
13      * ModelAndView("hello"):该方法可以根据"hello"设置响应视图的数据,该字符串数据会由视图解析器来处理
14      * hello是viewName:视图的名字
15      */
16     @Override
17     public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
18         System.out.println("Hello springmvc...HelloController!");
19         ModelAndView modelAndView = new ModelAndView("hello");
20         return modelAndView;
21     }
22 }

 配置该bean到xml:id要与前面的prop的值对应

    <bean id="helloController" class="com.rong.controller.HelloController">
    </bean>
    <bean id="rjlController" class="com.rong.controller.RjlController"></bean>

 

F.添加ViewResolver组件配置

<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/view/"></property>
        <property name="suffix" value=".jsp"></property>
    </bean>

G.新建hello.jsp页面视图组件

 

注解方式:

web.xml配置

    <servlet>
        <servlet-name>springmvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:application.xml</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>*.action</url-pattern>
    </servlet-mapping>

新建控制器类

 1 package com.rong.controller;
 2 
 3 import org.springframework.stereotype.Controller;
 4 import org.springframework.web.bind.annotation.RequestMapping;
 5 /**Controller
 6  * spring会将当前组件作为controller来使用
 7  * 
 8  * RequestMapping
 9  * 可以写在类或方法上面
10  * 写在类上面的匹配字符串代表模块
11  * 写在方法上面的匹配字符串代表具体哪个方法来执行请求
12  * 
13  * @author Administrator
14  * 
15  */
16 
17 @Controller
18 @RequestMapping("/abc")
19 public class RJLController {
20     @RequestMapping("/rjl.action")
21     //对应请求为  /项目名/abc/rjl.action
22     public String toRjl(){
23         return "rjl";
24     }
25 }

spring xml配置文件

    <!-- 开启IOC注解扫描 -->
    <context:component-scan base-package="com.rong"></context:component-scan>
    <!-- 开启springmvc注解扫描 -->
    <mvc:annotation-driven></mvc:annotation-driven>
    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/"></property>
        <property name="suffix" value=".jsp"></property>
    </bean>

新建网页视图。。。

posted @ 2017-11-09 20:54  57容杰龙  阅读(160)  评论(0编辑  收藏  举报