关闭

SpringMVC解析器

标签: spring mvcservletspringresolver解析器
1505人阅读 评论(0) 收藏 举报
分类:

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

1
0
查看评论

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

首先来了解什么是multipart/form-data请求: 根据http/1.1 rfc 2616的协议规定,我们的请求方式只有OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE等,那为为何我们还会有multipart/form-data请求之说呢? 这就要从头来说了。 ...
  • sb___itfk
  • sb___itfk
  • 2015-05-20 15:06
  • 3205

springMVC-主题

使用springMVC完成多主题切换功能 1.springMVC.xml <bean id="themeChangeInterceptor" class="org.springframework.web.servlet.theme.ThemeChang...
  • hao114500043
  • hao114500043
  • 2016-08-02 14:24
  • 596

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

在上一篇博客springMVC源码分析--动态样式ThemeResolver(一)中我们介绍了多样式ThemeResolver的使用方法,接下来我们对源码进行简单的分析一下。ThemeResolver的体系结构如下:1、接口ThemeResolver中定义的接口是比较简单的,提供两个接口:(1)re...
  • qq924862077
  • qq924862077
  • 2016-12-06 14:04
  • 1320

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

Spring MVC中通过ThemeSource接口来提供对动态更换样式的支持,并提供了ResourceBundleThemeSource这个具体实现类来提供通过properties配置文件对theme中的样式的配置 例如配置文件中 内容为 helloworld=theme/default...
  • qq924862077
  • qq924862077
  • 2016-12-05 19:15
  • 1128

springMVC主题的使用

在实际开发中,经常会碰到这样一个问题,客户要求更换版面风格。不一定是美工做的不好,也有可能是客户的视觉疲劳。所 已在项目的开始阶段,最好就要考虑这些灵活的需求变化。 这个在网站程序中称为:主题(theme) 主题的实现原理:大概就是把网站版面的css样式表和图片之类的文件,和网站的程序进行解耦...
  • wutbiao
  • wutbiao
  • 2012-04-11 16:39
  • 7437

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

前言    当我们对SpringMVC控制的资源发起请求时,这些请求都会被SpringMVC的DispatcherServlet处理,接着Spring会分析看哪一个HandlerMapping定义的所有请求映射中存在对该请求的最合理的映射。然后通过该HandlerMa...
  • zmx729618
  • zmx729618
  • 2016-06-01 11:40
  • 4888

springmvc+jsp/html 前后台交互(一):配置多视图解析器

最近做一个小项目(移动端),自己搭了个简单的SSM框架(spring + spring MVC + Mybitis),展示层本来选用的是jsp,各方便都已经搭建好,结果发现有些页面需要用到H5的一些功能,所以展示层需要用到Html,而自己又比较熟悉jsp,所以决定使用多视图解析器。本篇先来介绍框架内...
  • banjing_1993
  • banjing_1993
  • 2017-09-14 16:04
  • 2330

基于springmvc的文件上传及其讲解

支持和原理解析 Springmvc对文件上传的支持,springmvc内部已经实现了客户端上传文件到服务端我们只需要按照自己的需求去配置即可, 通过在springmvc的核心配置文件中配置支持文件上传的实体类即可 跟源码可以发现commonsMulitpartResolver 类继承...
  • u013239236
  • u013239236
  • 2015-07-05 15:07
  • 4595

Springmvc视图解析器(一)resolver解析器和view视图 【Springmvc】

参考:https://www.ibm.com/developerworks/cn/java/j-lo-springview/ 一、Springmvc视图和解析简介 Spring视图和视图解析器是Springmvc中的重要概念。如下是springmvc对于一个web请求的一个过程。 ...
  • Mooner_guo
  • Mooner_guo
  • 2015-11-01 11:23
  • 1586

SpringMVC预处理方法参数HandlerMethodArgumentResolver类

在springmvc框架开发中,想要在方法中自动注入一些参数,该怎么做呢? 正好有这么个需求,在json请求过来的时候,想在Controller方法里自动获取json并转换为指定的Bean。 那么就需要用到HandlerMethodArgumentResolver类,这个类可以解析方法中的参数,...
  • xsgnzb
  • xsgnzb
  • 2017-05-10 17:24
  • 574
    个人资料
    • 访问:203234次
    • 积分:3178
    • 等级:
    • 排名:第12812名
    • 原创:118篇
    • 转载:53篇
    • 译文:2篇
    • 评论:11条
    最新评论