SpringMVC解析器

原创 2016年08月30日 23:53:42

SpringMVC中使用了DispatcherServlet作为Servlet,其重写了FrameworkServlet中的模板方法。下面是各模板方法的使用说明:
1)MultipartResolver
在Spring中,MultipartResolver主要用来处理文件上传。默认没有使用,则开发者需要自己处理。若要使用MultipartResolver则需要在web.xml中添加multipart解析器,若请求中包含multipart,那么上下文定义的MultipartResolver就会解析它。
配置如下:

<bean id="multipartResolver" class="org.Springframework.web.multipart.commons.CommonsMultipartResolver">
    <property name="maximumFileSize"><value>字节数</value></property>
</bean>

2)LocaleResolver
在Spring的国际化配置中一共有三种使用方式:
a、基于URL参数的配置:通过URL参数来控制国际化,比如在页面上加一句

    <a href="myTest.jsp?locale=zh_CN">简体中文</a>
来控制项目中使用的国际化参数
配置如下:
    <bean id="localeResolver" class="org.Springframework.web.servlet.i18n.AcceptHeaderLocaleResolver"/>
b、基于session的配置:通过检验用户会话中预置的属性来解析区域,最常用的是根据用户本次会话过程中的语言设定决定语言种类,如果该会话不存在,它会根据accept-language HTTP头部确定默认区域。
配置如下:
    <bean id="localeResolver" class="org.Springframework.web.servlet.i18n.SessionLocaleResolver"/>
c、基于Cookie的国际化配置:用于通过浏览器的cookie设置取得Locale对象,这种策略在应用程序不支持会话或者状态必须保存在客户端时有用。
配置如下:
    <bean id="localeResolver" class="org.Springframework.web.servlet.i18n.CookieLocaleResolver"/>

3)ThemeResolver
一个主题就是一组静态资源(比如样式表、图片等),它们可以影响应用程序的视觉效果
a、主题资源

    <bean id="themsSource" class="org.Springframework.ui.context.support.ResourceBundleThemeSource">
    </bean>
b、主题解析器
FixedThemeResolver:用于选择一个固定的主题
    <bean id="themeResolver" class="org.Springframework.web.servlet.theme.FixedThemeResolver">
        <property name="defaultThemeName" value="主题名" />
    </bean>
CookieThemeResolver:用于实现用户所选的主题,以cookie的形式存放在客户端的机器上
    <bean id="themeResolver" class="org.Springframework.web.servlet.theme.CookieThemeResolver">
        <property name="defaultThemeName" value="主题名" />
    </bean>
SessionThemeResolver:用户的主题保存在HTTP session中
    <bean id="themeResolver" class="org.Springframework.web.servlet.theme.SessionThemeResolver">
        <property name="defaultThemeName" value="主题名" />
    </bean>
AbstractThemeResolver:是一个抽象类被SessionThemeResolver和FixedThemeResolver继承,也可以通过继承该抽象类来自定义主题解析器
c、拦截器:根据用户请求来改变主题
配置如下:
    <bean id="themeChangeInterceptor" class="org.Springframework.web.servlet.theme.ThemeChangeInterceptor">
        <property name="paramName" value="themeName"></property>
    </bean>
注:需要在handlerMapping中配置拦截器
    <property name="interceptors">
        <list>
            <ref local="themeChangeInterceptor" />
        </list>
    </property>

4)HandlerMappings
客户端发出Request时DispatcherServlet会将Request提交给HandlerMapping,然后HandlerMapping根据WebApplicationContext的配置回传给DispatcherServlet相应的Controller。
注:DispatcherServlet按各个HandlerMapping的优先级进行询问,直到获取一个可用的Handler为止


5)HandlerAdapters
作为总控制器的派遣期servlet通过外处理器映射得到处理器后,会轮询处理器适配器模块,查找能够处理当前HTTP请求的处理器是配置的实现,处理器适配器模块根据处理器映射返回的处理器类型来选择某一个适当的处理器适配器的实现,从而适配当前的HTTP请求。


6)HandlerExceptionResolvers
使用这种异常处理方式,需要实现resolveException方法,该方法返回一个ModelAndView对象,在方法内部对异常的类型进行判断,然后尝试生成对应的ModelAndView对象,如果该方法返回了null,则Spring会继续寻找其他的实现了HandlerExceptionResolver接口的bean,直到返回一个ModelAndView对象。
配置如下:

    <bean id="exceptionHandler" class="com.test.exception.MyExceptionHandler" />

7)RequestToViewNameTranslator
当Controller处理器方法没有返回一个View对象或逻辑视图名称,并且在该方法中没有直接往response的输出流里面写数据的时候,Spring就会采用约定好的方式提供一个逻辑视图名称。可通过实现接口org.Springframework.web.servlet.RequestToViewNameTranslator接口的getViewName方法来实现。
属性介绍:
a、prefix:前缀,表示约定好的视图名称需要加上的前缀,默认是空串
b、suffix:后缀,表示约定好的视图名称需要加上的后缀,默认是空串
c、separator:分隔符,默认是“/”
d、stripLeadingSlash:如果首字符是分隔符,是否要去除,默认是true
e、stripTrailingSlash:如果最后一个字符是分隔符,是否要去除,默认是true
f、stripExtension:如果请求路径包含扩展名是否要去除,默认是true
g、urlDecode:是否需要对URL解码,默认是true
8)ViewResolvers
在springmvc的配置中这个配置是比较常见的了,当Controller将请求处理结果放入到ModelAndView中以后,DispatcherServlet会根据ModelAndView选择合适的视图进行渲染。ViewResolver接口定义了resolveViewName方法,根据viewName创建合适类型的View实现。
配置如下:

    <bean class="org.Springframework.web.servlet.view.InternalResourceViewResolve">
        <property name="prefix" value="/WEB-INF/views/" />
        <property name="suffix" value=".jsp" />
    </bean>

9)FlashMapManager
springmvc Flash attributes 提供了一个请求存储属性,可供其他请求使用。在使用重定向的时候非常必要。Flash attributes在重定向之前暂存(就像存在session中)以便于重定向之后还能使用,并立即删除。
FlashMap用于保持flash attributes,而FlashMapManager用于存储、检索、管理FlashMap实例。

版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

springMVC4(13)视图解析器分类详解

在 《springMVC4(7)模型视图方法源码综合分析》 中,我们介绍了ModelAndView的用法,它会在控制层方法调用完毕后作为返回值返回,里面封装好了我们的业务逻辑数据和视图对象或视图名...

spring 获取方法参数签名

最近在用CXF restful ,cxf3 集成了Validation, 但hibernate validation返回的异常信息里不能准确的显示出方法参数签名,只能以arg0 arg1来表示参数,对...

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

springMVC4(7)模型视图方法源码综合分析

在完整web开发中,springMVC主要充当了控制层的角色。它接受视图层的请求,获取视图层请求数据,再对数据进行业务逻辑处理,然后封装成视图层需要的模型数据,再将数据导向到jsp等视图界面。 在前...

详解SpringMVC中Controller的方法中参数的工作原理[附带源码分析]

目录 前言 现象 源码分析 HandlerMethodArgumentResolver与HandlerMethodReturnValueHandler接口介绍 HandlerMeth...

JAVA小白启蒙篇:第一个SSM框架搭建示例(附源码下载)

背景 前段时间,忙这忙那的,又是专题分析,又是PMP培训,一直都没有办法闲下来。最近又换了班组,昨天才把家当都搬好,今天终于有空可以写点东西了。上次给班组成员进行了一期JAVA的基础培训,这次准备来个...

Springmvc中对日期类型的属性转换问题和自定义的参数解析器

springmvc属性编辑器: 对于日期类型的属性转换通过注入属性编辑器。可以在action类中通过@Binder注解注册属性编辑器。通过自定义属性编辑类方法,定义属性编辑器。 定义方法: 需要...

SpringMVC之视图解析器及解析过程浅析

前言    当我们对SpringMVC控制的资源发起请求时,这些请求都会被SpringMVC的DispatcherServlet处理,接着Spring会分析看哪一个HandlerMapping定义的...

springMVC4视图解析器分类详解

在 《springMVC4(7)模型视图方法源码综合分析》 一文中,我们介绍了ModelAndView的用法,它会在控制层方法调用完毕后作为返回值返回,里面封装好了我们的业务逻辑数据和视图对象或视图名...

Hibernate ProXool关于hibernate.proxool.existing_pool设值问题

今天在使用hibernate用proxool连接池的时候出了一些问题 具体问题是当不通过web对数据库进行操作时,会提示 Unable to open JDBC connection for sche...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)