Spring+SpringMVC框架配置记录(纯配置类方式,包含拦截器的配置,编码的设置等内容)

利用Spring框架搭建Web项目大体步骤有以下6步。(我在使用下面配置的时候用的使Spring5.2.0,低版本可能不支持。)

1.创建DispatcherServlet初始化类
2.创建SpringMvc配置类
3.创建Spring配置类
4.创建三层以及实体类等组件
5.创建拦截器Interceptor
6.创建通知类

其中通知类,拦截器以及三层和实体类等组件的创建方式略过不谈,因为大家可以在搜寻其他文章进行配置。本文重点为前俩步。

1.创建自定义DispatcherServletInitializer类继承AbstractAnnotationConfigDispatcherServletInitializer类,继承了AbstractAnnotationConfigDispatcherServletInitializer类的自定义类相当于xml配置方式中的web.xml,所以他起到的作用是初始化DispatcherServlet以及加载应用上下文。相关配置代码如下。

package cn.zzcfirst.config;

import javax.servlet.Filter;
import javax.servlet.ServletRegistration.Dynamic;

import org.springframework.web.filter.CharacterEncodingFilter;
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;

public class DispatcherServletInitializer extends AbstractAnnotationConfigDispatcherServletInitializer{
	
	/*
	*	该方法主要是配置Spring容器的类
	*	将Spring容器初始化
	*	创建Spring配置类
	*	将其按照以下方式放入Class数组中即可
	*/
	@Override
	protected Class<?>[] getRootConfigClasses() {
		return new Class<?>[] {RootConfig.class};
	}
	
	/*
	*	该方法主要是配置SpringMVC容器的类
	*	将SpringMVC容器初始化
	*	创建SpringMVC配置类
	*	将其按照以下方式放入Class数组中即可
	*/
	@Override
	protected Class<?>[] getServletConfigClasses() {
		return new Class<?>[] {SpringMvcConfig.class};
	}
	
	/*
	* 	该方法配置DispatcherServlet的映射路径
	* 	将映射路径放入String数组中即可
	*/
	@Override
	protected String[] getServletMappings() {
		return new String[] {"/"};
	}
	
	/*
	*  	该方法用于注册Filter
	* 	一般只是用来注册一下CharacterEncodingFilter
	* 	处理以下编码方式
	* 	setEncoding()的值为编码方式
	*/
	@Override
	protected Filter[] getServletFilters() {
		CharacterEncodingFilter encodingFilter = 
				new CharacterEncodingFilter();
		encodingFilter.setEncoding("utf-8");
		encodingFilter.setForceEncoding(true);
		return new Filter[] {encodingFilter};
	}
	
	/*
	*  	该方法主要用于设置一些DispatcherServlet的自定义配置
	* 	在DispatcherServlet注册到容器中之后就会调用该方法
	* 	DispathcerServlet注册后会得到Dynamic也就是下面方法的参数
	* 	我们可以通过该参数设置相关属性
	* 	例如
	* 	初始化参数InitParameter()
	* 	容器启动加载LoadOnStartup等
	*/
	@Override		
	protected void customizeRegistration(Dynamic registration) {
		registration.setLoadOnStartup(1);
		//registration.setInitParameter("", "");
	}
}

以上为配置DispatcherServlet的过程。

2.创建SpringMVC配置类,我在创建配置类的时候同时实现了WebMvcConfigurer接口,该接口中包含的方法主要用于配置Interceptor以及其他内容,通俗的说,该类就是SpringMVC配置文件。(实现WebMvcConfigurer接口的原因是因为看到一位道友使用WebMvcConfigurerAdapter 类,但是我使用spring5.2.0的时候发现该类已经不建议使用了,还有一道删除线,个人有强迫症,所以就直接实现了WebMvcConfigurer接口而拒绝了继承WebMvcConfigurerAdapter类)

package cn.zzcfirst.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.EnableAspectJAutoProxy;
import org.springframework.web.multipart.commons.CommonsMultipartResolver;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.InterceptorRegistration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.view.InternalResourceViewResolver;

import cn.zzcfirst.advice.ShowUserMesAdvice;
import cn.zzcfirst.interceptor.MyInterceptor;

@Configuration
@ComponentScan(basePackages={"cn.zzcfirst.controller"})
//该注解主要作用为启用自定义的MVC配置
@EnableWebMvc
public class SpringMvcConfig implements WebMvcConfigurer{
	
	/*
	*	配置视图解析器的Bean
	*/
	@Bean
	public InternalResourceViewResolver viewResolver() {
		InternalResourceViewResolver viewResolver = 
				new InternalResourceViewResolver();
		viewResolver.setPrefix("");
		viewResolver.setSuffix(".jsp");
		return viewResolver;
	}
	
	/*
	*	若不进行文件上传则不需要配置
	*	配置解析multipart请求的MultipartResolver
	*	配置该类需要commons-io.jar和commons-fileupload.jar
	*	且Bean的id必须为multipartResolver
	*/
	@Bean
	public CommonsMultipartResolver multipartResolver() {
		return new CommonsMultipartResolver();
	}
	
	/*
	*	这里重写了WebMvcConfigurer接口的方法用于添加拦截器
	*	注意 若要使拦截器起作用 
	*	必须在相应配置类上面添加EnableWebMvc注解
	*/
	@Override
	public void addInterceptors(InterceptorRegistry registry) {
		registry.addInterceptor(new MyInterceptor()).addPathPatterns("/*");
		//addPathPattern方法用于设置拦截路径
	}
}

以上就是SprngMVC容器配置过程。

下面其他设置,大家可以查询其他相关文章,本人还是小白,如有错误的地方,请大家指出,也希望这篇文章可以帮助到大家。

你可能感兴趣的:(Spring+SpringMVC框架配置记录(纯配置类方式,包含拦截器的配置,编码的设置等内容))