SpringMVC4零配置--Web上下文配置【MvcConfig】

与SpringSecurity的配置类似,spring同样为我们提供了一个实现类WebMvcConfigurationSupport和一个注解@EnableWebMvc以帮助我们减少bean的声明。

applicationContext-MvcConfig.xml

Xml代码  

  1. <!-- 启用注解,并定义组件查找规则 ,mvc层只负责扫描@Controller -->
  2. <context:component-scan base-package="web.function"
  3. use-default-filters="false">
  4. <context:include-filter type="annotation"
  5. expression="org.springframework.stereotype.Controller" />
  6. </context:component-scan>
  7. <!-- 视图处理器 -->
  8. <bean id="viewResolver"
  9. class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  10. <property name="prefix" value="/WEB-INF/views/jsp/function/" />
  11. <property name="suffix" value=".jsp" />
  12. </bean>
  13. <!-- 定义国际化资源文件查找规则 ,各种messages.properties -->
  14. <bean id="messageSource"
  15. class="org.springframework.context.support.ResourceBundleMessageSource"
  16. p:basename="config.messages.messages">
  17. </bean>
  18. <!-- servlet适配器,这里必须明确声明,因为spring默认没有初始化该适配器 -->
  19. <bean id="servletHandlerAdapter"
  20. class="org.springframework.web.servlet.handler.SimpleServletHandlerAdapter" />
  21. <!-- 定义文件上传处理器 -->
  22. <bean id="multipartResolver"
  23. class="org.springframework.web.multipart.commons.CommonsMultipartResolver"
  24. p:defaultEncoding="UTF-8" />
  25. <!-- 异常处理器 -->
  26. <bean id="exceptionResolver" class="web.core.CP_SimpleMappingExceptionResolver">
  27. <property name="defaultErrorView" value="common_error" />
  28. <property name="exceptionAttribute" value="exception" />
  29. <property name="exceptionMappings">
  30. <props>
  31. <prop key="java.lang.RuntimeException">common_error</prop>
  32. </props>
  33. </property>
  34. </bean>
  35. <!-- 定义公共参数初始化拦截器 -->
  36. <bean id="initInterceptor" class="web.core.CP_InitializingInterceptor" />
  37. <!-- 本地化资源处理器 -->
  38. <bean id="localeResolver"
  39. class="org.springframework.web.servlet.i18n.CookieLocaleResolver" />
  40. <!-- 定义本地化变更拦截器 -->
  41. <bean id="localeChangeInterceptor"
  42. class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor" />
  43. <!-- 请求拦截器,每一个用户请求都会被拦截 -->
  44. <mvc:interceptors>
  45. <ref bean="localeChangeInterceptor" />
  46. <ref bean="initInterceptor" />
  47. </mvc:interceptors>
  48. <!-- 定义注解驱动Controller方法处理适配器 ,注:该适配器必须声明在<mvc:annotation-driven />之前,否则不能正常处理参数类型的转换 -->
  49. <bean
  50. class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
  51. <property name="webBindingInitializer">
  52. <bean class="web.core.CP_PropertyEditorRegistrar">
  53. <property name="format" value="yyyy-MM-dd"></property>
  54. </bean>
  55. </property>
  56. <property name="messageConverters">
  57. <list>
  58. <bean
  59. class="org.springframework.http.converter.xml.Jaxb2RootElementHttpMessageConverter" />
  60. <bean
  61. class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter" />
  62. </list>
  63. </property>
  64. </bean>
  65. <!-- 会自动注册RequestMappingHandlerMapping与RequestMappingHandlerAdapter
  66. 两个bean,是spring MVC为@Controllers分发请求所必须的。 并提供了:数据绑定支持,@NumberFormatannotation支持,@DateTimeFormat支持,@Valid支持,读写XML的支持(JAXB),读写JSON的支持(Jackson) -->
  67. <mvc:annotation-driven />
  68. <!-- 资源访问处理器 -->
  69. <mvc:resources mapping="/static/**" location="/WEB-INF/static/" />

 MvcConfig.java

Java代码  

  1. @Configuration
  2. @EnableWebMvc
  3. @ComponentScan(basePackages = "web.function", useDefaultFilters = false, includeFilters = {
  4. @ComponentScan.Filter(type = FilterType.ANNOTATION, value = {Controller.class})
  5. })
  6. public class MvcConfig extends WebMvcConfigurationSupport {
  7. private static final Logger logger = Logger
  8. .getLogger(MvcConfig.class);
  9. /**
  10. * 描述 : <注册试图处理器>. <br>
  11. *<p>
  12. <使用方法说明>
  13. </p>
  14. * @return
  15. */
  16. @Bean
  17. public ViewResolver viewResolver() {
  18. logger.info("ViewResolver");
  19. InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
  20. viewResolver.setPrefix("/WEB-INF/views/jsp/function/");
  21. viewResolver.setSuffix(".jsp");
  22. return viewResolver;
  23. }
  24. /**
  25. * 描述 : <注册消息资源处理器>. <br>
  26. *<p>
  27. <使用方法说明>
  28. </p>
  29. * @return
  30. */
  31. @Bean
  32. public MessageSource messageSource() {
  33. logger.info("MessageSource");
  34. ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
  35. messageSource.setBasename("config.messages.messages");
  36. return messageSource;
  37. }
  38. /**
  39. * 描述 : <注册servlet适配器>. <br>
  40. *<p>
  41. <只需要在自定义的servlet上用@Controller("映射路径")标注即可>
  42. </p>
  43. * @return
  44. */
  45. @Bean
  46. public HandlerAdapter servletHandlerAdapter(){
  47. logger.info("HandlerAdapter");
  48. return new SimpleServletHandlerAdapter();
  49. }
  50. /**
  51. * 描述 : <本地化拦截器>. <br>
  52. *<p>
  53. <使用方法说明>
  54. </p>
  55. * @return
  56. */
  57. @Bean
  58. public LocaleChangeInterceptor localeChangeInterceptor(){
  59. logger.info("LocaleChangeInterceptor");
  60. return new LocaleChangeInterceptor();
  61. }
  62. /**
  63. * 描述 : <基于cookie的本地化资源处理器>. <br>
  64. *<p>
  65. <使用方法说明>
  66. </p>
  67. * @return
  68. */
  69. @Bean(name="localeResolver")
  70. public CookieLocaleResolver cookieLocaleResolver(){
  71. logger.info("CookieLocaleResolver");
  72. return new CookieLocaleResolver();
  73. }
  74. /**
  75. * 描述 : <注册自定义拦截器>. <br>
  76. *<p>
  77. <使用方法说明>
  78. </p>
  79. * @return
  80. */
  81. @Bean
  82. public CP_InitializingInterceptor initializingInterceptor(){
  83. logger.info("CP_InitializingInterceptor");
  84. return new CP_InitializingInterceptor();
  85. }
  86. /**
  87. * 描述 : <RequestMappingHandlerMapping需要显示声明,否则不能注册自定义的拦截器>. <br>
  88. *<p>
  89. <这个比较奇怪,理论上应该是不需要的>
  90. </p>
  91. * @return
  92. */
  93. @Bean
  94. public RequestMappingHandlerMapping requestMappingHandlerMapping() {
  95. logger.info("RequestMappingHandlerMapping");
  96. return super.requestMappingHandlerMapping();
  97. }
  98. /**
  99. * 描述 : <添加拦截器>. <br>
  100. *<p>
  101. <使用方法说明>
  102. </p>
  103. * @param registry
  104. */
  105. @Override
  106. protected void addInterceptors(InterceptorRegistry registry) {
  107. // TODO Auto-generated method stub
  108. logger.info("addInterceptors start");
  109. registry.addInterceptor(localeChangeInterceptor());
  110. registry.addInterceptor(initializingInterceptor());
  111. logger.info("addInterceptors end");
  112. }
  113. /**
  114. * 描述 : <HandlerMapping需要显示声明,否则不能注册资源访问处理器>. <br>
  115. *<p>
  116. <这个比较奇怪,理论上应该是不需要的>
  117. </p>
  118. * @return
  119. */
  120. @Bean
  121. public HandlerMapping resourceHandlerMapping() {
  122. logger.info("HandlerMapping");
  123. return super.resourceHandlerMapping();
  124. }
  125. /**
  126. * 描述 : <资源访问处理器>. <br>
  127. *<p>
  128. <可以在jsp中使用/static/**的方式访问/WEB-INF/static/下的内容>
  129. </p>
  130. * @param registry
  131. */
  132. @Override
  133. protected void addResourceHandlers(ResourceHandlerRegistry registry) {
  134. logger.info("addResourceHandlers");
  135. registry.addResourceHandler("/static/**").addResourceLocations("/WEB-INF/static/");
  136. }
  137. /**
  138. * 描述 : <文件上传处理器>. <br>
  139. *<p>
  140. <使用方法说明>
  141. </p>
  142. * @return
  143. */
  144. @Bean(name="multipartResolver")
  145. public CommonsMultipartResolver commonsMultipartResolver(){
  146. logger.info("CommonsMultipartResolver");
  147. return new CommonsMultipartResolver();
  148. }
  149. /**
  150. * 描述 : <异常处理器>. <br>
  151. *<p>
  152. <系统运行时遇到指定的异常将会跳转到指定的页面>
  153. </p>
  154. * @return
  155. */
  156. @Bean(name="exceptionResolver")
  157. public CP_SimpleMappingExceptionResolver simpleMappingExceptionResolver(){
  158. logger.info("CP_SimpleMappingExceptionResolver");
  159. CP_SimpleMappingExceptionResolver simpleMappingExceptionResolver= new CP_SimpleMappingExceptionResolver();
  160. simpleMappingExceptionResolver.setDefaultErrorView("common_error");
  161. simpleMappingExceptionResolver.setExceptionAttribute("exception");
  162. Properties properties = new Properties();
  163. properties.setProperty("java.lang.RuntimeException", "common_error");
  164. simpleMappingExceptionResolver.setExceptionMappings(properties);
  165. return simpleMappingExceptionResolver;
  166. }
  167. /**
  168. * 描述 : <RequestMappingHandlerAdapter需要显示声明,否则不能注册通用属性编辑器>. <br>
  169. *<p>
  170. <这个比较奇怪,理论上应该是不需要的>
  171. </p>
  172. * @return
  173. */
  174. @Bean
  175. public RequestMappingHandlerAdapter requestMappingHandlerAdapter() {
  176. logger.info("RequestMappingHandlerAdapter");
  177. return super.requestMappingHandlerAdapter();
  178. }
  179. /**
  180. * 描述 : <注册通用属性编辑器>. <br>
  181. *<p>
  182. <这里只增加了字符串转日期和字符串两边去空格的处理>
  183. </p>
  184. * @return
  185. */
  186. @Override
  187. protected ConfigurableWebBindingInitializer getConfigurableWebBindingInitializer() {
  188. logger.info("ConfigurableWebBindingInitializer");
  189. ConfigurableWebBindingInitializer initializer = super.getConfigurableWebBindingInitializer();
  190. CP_PropertyEditorRegistrar register = new CP_PropertyEditorRegistrar();
  191. register.setFormat("yyyy-MM-dd");
  192. initializer.setPropertyEditorRegistrar(register);
  193. return initializer;
  194. }
  195. }

SpringMVC4零配置 :代码下载

SpringMVC4零配置--web.xml

SpringMVC4零配置--应用上下文配置【AppConfig】

SpringMVC4零配置--SpringSecurity相关配置【SpringSecurityConfig】

SpringMVC4零配置--Web上下文配置【MvcConfig】

时间: 2024-11-13 16:20:31

SpringMVC4零配置--Web上下文配置【MvcConfig】的相关文章

Web上下文配置【MvcConfig】

基于Servlet3.0规范和SpringMVC4注解式配置方式,实现零xml配置,弄了个小demo,供交流讨论. 项目说明如下: 1.db.sql是项目中用到的表,数据库使用的是oracle11g 2.该项目使用mvn进行管理,私服为自搭建nexus,项目只用到一个第三方 jar,就是oracle的驱动: 3.默认项目为零配置启动,如果需要更改启动方式,请作如下操作: <1.使用xml风格测试时,需要先将/src/main/java/web/config下的全部类移动到项目外,并开启web.x

SpringMVC4零配置--web.xml

servlet3.0+规范后,允许servlet,filter,listener不必声明在web.xml中,而是以硬编码的方式存在,实现容器的零配置. ServletContainerInitializer:启动容器时负责加载相关配置 Java代码   package javax.servlet; import java.util.Set; public interface ServletContainerInitializer { public void onStartup(Set<Class

SpringMVC4零配置

这里对SpringMVC零配置做一个简单的说明 spring4中提供了大量的注解来支持零配置,简要说明如下: @Configuration : 类似于spring配置文件,负责注册bean,对应的提供了@Bean注解.需要org.springframework.web.context.support.AnnotationConfigWebApplicationContext注册到容器中. @ComponentScan : 注解类查找规则定义 <context:component-scan/>

java web.xml配置详解

1.启动一个WEB项目的时候,WEB容器会去读取它的配置文件web.xml,读取<listener>和<context-param>两个结点. 2.紧急着,容创建一个ServletContext(servlet上下文),这个web项目的所有部分都将共享这个上下文. 3.容器将<context-param>转换为键值对,并交给servletContext. 4.容器创建<listener>中的类实例,创建监听器. 二  Load-on-startup Load

160329(二)、web.xml配置详解

1.启动一个WEB项目的时候,WEB容器会去读取它的配置文件web.xml,读取<listener>和<context-param>两个结点. 2.紧急着,容创建一个ServletContext(servlet上下文),这个web项目的所有部分都将共享这个上下文. 3.容器将<context-param>转换为键值对,并交给servletContext. 4.容器创建<listener>中的类实例,创建监听器. 二  Load-on-startup Load

web.xml 配置介绍

这个不是原创,有点早了,具体从哪里来的已经记不得了.但是东西是实实在在的. 1.启动一个WEB项目的时候,WEB容器会去读取它的配置文件web.xml,读取<listener>和<context-param>两个结点. 2.紧急着,容创建一个ServletContext(servlet上下文),这个web项目的所有部分都将共享这个上下文. 3.容器将<context-param>转换为键值对,并交给servletContext. 4.容器创建<listener&g

web.xml的配置中&lt;context-param&gt;配置作用

<context-param>的作用: web.xml的配置中<context-param>配置作用1. 启动一个WEB项目的时候,容器(如:Tomcat)会去读它的配置文件web.xml.读两个节点: <listener></listener> 和 <context-param></context-param> 2.紧接着,容器创建一个ServletContext(上下文),这个WEB项目所有部分都将共享这个上下文. 3.容器将&l

Spring MVC的web.xml配置详解(转)

出处http://blog.csdn.net/u010796790 1.spring 框架解决字符串编码问题:过滤器 CharacterEncodingFilter(filter-name) 2.在web.xml配置监听器ContextLoaderListener(listener-class) ContextLoaderListener的作用就是启动Web容器时,自动装配ApplicationContext的配置信息.因为它实现了ServletContextListener这个接口,在web.

Asp.net Web.Config - 配置元素 caching

记得之前在写缓存DEMO的时候,好像配置过这个元素,好像这个元素还有点常用. 一.caching元素列表 元素 说明 cache 定义全局应用程序缓存设置. 可选的元素. outputCache 指定应用程序范围的输出缓存设置. 可选的元素. outputCacheSettings 指定可以应用于应用程序中页的输出缓存设置. 可选的元素. sqlCacheDependency 为 ASP.NET 应用程序配置 SQL 缓存依赖项. 可选的元素. 1.cache 属性 特性 说明 disableM