SpringMVC的WebMvcConfigurerAdapter
来源:互联网 发布:windows libevent api 编辑:程序博客网 时间:2024/05/28 15:42
@EnableWebMvc
开启MVC配置,相当于
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd"> <mvc:annotation-driven/></beans>
Conversion and Formatting
配置convert和formatter的方法有两种,分别使用ConverterRegistry和FormatterRegistry
代码如下
使用注册工厂
package com.lf.web.config;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.context.annotation.Configuration;import org.springframework.core.convert.converter.Converter;import org.springframework.core.convert.converter.ConverterRegistry;import javax.annotation.PostConstruct;import java.util.Arrays;import java.util.List;/** * Created by LF on 2017/5/6. */@Configurationpublic class MyConverterRegistry { @Autowired private ConverterRegistry converterRegistry; @PostConstruct public void init() { converterRegistry.addConverter(new StringToListConvert()); } private static class StringToListConvert implements Converter<String, List<String>> { @Override public List<String> convert(String source) { if (source == null) { return Arrays.asList(); } else { String[] split = source.split(","); return Arrays.asList(split); } } }}
package com.lf.web.config;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.context.annotation.Configuration;import org.springframework.format.Formatter;import org.springframework.format.FormatterRegistry;import javax.annotation.PostConstruct;import java.text.ParseException;import java.util.List;import java.util.Locale;/** * Created by LF on 2017/5/6. */@Configurationpublic class MyFormatterRegistry { @Autowired private FormatterRegistry formatterRegistry; @PostConstruct public void init() { formatterRegistry.addFormatter(new StringDateFormatter()); } public static class StringDateFormatter implements Formatter<List> { //解析接口,根据Locale信息解析字符串到T类型的对象; @Override public List parse(String text, Locale locale) throws ParseException { return null; } //格式化显示接口,将T类型的对象根据Locale信息以某种格式进行打印显示(即返回字符串形式); @Override public String print(List object, Locale locale) { return "我是格式化的日期"; } }}
WebMvcConfigurerAdapter
package com.lf.web;import com.lf.web.convert.StringToListConvert;import com.lf.web.formatter.StringDateFormatter;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.ComponentScan;import org.springframework.context.annotation.Configuration;import org.springframework.format.FormatterRegistry;import org.springframework.web.servlet.ViewResolver;import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer;import org.springframework.web.servlet.config.annotation.EnableWebMvc;import org.springframework.web.servlet.config.annotation.ViewResolverRegistry;import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;import org.springframework.web.servlet.view.InternalResourceViewResolver;/** * Created by LF on 2017/5/4. */@Configuration@EnableWebMvc@ComponentScan//组件扫描public class WebConfig extends WebMvcConfigurerAdapter { @Override public void addFormatters(FormatterRegistry registry) { super.addFormatters(registry); registry.addFormatter(new StringDateFormatter()); registry.addConverter(new StringToListConvert()); } }
使用xml配置
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd"> <mvc:annotation-driven conversion-service="conversionService"/> <bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean"> <property name="converters"> <set> <bean class="com.lf.web.convert.StringToListConvert"/> </set> </property> <property name="formatters"> <set> <bean class="com.lf.web.formatter.StringDateFormatter"/> </set> </property> <property name="formatterRegistrars"> <set> <bean class="com.lf.web.formatter.StringDateFormatter"/> </set> </property> </bean></beans>
Interceptors
拦截器的实现
package com.lf.web;import org.springframework.web.servlet.ModelAndView;import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;/** * Created by LF on 2017/5/7. */public class MyHandlerInterceptor extends HandlerInterceptorAdapter { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println("===========HandlerInterceptor1 preHandle"); return super.preHandle(request, response, handler); } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { super.postHandle(request, response, handler, modelAndView); System.out.println("===========HandlerInterceptor1 postHandle"); } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { super.afterCompletion(request, response, handler, ex); System.out.println("===========HandlerInterceptor1 afterCompletion"); }}
xml配置
<bean id="handlerInterceptor1" class="com.lf.web.MyHandlerInterceptor"/> <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"> <property name="interceptors"> <list> <ref bean="handlerInterceptor1"/> <ref bean="handlerInterceptor2"/> </list> </property> </bean> <mvc:interceptors> <bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor"/> <mvc:interceptor> <mvc:mapping path="/**"/> <mvc:exclude-mapping path="/admin/**"/> <bean class="org.springframework.web.servlet.theme.ThemeChangeInterceptor"/> </mvc:interceptor> <mvc:interceptor> <mvc:mapping path="/secure/*"/> <bean class="org.example.SecurityInterceptor"/> </mvc:interceptor></mvc:interceptors>
使用Java配置
package com.lf.web;import com.lf.web.convert.StringToListConvert;import com.lf.web.formatter.StringDateFormatter;import com.lf.web.interceptor.MyHandlerInterceptor;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.ComponentScan;import org.springframework.context.annotation.Configuration;import org.springframework.format.FormatterRegistry;import org.springframework.web.servlet.ViewResolver;import org.springframework.web.servlet.config.annotation.*;import org.springframework.web.servlet.view.InternalResourceViewResolver;/** * Created by LF on 2017/5/4. */@Configuration@EnableWebMvc@ComponentScan//组件扫描public class WebConfig extends WebMvcConfigurerAdapter { @Override public void addInterceptors(InterceptorRegistry registry) { super.addInterceptors(registry); registry.addInterceptor(new MyHandlerInterceptor()).addPathPatterns("/").excludePathPatterns("/admin"); } }
configureContentNegotiation
ContentNegotiatingViewResolver是 ViewResolver 使用所请求的媒体类型的一个实现(基于文件类型扩展,输出格式URL参数指定类型或接受报头)来选择一个合适的视图一个请求。ContentNegotiatingViewResolver本身并不解决视图,只不表示为其他的 ViewResolver,您可以配置来处理特定的视图(XML,JSON,PDF,XLS,HTML,..)。
@Configuration@EnableWebMvc@ComponentScan//组件扫描public class WebConfig extends WebMvcConfigurerAdapter { @Override public void configureContentNegotiation(ContentNegotiationConfigurer configurer) { configurer.mediaType("json", MediaType.APPLICATION_JSON); } }
<mvc:annotation-driven content-negotiation-manager="contentNegotiationManager"/><bean id="contentNegotiationManager" class="org.springframework.web.accept.ContentNegotiationManagerFactoryBean"> <property name="mediaTypes"> <value> json=application/json xml=application/xml </value> </property></bean>
View
@Configuration@EnableWebMvcpublic class WebConfig extends WebMvcConfigurerAdapter { @Override public void addViewControllers(ViewControllerRegistry registry) { registry.addViewController("/").setViewName("home"); }}
<mvc:view-controller path="/" view-name="home"/>
View Resolvers
@Configuration@EnableWebMvcpublic class WebConfig extends WebMvcConfigurerAdapter { @Override public void configureViewResolvers(ViewResolverRegistry registry) { registry.enableContentNegotiation(new MappingJackson2JsonView()); registry.jsp(); }}
<mvc:view-resolvers> <mvc:content-negotiation> <mvc:default-views> <bean class="org.springframework.web.servlet.view.json.MappingJackson2JsonView"/> </mvc:default-views> </mvc:content-negotiation> <mvc:jsp/></mvc:view-resolvers>
Resources
@Configuration@EnableWebMvcpublic class WebConfig extends WebMvcConfigurerAdapter { @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/resources/**").addResourceLocations("/public-resources/"); }}
<mvc:resources mapping="/resources/**" location="/public-resources/"/>
@Configuration@EnableWebMvcpublic class WebConfig extends WebMvcConfigurerAdapter { @Override public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) { configurer.enable(); }}
<mvc:default-servlet-handler/>
@Configuration@EnableWebMvcpublic class WebConfig extends WebMvcConfigurerAdapter { @Override public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) { configurer.enable("myCustomDefaultServlet"); }}
Path Matching
@Configuration@EnableWebMvcpublic class WebConfig extends WebMvcConfigurerAdapter { @Override public void configurePathMatch(PathMatchConfigurer configurer) { configurer .setUseSuffixPatternMatch(true) .setUseTrailingSlashMatch(false) .setUseRegisteredSuffixPatternMatch(true) .setPathMatcher(antPathMatcher()) .setUrlPathHelper(urlPathHelper()); } @Bean public UrlPathHelper urlPathHelper() { //... } @Bean public PathMatcher antPathMatcher() { //... }}
Message Converters
@Configuration@EnableWebMvcpublic class WebConfiguration extends WebMvcConfigurerAdapter { @Override public void configureMessageConverters(List<HttpMessageConverter<?>> converters) { Jackson2ObjectMapperBuilder builder = new Jackson2ObjectMapperBuilder() .indentOutput(true) .dateFormat(new SimpleDateFormat("yyyy-MM-dd")) .modulesToInstall(new ParameterNamesModule()); converters.add(new MappingJackson2HttpMessageConverter(builder.build())); converters.add(new MappingJackson2XmlHttpMessageConverter(builder.xml().build())); }}
示例代码
http://git.oschina.net/null_064_8008/SpringLearning/tree/master/MyWebMvcConfigurerAdapter?dir=1&filepath=MyWebMvcConfigurerAdapter&oid=9ecf2ab051dbb20d5c96eab64febf5bf878f3369&sha=d11b80c3deb543bc418274e53e4a792d4a42dfca
0 0
- SpringMVC的WebMvcConfigurerAdapter
- WebMvcConfigurerAdapter的用法
- WebMvcConfigurerAdapter的用法
- WebMvcConfigurerAdapter
- spring mvc的拦截器WebMvcConfigurerAdapter
- spring boot 拦截器之WebMvcConfigurerAdapter
- Spring Boot拦截器(WebMvcConfigurerAdapter)
- springMVC----springMVC的HelloWorld
- 【SpringMVC框架】springmvc的基础知识
- 【SpringMVC框架】springmvc的基础知识
- springMvc的配置文件springmvc.xml
- 【SpringMVC框架】springmvc的基础知识
- 【SpringMVC】SpringMVC的工作流程
- java 方式配置spring mvc 继承WebMvcConfigurerAdapter和继承WebMvcConfigurationSupport
- 《Springboot极简教程》继承WebMvcConfigurerAdapter: 一行代码写Controller
- Spring Boot自定义MVC配置——WebMvcConfigurerAdapter
- Spring Boot WebMvcConfigurerAdapter 实现拦截器无配置
- SpringMvc的点点滴滴之springMvc的配置
- CVTE 2017春季校招技术类面试问题
- 形参,实参
- Mybatis入门学习一:HelloWorld
- 函数指针和指针函数
- HDU1542 Atlantis 扫描线 矩形面积并
- SpringMVC的WebMvcConfigurerAdapter
- ipv6 dns修改方法
- UILabel显示超过5个字符的字符串为前五个字符加省略号
- 使用Compose变量定制Docker网络
- 正则表达式验证工具类RegexUtils.java
- Spring MVC参数绑定
- csla简单多层系统中使用工厂模式操作 readonlylistbase
- MVC:从客户端中检测到有潜在危险的 Request.Form 值 的解决方法
- 搭建python开发环境--vim的扩建