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实例。

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

相关文章推荐

14、Spring MVC 之 multipart (file upload) support

Spring在web应用程序的内置支持处理multipart文件上传.你可以使用定义在org.springframework.web.multipart包里面的MultipartResolver对象可...

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

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

关于URLEncoder的编码和URLDecode解码

在我们开发中,很多时候会遇见各种编码乱码的问题,其实这都是编码不一致的问题,如果你懂得了关于URLEncoder的编码和URLDecode解码,那么问题就会随之消失! 下面我们看看关于编码的代码: ...

Spring MVC 视图解析器(ViewResolver )

我们在controller里面经常这样return一个ModelAndView: return new ModelAndView('user', 'model', model); Dispatche...

HTTP协议之multipart/form-data请求分析

首先来了解什么是multipart/form-data请求: 根据http/1.1 rfc 2616的协议规定,我们的请求方式只有OPTIONS、GET、HEAD、POST、PUT、DELETE、TR...

【Spring实战】----Spring配置文件的解析

一、背景知识 Spring的核心的核心就是bean的配置及管理,至Spring最新发布的版本4.3.2已经有三种方式可以配置bean: 1)在XML中进行显示配置 2)在Java中进行显示配置 3)隐...

springMVC3学习(十二)--文件上传优化CommonsMultipartResolver

基于上一篇文件上传发现效率很慢,我们应该对它进行优化  使用springMVC对文件上传的解析器来处理文件上传的时候需要在spring的applicationContext里面加上springMVC提...

HTTP协议之multipart/form-data请求分析

首先来了解什么是multipart/form-data请求: 根据http/1.1 rfc 2616的协议规定,我们的请求方式只有OPTIONS、GET、HEAD、POST、PUT、DELETE、T...
  • five3
  • five3
  • 2012年01月06日 15:36
  • 170659

springMVC源码分析--动态样式ThemeResolver(二)

在上一篇博客springMVC源码分析--动态样式ThemeResolver(一)中我们介绍了多样式ThemeResolver的使用方法,接下来我们对源码进行简单的分析一下。ThemeResolver...

springMVC源码分析--动态样式ThemeResolver(一)

Spring MVC中通过ThemeSource接口来提供对动态更换样式的支持,并提供了ResourceBundleThemeSource这个具体实现类来提供通过properties配置文件对them...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:SpringMVC解析器
举报原因:
原因补充:

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