原文链 id="核心流程及配置">核心流程及配置
核心流程
首先用户发送请求-------->DispatcherServlet,前端控制器收到请求后自己不进行处理,而是委托给其他的解析器进行处理,作为同一访问点,进行全局的流程控制
DispatcherServlet--------->HandlerMapping,HandlerMapping将会把请求映射为HandlerExecutionChain对象(包含一个Handler处理器对象、多个HandlerInterceptor拦截器),通过策略模式,很容易添加新的映射策略
DispatcherServlet---------->HandlerAdapter,HandlerAdapter将会把处理器包装为适配器,从而支持多种类型的处理器,即适配设计模式的应用,从而很容易支持很多类型的处理器
HandlerAdapter------------->处理器功能处理方法的调用,HandlerAdapter将会根据适配的结果调用真正的处理器的功能处理方法,完成功能处理,并返回一个ModelAndView对象
ModelAndView的逻辑视图名-------->ViewResolver,ViewResolver将把逻辑视图解析为具体的View,通过这种策略模式,很容易更换其他视图技术
View------>渲染,View会根据传进来的Model模型进行渲染,此处的Model实际是一个Map
返回控制权给DispatcherServlet,有DispatcherServlet返回响应给用户
配置
DispatcherServlet
DispatcherServlet充当SpringMVC的前端控制器。与其他Servlet一样,DispatcherServlet必须在Web应用程序的web.
web.
<!-- springmvc会过滤掉.html的 导致视图解析器无法找到 如果只是使用jsp资源而未使用html的话可以不配置该项--><servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.html</url-pattern></servlet-mapping><!-- 配置DispatcherServlet --><servlet> <servlet-name>DispatcherServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!-- 初始化参数:配置Springmvc配置文件的位置和名称 默认配置文件为:/WEB-INF/<servlet-name>-servlet.
静态资源请求问题
因为DispatcherServlet的
配置<mvc:default-servlet-handler/>来解决,作用是处理静态资源,将在SpringMVC上下文中定义一个DefaultServletHttpRequestHandler,会对进行DispatcherServlet的请求进行筛选,如果发现是没有经过映射的请求,就将请求交给WEB服务器默认的Servlet来处理,否则交由DispatcherServlet来处理
default-servlet-name默认是default,如果不是default需要显式的进行配置(看所使用的web服务器,tomcat是default
<mvc:default-servlet-handler default-servlet-name="default"/>
需要注意的是,配置了<mvc:default-servlet-handler/>之后,@RequestMapping的映射会失效,需要加上<mvc:annotation-driven/>配置
HandlerMapping
spring自带了多个处理器映射实现
BeanNameUrlHandlerMapping 根据控制器Bean的名字将控制器映射到URL
ControllerBeanNameHandlerMapping 与BeanNameUrlHandlerMapping类似
ControllerClassNameHandlerMapping 通过使用控制器的类名作为URL基础将控制器映射到URL
DefaultAnnotationHandlerMapping 将请求映射给使用@RequestMapping注解的控制器和控制器方法
SImplerUrlHandlerMapping 使用定义在Spring应用上下文的集合将控制器映射到URL
<!-- 开启注解 --><mvc:annotation-driven/><bean id="defaultAnnotationHandlerMapping" />
mvc:annotation-driven配置的作用
- <mvc:annotation-driven/>会自动注册RequestMappingHandlerMapping、RequestMappingHandlerAdater、ExceptionHandlerExceptionResolver三个bean
- 支持使用ConversionService实例对表单参数进行类型转换
- 支持使用@NumberFormatannotation、@DataTimeFormat注解完成数据类型的格式化
- 支持使用@Vaild注解对JavaBean实例进行JSR 303验证
- 支持使用@RequestBody和@ResponseBody注解
HandlerAdapter
<bean id="annotationMethodHandlerAdapter" />
配置视图
InternalResourceViewResolver将逻辑视图名称解析为View对象,架构该对象渲染的任务委托给Web应用程序上下文的一个模板
<!-- 配置视图解析器,将ModelAndView及字符串解析为具体的页面 --><bean > <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"></property> <property name="prefix" value="/WEB-INF/jsp/"></property> <property name="suffix" value=".jsp"></property></bean>
由于本身的博客百度没有收录,博客地 />
原文转载:http://www.shaoqun.com/a/598579.html
vava:https://www.ikjzd.com/w/2780
patents:https://www.ikjzd.com/w/857
原文链id="核心流程及配置">核心流程及配置核心流程首先用户发送请求-------->DispatcherServlet,前端控制器收到请求后自己不进行处理,而是委托给其他的解析器进行处理,作为同一访问点,进行全局的流程控制DispatcherServlet--------->HandlerMapping,HandlerMapping将会把请求映射为Hand
卖家精灵:https://www.ikjzd.com/w/532
tiki:https://www.ikjzd.com/w/2053
photobucket:https://www.ikjzd.com/w/132
一份日本卖家和中国卖家CTR/CR的血淋淋对比数据:https://www.ikjzd.com/tl/98302
eBay:法国12月5日的罢工可能会影响送货时间!:https://www.ikjzd.com/home/112255
亚马逊北美站旺季爆款教卖家如何优化高质量listing?:https://www.ikjzd.com/home/11256