SpringMVC4零配置--Web上下文配置【MvcConfig】
与SpringSecurity的配置类似,spring同样为我们提供了一个实现类WebMvcConfigurationSupport和一个注解@EnableWebMvc以帮助我们减少bean的声明。
applicationContext-MvcConfig.xml
- <!-- 启用注解,并定义组件查找规则 ,mvc层只负责扫描@Controller -->
- <context:component-scan base-package="web.function"
- use-default-filters="false">
- <context:include-filter type="annotation"
- expression="org.springframework.stereotype.Controller" />
- </context:component-scan>
- <!-- 视图处理器 -->
- <bean id="viewResolver"
- class="org.springframework.web.servlet.view.InternalResourceViewResolver">
- <property name="prefix" value="/WEB-INF/views/jsp/function/" />
- <property name="suffix" value=".jsp" />
- </bean>
- <!-- 定义国际化资源文件查找规则 ,各种messages.properties -->
- <bean id="messageSource"
- class="org.springframework.context.support.ResourceBundleMessageSource"
- p:basename="config.messages.messages">
- </bean>
- <!-- servlet适配器,这里必须明确声明,因为spring默认没有初始化该适配器 -->
- <bean id="servletHandlerAdapter"
- class="org.springframework.web.servlet.handler.SimpleServletHandlerAdapter" />
- <!-- 定义文件上传处理器 -->
- <bean id="multipartResolver"
- class="org.springframework.web.multipart.commons.CommonsMultipartResolver"
- p:defaultEncoding="UTF-8" />
- <!-- 异常处理器 -->
- <bean id="exceptionResolver" class="web.core.CP_SimpleMappingExceptionResolver">
- <property name="defaultErrorView" value="common_error" />
- <property name="exceptionAttribute" value="exception" />
- <property name="exceptionMappings">
- <props>
- <prop key="java.lang.RuntimeException">common_error</prop>
- </props>
- </property>
- </bean>
- <!-- 定义公共参数初始化拦截器 -->
- <bean id="initInterceptor" class="web.core.CP_InitializingInterceptor" />
- <!-- 本地化资源处理器 -->
- <bean id="localeResolver"
- class="org.springframework.web.servlet.i18n.CookieLocaleResolver" />
- <!-- 定义本地化变更拦截器 -->
- <bean id="localeChangeInterceptor"
- class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor" />
- <!-- 请求拦截器,每一个用户请求都会被拦截 -->
- <mvc:interceptors>
- <ref bean="localeChangeInterceptor" />
- <ref bean="initInterceptor" />
- </mvc:interceptors>
- <!-- 定义注解驱动Controller方法处理适配器 ,注:该适配器必须声明在<mvc:annotation-driven />之前,否则不能正常处理参数类型的转换 -->
- <bean
- class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
- <property name="webBindingInitializer">
- <bean class="web.core.CP_PropertyEditorRegistrar">
- <property name="format" value="yyyy-MM-dd"></property>
- </bean>
- </property>
- <property name="messageConverters">
- <list>
- <bean
- class="org.springframework.http.converter.xml.Jaxb2RootElementHttpMessageConverter" />
- <bean
- class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter" />
- </list>
- </property>
- </bean>
- <!-- 会自动注册RequestMappingHandlerMapping与RequestMappingHandlerAdapter
- 两个bean,是spring MVC为@Controllers分发请求所必须的。 并提供了:数据绑定支持,@NumberFormatannotation支持,@DateTimeFormat支持,@Valid支持,读写XML的支持(JAXB),读写JSON的支持(Jackson) -->
- <mvc:annotation-driven />
- <!-- 资源访问处理器 -->
- <mvc:resources mapping="/static/**" location="/WEB-INF/static/" />
MvcConfig.java
- @Configuration
- @EnableWebMvc
- @ComponentScan(basePackages = "web.function", useDefaultFilters = false, includeFilters = {
- @ComponentScan.Filter(type = FilterType.ANNOTATION, value = {Controller.class})
- })
- public class MvcConfig extends WebMvcConfigurationSupport {
- private static final Logger logger = Logger
- .getLogger(MvcConfig.class);
- /**
- * 描述 : <注册试图处理器>. <br>
- *<p>
- <使用方法说明>
- </p>
- * @return
- */
- @Bean
- public ViewResolver viewResolver() {
- logger.info("ViewResolver");
- InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
- viewResolver.setPrefix("/WEB-INF/views/jsp/function/");
- viewResolver.setSuffix(".jsp");
- return viewResolver;
- }
- /**
- * 描述 : <注册消息资源处理器>. <br>
- *<p>
- <使用方法说明>
- </p>
- * @return
- */
- @Bean
- public MessageSource messageSource() {
- logger.info("MessageSource");
- ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
- messageSource.setBasename("config.messages.messages");
- return messageSource;
- }
- /**
- * 描述 : <注册servlet适配器>. <br>
- *<p>
- <只需要在自定义的servlet上用@Controller("映射路径")标注即可>
- </p>
- * @return
- */
- @Bean
- public HandlerAdapter servletHandlerAdapter(){
- logger.info("HandlerAdapter");
- return new SimpleServletHandlerAdapter();
- }
- /**
- * 描述 : <本地化拦截器>. <br>
- *<p>
- <使用方法说明>
- </p>
- * @return
- */
- @Bean
- public LocaleChangeInterceptor localeChangeInterceptor(){
- logger.info("LocaleChangeInterceptor");
- return new LocaleChangeInterceptor();
- }
- /**
- * 描述 : <基于cookie的本地化资源处理器>. <br>
- *<p>
- <使用方法说明>
- </p>
- * @return
- */
- @Bean(name="localeResolver")
- public CookieLocaleResolver cookieLocaleResolver(){
- logger.info("CookieLocaleResolver");
- return new CookieLocaleResolver();
- }
- /**
- * 描述 : <注册自定义拦截器>. <br>
- *<p>
- <使用方法说明>
- </p>
- * @return
- */
- @Bean
- public CP_InitializingInterceptor initializingInterceptor(){
- logger.info("CP_InitializingInterceptor");
- return new CP_InitializingInterceptor();
- }
- /**
- * 描述 : <RequestMappingHandlerMapping需要显示声明,否则不能注册自定义的拦截器>. <br>
- *<p>
- <这个比较奇怪,理论上应该是不需要的>
- </p>
- * @return
- */
- @Bean
- public RequestMappingHandlerMapping requestMappingHandlerMapping() {
- logger.info("RequestMappingHandlerMapping");
- return super.requestMappingHandlerMapping();
- }
- /**
- * 描述 : <添加拦截器>. <br>
- *<p>
- <使用方法说明>
- </p>
- * @param registry
- */
- @Override
- protected void addInterceptors(InterceptorRegistry registry) {
- // TODO Auto-generated method stub
- logger.info("addInterceptors start");
- registry.addInterceptor(localeChangeInterceptor());
- registry.addInterceptor(initializingInterceptor());
- logger.info("addInterceptors end");
- }
- /**
- * 描述 : <HandlerMapping需要显示声明,否则不能注册资源访问处理器>. <br>
- *<p>
- <这个比较奇怪,理论上应该是不需要的>
- </p>
- * @return
- */
- @Bean
- public HandlerMapping resourceHandlerMapping() {
- logger.info("HandlerMapping");
- return super.resourceHandlerMapping();
- }
- /**
- * 描述 : <资源访问处理器>. <br>
- *<p>
- <可以在jsp中使用/static/**的方式访问/WEB-INF/static/下的内容>
- </p>
- * @param registry
- */
- @Override
- protected void addResourceHandlers(ResourceHandlerRegistry registry) {
- logger.info("addResourceHandlers");
- registry.addResourceHandler("/static/**").addResourceLocations("/WEB-INF/static/");
- }
- /**
- * 描述 : <文件上传处理器>. <br>
- *<p>
- <使用方法说明>
- </p>
- * @return
- */
- @Bean(name="multipartResolver")
- public CommonsMultipartResolver commonsMultipartResolver(){
- logger.info("CommonsMultipartResolver");
- return new CommonsMultipartResolver();
- }
- /**
- * 描述 : <异常处理器>. <br>
- *<p>
- <系统运行时遇到指定的异常将会跳转到指定的页面>
- </p>
- * @return
- */
- @Bean(name="exceptionResolver")
- public CP_SimpleMappingExceptionResolver simpleMappingExceptionResolver(){
- logger.info("CP_SimpleMappingExceptionResolver");
- CP_SimpleMappingExceptionResolver simpleMappingExceptionResolver= new CP_SimpleMappingExceptionResolver();
- simpleMappingExceptionResolver.setDefaultErrorView("common_error");
- simpleMappingExceptionResolver.setExceptionAttribute("exception");
- Properties properties = new Properties();
- properties.setProperty("java.lang.RuntimeException", "common_error");
- simpleMappingExceptionResolver.setExceptionMappings(properties);
- return simpleMappingExceptionResolver;
- }
- /**
- * 描述 : <RequestMappingHandlerAdapter需要显示声明,否则不能注册通用属性编辑器>. <br>
- *<p>
- <这个比较奇怪,理论上应该是不需要的>
- </p>
- * @return
- */
- @Bean
- public RequestMappingHandlerAdapter requestMappingHandlerAdapter() {
- logger.info("RequestMappingHandlerAdapter");
- return super.requestMappingHandlerAdapter();
- }
- /**
- * 描述 : <注册通用属性编辑器>. <br>
- *<p>
- <这里只增加了字符串转日期和字符串两边去空格的处理>
- </p>
- * @return
- */
- @Override
- protected ConfigurableWebBindingInitializer getConfigurableWebBindingInitializer() {
- logger.info("ConfigurableWebBindingInitializer");
- ConfigurableWebBindingInitializer initializer = super.getConfigurableWebBindingInitializer();
- CP_PropertyEditorRegistrar register = new CP_PropertyEditorRegistrar();
- register.setFormat("yyyy-MM-dd");
- initializer.setPropertyEditorRegistrar(register);
- return initializer;
- }
- }
SpringMVC4零配置 :代码下载
SpringMVC4零配置--web.xml
SpringMVC4零配置--应用上下文配置【AppConfig】
SpringMVC4零配置--SpringSecurity相关配置【SpringSecurityConfig】
SpringMVC4零配置--Web上下文配置【MvcConfig】
SpringMVC4零配置--Web上下文配置【MvcConfig】的更多相关文章
- Web上下文配置【MvcConfig】
基于Servlet3.0规范和SpringMVC4注解式配置方式,实现零xml配置,弄了个小demo,供交流讨论. 项目说明如下: 1.db.sql是项目中用到的表,数据库使用的是oracle11g ...
- SpringMVC4零配置--web.xml
servlet3.0+规范后,允许servlet,filter,listener不必声明在web.xml中,而是以硬编码的方式存在,实现容器的零配置. ServletContainerInitiali ...
- java web.xml配置详解
1.启动一个WEB项目的时候,WEB容器会去读取它的配置文件web.xml,读取<listener>和<context-param>两个结点. 2.紧急着,容创建一个Servl ...
- web.xml 配置介绍
这个不是原创,有点早了,具体从哪里来的已经记不得了.但是东西是实实在在的. 1.启动一个WEB项目的时候,WEB容器会去读取它的配置文件web.xml,读取<listener>和<c ...
- 160329(二)、web.xml配置详解
1.启动一个WEB项目的时候,WEB容器会去读取它的配置文件web.xml,读取<listener>和<context-param>两个结点. 2.紧急着,容创建一个Servl ...
- Java Web学习总结(19)——web.xml配置详解
1.启动一个WEB项目的时候,WEB容器会去读取它的配置文件web.xml,读取<listener>和<context-param>两个结点. 2.紧急着,容创建一个Servl ...
- Maven系列--web.xml 配置详解
一 .web.xml介绍 启动一个WEB项目的时候,WEB容器会去读取它的配置文件web.xml,读取<listener>和<context-param>两个结点. 紧接着,容 ...
- Asp.net Web.Config - 配置元素 caching
Asp.net Web.Config - 配置元素 caching 记得之前在写缓存DEMO的时候,好像配置过这个元素,好像这个元素还有点常用. 一.caching元素列表 元素 说明 cache ...
- Spring MVC的web.xml配置详解(转)
出处http://blog.csdn.net/u010796790 1.spring 框架解决字符串编码问题:过滤器 CharacterEncodingFilter(filter-name) 2.在w ...
随机推荐
- CSS 垂直居中。
1,display: table; display: table-cell <div style="border:solid red 1px ;height:200px;width:2 ...
- 【STL】-auto_ptr的用法
初始化: #include<memory> //auto_ptr header void f() { auto_ptr<classA> ptr(new classA); } 拷 ...
- C++-Effective C++ Items
Item2:尽量以const,enum,inline替换#define 原因:1, #define ASPECT_RATIO 1.63 编译错误时产生魔数,应以const double Aspect_ ...
- C# 轉義字符
转义字符 意义 ASCII码值(十进制) \a 响铃(BEL) 007 \b 退格(BS) ,将当前位置移到前一列 008 \f 换页(FF),将当前位置移到下页开头 012 \n 换行(LF) ,将 ...
- virtualbox安装提示出现严重错误解决办法
解决办法: 在服务里面启动1. Device Install Service2. Device Setup Manager 这两个服务就好了.也有可能只需要启动第一个.
- 关于Integer缓冲
默认的时候,-128--127范围内的数会被缓冲 但是jvm启动的时候可以修改启动参数-Djava.lang.Integer.IntegerCache.high=2000 来修改上限,但是下限是不可以 ...
- Helloworld程序的创建以及配置文件的讲解
创建项目. create Project 选择创建的Project类别以及使用的SDK,可能SDK需要配置或者修改配置. 这个页面是问你是否使用模板创建. Command Line App 会自动创建 ...
- 超级链接a+ confirm用法
示例: <a href="DelServlet?action=${fuwa.id}" onClick="return confirm('你确定要删除?')" ...
- ASP.NET之Ajax系列(二)
在上一次的Ajax操作中,我们使用了ASP.NET原生控件实现,但是弊端很多,效率低下,而且有个文件上传的BUG:http://blog.csdn.net/zhaoqiliang527/article ...
- Angularjs相关理论
1.AngularJS的工作流程: (1)浏览器载入HTML,然后把它解析成DOM (2)浏览器载入angularjs脚本 (3)AngularJS等到DOMContentLoaded事件触发 (4) ...