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

applicationContext-MvcConfig.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

  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】

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

  1. Web上下文配置【MvcConfig】

    基于Servlet3.0规范和SpringMVC4注解式配置方式,实现零xml配置,弄了个小demo,供交流讨论. 项目说明如下: 1.db.sql是项目中用到的表,数据库使用的是oracle11g ...

  2. SpringMVC4零配置--web.xml

    servlet3.0+规范后,允许servlet,filter,listener不必声明在web.xml中,而是以硬编码的方式存在,实现容器的零配置. ServletContainerInitiali ...

  3. java web.xml配置详解

    1.启动一个WEB项目的时候,WEB容器会去读取它的配置文件web.xml,读取<listener>和<context-param>两个结点. 2.紧急着,容创建一个Servl ...

  4. web.xml 配置介绍

    这个不是原创,有点早了,具体从哪里来的已经记不得了.但是东西是实实在在的. 1.启动一个WEB项目的时候,WEB容器会去读取它的配置文件web.xml,读取<listener>和<c ...

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

    1.启动一个WEB项目的时候,WEB容器会去读取它的配置文件web.xml,读取<listener>和<context-param>两个结点. 2.紧急着,容创建一个Servl ...

  6. Java Web学习总结(19)——web.xml配置详解

    1.启动一个WEB项目的时候,WEB容器会去读取它的配置文件web.xml,读取<listener>和<context-param>两个结点. 2.紧急着,容创建一个Servl ...

  7. Maven系列--web.xml 配置详解

    一 .web.xml介绍 启动一个WEB项目的时候,WEB容器会去读取它的配置文件web.xml,读取<listener>和<context-param>两个结点. 紧接着,容 ...

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

    Asp.net Web.Config - 配置元素 caching 记得之前在写缓存DEMO的时候,好像配置过这个元素,好像这个元素还有点常用. 一.caching元素列表   元素 说明 cache ...

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

    出处http://blog.csdn.net/u010796790 1.spring 框架解决字符串编码问题:过滤器 CharacterEncodingFilter(filter-name) 2.在w ...

随机推荐

  1. Windows7下U盘安装Ubuntu14.04双系统

    1.准备工作 (1)下载Ubuntu14.04系统镜像文件,Ultraiso,EasyBcd,分区助手 Ubuntu14.04地址:http://www.ubuntu.com/download/des ...

  2. IT公司100题-15-求二元查找树的镜像

    问题描述: 输入一颗二元查找树,将该树转换为它的镜像树,即对每一个节点,互换左右子树.   例如输入:   6/    \4     12/ \   /   \2  5 8   16 输出:   6/ ...

  3. 怎么用navicat自动备份mysql数据库

    打开navicat客户端,连上mysql后,双击左边你想要备份的数据库.点击“计划”,再点击“新建批处理作业”.   双击上面的可用任务,它就会到下面的列表里去,代表你选择了这个任务.   点击保存, ...

  4. hdu 1035 (usage of sentinel, proper utilization of switch and goto to make code neat) 分类: hdoj 2015-06-16 12:33 28人阅读 评论(0) 收藏

    as Scott Meyers said in his book Effective STL, "My advice on choosing among the sorting algori ...

  5. Cisco IOS Software Activation Command Reference

    clear license agent : to clear license agent statistics counters or connection statistics (in privil ...

  6. VS2013项目配置directx11

    假定你已经安装好了direct11 SDK(官方下的既是最新版本)和VS2013,并在VS2013中建立了一个新工程. 用VS2013打开工程后,点击右键属性,选择VC++目录: 其中在包含目录中添加 ...

  7. Matlab:max函数

    Matlab中max函数在矩阵中求函数大小的实例如下: C = max(A)返回一个数组各不同维中的最大元素.如果A是一个向量,max(A)返回A中的最大元素.如果A是一个矩阵,max(A)将A的每一 ...

  8. MongoDB error: couldn't connect to server 127.0.0.1:27017 src/mongo/shell/mongo.js(转)

    rror: couldn't connect to server 127.0.0.1:27017 src/mongo/shell/mongo.js 一般这种情况就是:自己指定的数据库,所以不能.自动加 ...

  9. 2014年3月份第1周51Aspx源码发布详情

    Graphics创建饼图示例源码  2014-3-7 [VS2010]源码描述:这个程序是一个在c#中使用图形类用来创建饼图,此程序是用Graphics 类的DrawPie() 和 FillPie() ...

  10. Thread启动方式一(Thread.start):源码分析

    package day11; class TestDemo extends Thread{ int count = 0; /*public void add(){ while(count<100 ...