SpringMVC学习笔记(1)之入门篇

来源:互联网 发布:大众软件2016 7月 编辑:程序博客网 时间:2024/06/05 18:51

SpringMVC学习笔记

Springmvc框架


执行流程

1.        第一步:发起请求到前端控制器(DispatcherServlet)

2.        第二步:前端控制器请求HandlerMapping查找 Handler。    

可以根据xml配置、注解进行查找

3.        第三步:处理器映射器HandlerMapping向前端控制器返回Handler

4.        第四步:前端控制器调用处理器适配器去执行Handler

5.        第五步:处理器适配器去执行Handler

6.        第六步:Handler执行完成给适配器返回ModelAndView

7.        第七步:处理器适配器向前端控制器返回ModelAndView。

         ModelAndView是springmvc框架的一个底层对象,包括Model和view

8.        第八步:前端控制器请求视图解析器去进行视图解析

         根据逻辑视图名解析成真正的视图(jsp)

9.        第九步:视图解析器向前端控制器返回View

10.    第十步:前端控制器进行视图渲染

         视图渲染将模型数据(在ModelAndView对象中)填充到request域

11.    第十一步:前端控制器向用户响应结果

相关组件

1.        前端控制器DispatcherServlet

1)        不需要程序员开发

2)        作用:接收请求,响应结果,相当于转发器,中央处理器。有了DispatcherServlet减少了其它组件之间的耦合度。

2、处理器映射器HandlerMapping

1)        不需要程序员开发

2)        作用:根据请求的url查找Handler

3、处理器适配器HandlerAdapter

1)        不需要程序员开发

2)        作用:按照特定规则(HandlerAdapter要求的规则)去执行Handler

4、处理器Handler

1)        需要程序员开发

2)        注意:编写Handler时按照HandlerAdapter的要求去做,这样适配器才可以去正确执行Handler。使用不同的处理器适配器,Handler实现的接口不同

5、视图解析器View resolver

1)        不需要程序员开发

2)        作用:进行视图解析,根据逻辑视图名解析成真正的视图(view)

6、视图View

1)        需要程序员开发jsp

2)        View是一个接口,实现类支持不同的View类型(jsp、freemarker、pdf...)

相关组件的配置

前端控制器

1.        位置:在web.xml中配置前端控制器。


非注解处理器映射器和适配器

1.        位置:在classpath下的springmvc.xml中配置处理器映射器。

处理器映射器

1.        第一种:org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping


2.        第二种:org.springframework.web.servlet.handler.SimpleUrlHandlerMapping


3.        多个映射器可以并存,前端控制器判断url能让哪些映射器映射,就让正确的映射器处理。

处理器适配器


1.        第一种:org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter

l  要求编写的Handler实现 Controller接口。

2.        第二种:org.springframework.web.servlet.handler.SimpleUrlHandlerMapping

l  要求编写的Handler实现HttpRequestHandler接口

注解处理器适配器和适配器

1.        位置:在classpath下的springmvc.xml中配置处理器适配器。

配置注解映射器和适配器

1.        第一种:分别配置


2.        第二种:自动配置

<mvc:annotation-driven></mvc:annotation-driven>

编写Handler

非注解式

1.        根据不同的非注解处理器映射器,编写Handler时继承不同的接口。

public class ItemsController1 implementsController {

 

   @Override

   public ModelAndView handleRequest(HttpServletRequest request,

         HttpServletResponse response) throws Exception {

   //数据填充

      //返回ModelAndView

      ModelAndView modelAndView =  new ModelAndView();

      //相当requestsetAttribut,在jsp页面中通过itemsList取数据

      modelAndView.addObject("itemsList", itemsList);

     

      //指定视图

modelAndView.setViewName("/WEB-INF/jsp/items/itemsList.jsp");

 

      return modelAndView;

   }

 

}

2.        将编写Handler在spring容器加载。

注解式

1.        通过注解声明Handler:


2.        在Spring容器中加载Handler

<context:component-scan base-package="cn.itcast.ssm.control"></context:component-scan>

视图解析器


1)        视图解析器配置前缀和后缀:


2)        程序中不用指定前缀和后缀:


小结:采用注解开发终极配置(实际开发使用)

源码分析

通过前端控制器源码分析springmvc的执行过程。

1.        第一步:前端控制器接收请求

调用doDiapatch


2.        第二步:前端控制器调用处理器映射器查找 Handler



3.        第三步:调用处理器适配器执行Handler,得到执行结果ModelAndView


4.        第四步:视图渲染,将model数据填充到request域。

1)        视图解析,得到view:


2)        调用view的渲染方法,将model数据填充到request域

3)        渲染方法:


 

 

 

 

 

 

 

 

 

1 0
原创粉丝点击