Spring boot学习 (七) 之servlet、filte
2018-11-30 本文已影响2人
xml_
前言
使用Spring-Boot
,可以通过扫描注解的方式注册Servlet、Filter
和listener
。在 启动类 上使用@ServletComponentScan
注解后,Servlet、Filter、Listene
r 可以分别通过 @WebServlet、@WebFilter、@WebListener
注解自动注册,整体来说还是很简单的,下面一起来学习一下。
正文
一,servlet的注册
- 启动类
@SpringBootApplication
@ServletComponentScan
public class Chapter1Application {
public static void main(String[] args) {
SpringApplication.run(Chapter1Application.class, args);
}
}
- servlet文件类
/**
* @author merlin.xu
* @create 2018-11-30-11:34
*/
@WebServlet(urlPatterns="/*", description="说明")
public class MyServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("》》》》》》doPost方法执行》》》》》》");
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("》》》》》》doGet方法执行》》》》》》");
doPost(req, resp);
}
@Override
public void init() throws ServletException {
super.init();
System.out.println("servlet初始化");
}
@Override
public void destroy() {
super.destroy();
System.out.println("servlet被销毁");
}
}
二,Filter的注册
- 启动类和上面一样
- Filter类
/**
* @author merlin.xu
* @create 2018-11-28-17:08
* @WebFilter将一个实现了javax.servlet.Filter接口的类定义为过滤器
* 属性filterName声明过滤器的名称,可选
* 属性urlPatterns指定要过滤 的URL模式,也可使用属性value来声明.(指定要过滤的URL模式是必选属性)
*/
@WebFilter(filterName="myFilter",urlPatterns="/*")
public class MyFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("过滤器初始化");
}
@Override
public void destroy() {
System.out.println("过滤器被销毁");
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
System.out.println("执行过滤操作");
filterChain.doFilter(servletRequest, servletResponse);
}
}
三,Listener的注册
- 启动类和上面一样
- Listener类(有好几种,这里实现HttpSessionListener为例 )
/**
* 监听Session的创建与销毁
* @author merlin.xu
* @create 2018-11-29-10:40
*/
@WebListener
public class MyHttpSessionListener implements HttpSessionListener {
@Override
public void sessionCreated(HttpSessionEvent se) {
System.out.println("监听器sessiom被创建");
}
@Override
public void sessionDestroyed(HttpSessionEvent se) {
System.out.println("监听器session被摧毁");
}
}
结果
- 启动程序,出现如下信息
监听器初始化
过滤器初始化
- 启动后,随便访问一个页面,出现如下信息
servlet初始化
执行过滤操作
》》》》》》doGet方法执行》》》》》》
》》》》》》doPost方法执行》》》》》》
从输出信息大家也应该知道servlet,filter,listener三者之间的执行顺序了。
原创作者:梦凌小样
作品链接:https://www.jianshu.com/p/af6ecc629320【原创不易,转载请注明出处,感谢理解】
一位爱生活,爱创作,爱分享,爱自己的90后女程序员一枚,记录工作中的点点滴滴,一起学习,共同进步,期待能和优秀的您交上朋友