web.xml 注解配置

web.xml 注解配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
package com.bookstore.config;

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

import javax.servlet.Filter;
import javax.servlet.annotation.WebFilter;
/*
在Servlet3.0环境中,容器会在类路径中查找实现javax.servlet.ServletContainerInitializer接口的类
如果找到的话就用它来配置Servlet容器。Spring提供了这个接口的实现,名为SpringServletContainerInitializer
这个类反过来又会查找实现WebApplicationInitializer的类并将配置的任务交给它们来完成。
Spring3.2引入了一个便利的WebApplicationInitializer基础实现,名为AbstractAnnotationConfigDispatcherServletInitializer
当我们的类扩展了AbstractAnnotationConfigDispatcherServletInitializer并将其部署到Servlet3.0容器的时候
容器会自动发现它,并用它来配置Servlet上下文。
*/
/**
* @Author BaiYZ
* @Program BookStoreFrameWork
* @Description web.xml注解配置
* @Date 2022-01-04 22:25:21
*/

public class WebInitConfig extends AbstractAnnotationConfigDispatcherServletInitializer {
/**
* @Description: 根配置就是配置Spring配置类
* @Author: BaiYZ
* @Date: 2022/1/4 22:26
* @return: java.lang.Class<?>[]
*/
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class[]{SpringConfig.class};
}

/**
* @Description: 配置SpringMVC映射配置(配置控制器)
* @Author: BaiYZ
* @Date: 2022/1/4 22:28
* @return: java.lang.Class<?>[]
*/
@Override
protected Class<?>[] getServletConfigClasses() {
return new Class[]{SpringMVCConfig.class};
}

/**
* @Description: 配置DispatcherServlet Mapping(配置控制器映射)URL-Pattern
* @Author: BaiYZ
* @Date: 2022/1/4 22:28
* @return: java.lang.String[]
*/
@Override
protected String[] getServletMappings() {
return new String[]{"/"};
}

/**
* @Description: 注册过滤器
* @Author: BaiYZ
* @Date: 2022/1/4 22:35
* @return: javax.servlet.Filter[]
*/
@Override
protected Filter[] getServletFilters() {
//先配置编码过滤器
CharacterEncodingFilter characterEncodingFilter = new CharacterEncodingFilter();
characterEncodingFilter.setEncoding("UTF-8");
characterEncodingFilter.setForceResponseEncoding(true);
//隐藏请求分发过滤器,使用put delete post get不同请求分发请求
HiddenHttpMethodFilter hiddenHttpMethodFilter = new HiddenHttpMethodFilter();
return new Filter[]{characterEncodingFilter,hiddenHttpMethodFilter};
}

}