以下两种方式都是Servlet 3.0规范中新增的方式。
方式一:注解配置
1. 用注解声明组件
- Servlet
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17@WebServlet(urlPatterns = "/druid/*",
initParams = {
// IP白名单(没有配置或者为空,则允许所有访问)
@WebInitParam(name="allow",value="192.168.1.72,127.0.0.1"),
// IP黑名单 (存在共同时,deny优先于allow)
@WebInitParam(name="deny",value="192.168.1.73"),
// 用户名
@WebInitParam(name="loginUsername",value="admin"),
// 密码
@WebInitParam(name="loginPassword",value="123456"),
// 禁用HTML页面上的“Reset All”功能
@WebInitParam(name="resetEnable",value="false")
})
public class DruidStatViewServlet extends StatViewServlet{
private static final long serialVersionUID = 1L;
} - Filter
1
2
3
4
5
6
7
8@WebFilter( urlPatterns = "/*",
filterName = "stat",
initParams = {
// 忽略资源
@WebInitParam(name="exclusions",value="*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*")
})
public class DruidStatFilter extends WebStatFilter{
} - Listener
1 | @WebListener("This is only a demo listener") |
2. Spring Boot启动类上添加@ServletComponentScan注解
@ServletComponentScan是Spring的注解。
Spring通过该注解能够扫描到我们自己编写的Servlet、Filter、Listner。
方式二:代码注册
通过Spring提供的如下bean注册,其内部使用了Servlet 3.0的javax.servlet.ServletContext新增的addServlet()、addFilter()、addListener()等方法。
- ServletRegistrationBean
- FilterRegistrationBean
- ServletListenerRegistrationBean
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@Configuration
public class DruidMonitorConfig {
@Bean
public ServletRegistrationBean servletRegistrationBean() {
ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean();
// 其内部使用了Servlet 3.0的javax.servlet.ServletContext新增的addServlet()方法
servletRegistrationBean.setServlet(new StatViewServlet());
servletRegistrationBean.addUrlMappings("/druid/*");
// 添加初始化参数:initParams
// 白名单:
servletRegistrationBean.addInitParameter("allow", "127.0.0.1");
// IP黑名单 (存在共同时,deny优先于allow) :
// 如果满足deny的话提示:Sorry, you are not permitted to view this page.
servletRegistrationBean.addInitParameter("deny", "192.168.1.73");
// 登录查看信息的账号密码.
servletRegistrationBean.addInitParameter("loginUsername", "admin");
servletRegistrationBean.addInitParameter("loginPassword", "123456");
// 是否能够重置数据.
servletRegistrationBean.addInitParameter("resetEnable", "false");
return servletRegistrationBean;
}
@Bean
public FilterRegistrationBean filterRegistrationBean() {
FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
// 其内部使用了Servlet 3.0的javax.servlet.ServletContext新增的addFilter()方法
filterRegistrationBean.setFilter(new WebStatFilter());
// 添加过滤规则.
filterRegistrationBean.addUrlPatterns("/*");
// 添加不需要忽略的格式信息.
filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid2/*");
return filterRegistrationBean;
}
}