创建mavn-web项目
引入依赖
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.1.6.RELEASE</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
spring的配置文件(applicationContext.xml)
@Configuration
@ComponentScan(basePackages = "com.nq",
useDefaultFilters = true,
excludeFilters = {
@ComponentScan.Filter(type = FilterType.ANNOTATION,
classes = Controller.class)})
public class SpringConfig {
}
springmvc配置文件
@Configuration
@ComponentScan(basePackages = "com.nq",
useDefaultFilters = false,
includeFilters = {
@ComponentScan.Filter(type = FilterType.ANNOTATION,
classes = Controller.class)})
public class SpringMVCConfig {
}
配置替代Web.xml
主要实现WebApplicationInitializer接口,重写onStartup方法
public class WebInitializer implements WebApplicationInitializer {
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();
// 替代之前的扫描mvc配置文件
ctx.register(SpringMVCConfig.class);
// 配置DispatcherServlet
ServletRegistration.Dynamic springmvc = servletContext.addServlet("springmvc", new DispatcherServlet());
springmvc.addMapping("/");
springmvc.setLoadOnStartup(1); // 启动时加载
}
}
在web.xml配置中只配置了springmvc文件,而spring容器并未加载,
解决方案:直接扫描配置,舍弃spring配置
@Configuration
@ComponentScan(basePackages = "com.nq")
public class SpringMVCConfig {
}
配置静态资源
@Configuration
@ComponentScan(basePackages = "com.nq")
public class SpringMVCConfig extends WebMvcConfigurationSupport {
@Override
protected void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/css/**").addResourceLocations(("classpath:/"))
}
}
配置视图解析器
/**
* 视图解析器
* @param registry
*/
@Override
protected void configureViewResolvers(ViewResolverRegistry registry) {
registry.jsp("/jsp",".jsp");
}
路径映射
@Override
protected void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/test").setViewName("test");
}
添加json配置
@Override
protected void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
FastJsonHttpMessageConverter converter = new FastJsonHttpMessageConverter();
converter.setDefaultCharset(Charset.forName("UTF-8"));
FastJsonConfig fastJsonConfig = new FastJsonConfig();
fastJsonConfig.setCharset(Charset.forName("UTF-8"));
converter.setFastJsonConfig(fastJsonConfig);
converters.add(converter);
}