与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. winform的comboBox使鼠标滑轮修改值失效

    目标: winform窗体很多combobox下拉框,当他们其中的一个获得焦点的时候,如果滚动鼠标就会改变下拉框的值,要实现让鼠标滚轮不对下拉框的值造成影响 如下代码直接拷贝粘贴,不用修改 方法一: ...

  2. 6.1.2Linux下Socket编程

    tcp简单实验 server.c #include <sys/types.h> /* See NOTES */ #include <sys/socket.h> #include ...

  3. JAVA中StringBuffer类常用方法详解

    String是不变类,用String修改字符串会新建一个String对象,如果频繁的修改,将会产生很多的String对象,开销很大.因此java提供了一个StringBuffer类,这个类在修改字符串 ...

  4. JDBC 连接池

    数据库连接池(connection pool) JDBC数据库连接池的必要性 在使用开发基于数据库的web程序时,传统的模式基本是按以下步骤: 在主程序(如servlet.beans)中建立数据库连接 ...

  5. Hibernate4 No Session found for current thread原因

    Hibernate4 与 spring3 集成之后, 如果在取得session 的地方使用了getCurrentSession, 可能会报一个错:“No Session found for curre ...

  6. java udp网络编程

    import java.net.*; /* 通过UDP传输发送文字数据 1.建立socket服务 2.提供数据,并封装到数据包中 3.通过sokect服务的发送功能,将数据包发送出去 4.关闭资源 * ...

  7. iOS开发之单例设计模式(完整正确版本)

    单例的意思从字面上就可以略知一二,所谓单例就是确保在程序运行过程中只创建一个对象实例.可以用于需要被多次广泛或者说多次使用的资源中,比如我们常见的网络请求类.工具类以及其它管理类等.比如我iOS开发中 ...

  8. redis——基础介绍

    转自:http://www.cnblogs.com/xing901022/p/4863929.html 1 什么是Redis Redis(REmote DIctionary Server,远程数据字典 ...

  9. iOS 7 教程:定制iOS 7中的导航栏和状态栏

    目录(?)[-] iOS 7中默认的导航栏 设置导航栏的背景颜色 在导航栏中使用背景图片 定制返回按钮的颜 修改导航栏标题的字体 修改导航栏标题为图片 添加多个按钮 修改状态栏的风格 隐藏状态栏 总结 ...

  10. TCP同步传送数据示例以及可能出现问题分析

    TCP传送数据可以分为同步传送和异步传送,首先这里使用了TCP的同步传送方式,学习了TCP同步传送数据的原理. 同步工作方式是指利用TCP编写的程序执行到监听或者接受数据语句的时候,在未完成当前工作( ...