当前位置:
文档之家› SpringMVC精品PPT课件
SpringMVC精品PPT课件
➢ 解析URL后缀名,映射为requestMediaType ➢生成candidateViews ➢比较requestMediaType和candidateViews中每个View的MediaType,返回第一 个匹配的View ➢如果没有匹配的View,一般采用InternalResourceViewResolver返回一个JSP ➢如果这个JSP文件不存在,报404
1. InternalResourceViewResolver (1) 典型的JSP视图,有“addBook”—— /WEB-INF/jsp/addBook.jsp (2) 自动位于视图解析链中的最后一个,如果 InternalResourceViewResolver找不到视图,则会报404异常 <bean id="internalResourceViewResolver" … <property name="prefix" value="/WEB-INF/jsp/" /> <property name="suffix" value=".jsp" /> </bean>
Spring MVC相关配置
• Web.xml — 配置Spring MVC的FrontController(DispatcherServlet) — 配置Spring 配置文件的位置 — 其他配置(Servlet、Filter等)
• Spring配置文件 — 配置HandlerMapping(可基于注解) — 配置ViewResolver
Spring MVC处理流程 —— Controller
1. Controller负责接收从DispatchServlet转发的URL请求(中间会 插入interceptor的调用);
2. Spring MVC的Controller可以细化到method级别,并支持URL的串 接;
3. Spring MVC2.5中Controller需要实现Controller接口,只有单一 的请求处理方法;
常用的ViewResolver
1. ContentNegotiateViewResolver (1)非常重要的ViewResolver,它不是一个实际的Resolver,而是根据内容 (ContentType/MediaType)来匹配(协商)视图的一种解析器; (2)学习、研究ContentNegotiateViewResolver的源码,有益于更好地掌握其 配置; (3) ContentNegotiateViewResolver的成员变量viewResolvers,用来保存整 个配置文件中除了“自身”以外的其他ViewResolver,如 InternalResourceViewResolver; (4) ContentNegotiateViewResolver解析视图的过程如图;
Web.xml配置
前端控制器 DispatcherServlet
Spring配置文件
• HandlerMapping(寻找Controller)
ResovlerMapping(解析视图)
Spring MVC处理流程
பைடு நூலகம்
Spring MVC处理流程
DispatcherServlet
Spring MVC处理流程 —— DispatchServlet
4. Spring MVC3.0中的基于注解的Controller处理方法形式多样,处 理方法非常灵活(过于灵活,在学习阶段造成一定的难度);
5. AnnotationMethodHandlerAdapter 的getModelAndView ()方法负 责将各种不同参数形式的处理函数返回的不同类型的返回值WRAP成 ModelAndView;
1. DispatchServlet在Web容器初始化的时候完成初始化—— initStrategy() ;
2.初始化主要完成: multipartResolver、handlerMappings、 handlerAdapters、viewResolvers变量的赋值; 3.初始化有三种情况:基于注解、基于配置文件、默认初始化; 4. DispatchServlet 的doDispatch()方法负责转发请求,具体:执 行拦截器、调用Controller的业务执行方法、调用View解析器得到 View、调用View对象的render()方法;
Spring MVC处理流程 —— Controller注册
将Controller注册到context中的两种方法: 1.xxx-mvc.xml中配置; 2.采用@Controller注解( DefaultAnnotationHandlerMapping ) 1)DispatchServlet在初始化时自动扫描 base –package下的所 有class; 2)依据class中的@Controller注解, DispatchServlet动态生成 URL-- class-method的映射,放入handlingMap成员变量中; 3)见DefaultAnnotationHandlerMapping中的detectHandler(), detectHandlerMethod()方法中自动扫描注解;
Spring MVC
Xue Feng
Spring MVC 架构
Spring MVC是结构最清晰的MVC Model 2实现。它的Action也不叫Action, 而是称做Controller;Controller接收request, response参数,然后返回 ModelAndView(其中的Model不是Object类型,而是Map类型)。但在其它 的Web Framework中,Action返回值一般都只是一个View Name;Model则 需要通过其它的途径(如request.attribute,session.attribute参数,或 Action本身的属性数据)传递上去。
Spring MVC处理流程
ViewResolver
• 从一个String逻辑视图名映射到一个视图对象 • 可以排序, 所以能链在一起 • 对JSP用户, 通常实现 InternalResourceViewResolver:
Spring MVC处理流程 —— ViewResolver
常用的ViewResolver