Spring boot
集成
Fliter
和
Linstener
上一章已经对定义 Servlet 的方法进行了说明,过滤器(Filter)和监听器(Listener)的注册方法和 Servlet 一
样,不清楚的可以查看下上一篇文章(20):
本文将直接使用@WebFilter 和@WebListener 的方式,完成一个
Filter 和一个 Listener;使用注解
@ServletComponentScan//
这个就是扫᧿相应的
Servlet
包
;
开发 Filter【:添加
@ServletComponentScan
注解之后,使用注解开发的 Filter 和 Linstener 将会被自动注册】
具体实现代码:
com.hpit.sb.filter.MyFilter
import
java.io.IOException;
import
javax.servlet.Filter;
import
javax.servlet.FilterChain;
import
javax.servlet.FilterConfig;
import
javax.servlet.ServletException;
import
javax.servlet.ServletRequest;
import
javax.servlet.ServletResponse;
import
javax.servlet.annotation.WebFilter;
import
org.apache.log4j.Logger;
//使用注解定义一个过滤器
@WebFilter
(urlPatterns =
"/*"
, filterName =
"myFilter"
)
public class
MyFilter
implements
Filter {
private
Logger
logger
= Logger.
getLogger
(getClass());
@Override
public void
destroy() {
logger
.info(
"destroy()"
);
}
@Override
public void
doFilter(ServletRequest
request
, ServletResponse
response
, FilterChain
chain
)
throws
IOException, ServletException {
logger
.info(
"doFilter()"
);
logger
.info(
"before filter"
);
chain
.doFilter(
request
,
response
);
logger
.info(
"after filter"
);
}
@Override
public void
init(FilterConfig
config
)
throws
ServletException {
logger
.info(
"init()"
);
}
}
开发 Linstener
具体实现代码:
com.hpit.sb.listener. Mylistener
import
javax.servlet.ServletContextEvent;
import
javax.servlet.ServletContextListener;
import
javax.servlet.annotation.WebListener;
import
org.apache.log4j.Logger;
/**
*
TODO
使用注解开发一个监听器
*
*
*/
@WebListener
public class
Mylistener
implements
ServletContextListener {
private
Logger
logger
= Logger.
getLogger
(getClass());
@Override
public void
contextDestroyed(ServletContextEvent
contextEvent
) {
logger
.info(
"contextDestroyed"
);
}
@Override
public void
contextInitialized(ServletContextEvent
contextEvent
) {
logger
.info(
"contextInitialized"
);
}
}
启动日志,并请求一个有效连接:
![](https://img-blog.csdnimg.cn/30b890cad1db4239839a9177c247c831.jpeg)