转载:http://blog.csdn.net/linxingliang/article/details/52069490

上一篇文章已经对定义Servlet 的方法进行了说明,过滤器(Filter)和 监听器(Listener)的注册方法和 Servlet 一样,不清楚的可以查看下上一篇文章(20): 本文将直接使用@WebFilter和@WebListener的方式,完成一个Filter 和一个 Listener;使用注解

@ServletComponentScan//这个就是扫描相应的Servlet包;

过滤器(Filter)文件

com.kfit.filter.MyFilter.Java

package com.kfit.filter;

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;

/**

*

* 使用注解标注过滤器

@WebFilter将一个实现了javax.servlet.Filter接口的类定义为过滤器

* 属性filterName声明过滤器的名称,可选

* 属性urlPatterns指定要过滤 的URL模式,也可使用属性value来声明.(指定要过滤的URL模式是必选属性)

@author Angel(QQ:412887952)

@version v.0.1

*/

@WebFilter(filterName="myFilter",urlPatterns="/*")

public class MyFilter implements Filter{

@Override

public void init(FilterConfig config) throws ServletException {

System.out.println("过滤器初始化");

}

@Override

public void doFilter(ServletRequest request, ServletResponse response,

FilterChain chain) throws IOException,ServletException {

System.out.println("执行过滤操作");

chain.doFilter(request, response);

}

@Override

public void destroy() {

System.out.println("过滤器销毁");

}

}

ServletContext监听器(Listener)文件

com.kfit.listener.MyServletContextListener:

package com.kfit.listener;

importjavax.servlet.ServletContextEvent;

importjavax.servlet.ServletContextListener;

importjavax.servlet.annotation.WebListener;

/**

* 使用@WebListener注解,实现ServletContextListener接口

*

* @author Angel(QQ:412887952)

* @version v.0.1

*/

@WebListener

public class MyServletContextListenerimplements ServletContextListener {

@Override

publicvoid contextDestroyed(ServletContextEvent arg0) {

System.out.println("ServletContex销毁");

}

@Override

publicvoid contextInitialized(ServletContextEvent arg0) {

System.out.println("ServletContex初始化");

}

}

ServletContext监听器(Listener)文件(HttpSessionListener)

MyHttpSessionListener.java

package com.kfit.listener;

import javax.servlet.annotation.WebListener;

import javax.servlet.http.HttpSessionEvent;

import javax.servlet.http.HttpSessionListener;

/**

* 监听Session的创建与销毁

*

*/

@WebListener

publicclassMyHttpSessionListenerimplementsHttpSessionListener {

@Override

publicvoid sessionCreated(HttpSessionEventse) {

System.out.println("Session 被创建");

}

@Override

publicvoid sessionDestroyed(HttpSessionEventse) {

System.out.println("ServletContex初始化");

}

}

注意不要忘记在 SpringBootSampleApplication.java 上添加@ServletComponentScan 注解。

启动的过程中我们会看到输出:

ServletContex初始化

过滤器初始化

服务启动后,随便访问一个页面,会看到输出:

【Spring Boot 系列博客】

61. mybatic insert异常:BindingException: Parameter 'name' not found【从零开始学Spring B】

60. Spring Boot写后感【从零开始学Spring Boot】

59. Spring Boot Validator校验【从零开始学Spring Boot】

58. Spring Boot国际化(i18n)【从零开始学Spring Boot】

57. Spring 自定义properties升级篇【从零开始学Spring Boot】

56. spring boot中使用@Async实现异步调用【从零开始学Spring Boot】

55. spring boot 服务配置和部署【从零开始学Spring Boot】

54. spring boot日志升级篇—logback【从零开始学Spring Boot】

52. spring boot日志升级篇—log4j多环境不同日志级别的控制【从零开始学Spring Boot】

51. spring boot属性文件之多环境配置【从零开始学Spring Boot】

50. Spring Boot日志升级篇—log4j【从零开始学Spring Boot】

49. spring boot日志升级篇—理论【从零开始学Spring Boot】

48. spring boot单元测试restfull API【从零开始学Spring Boot】

47. Spring Boot发送邮件【从零开始学Spring Boot】

46. Spring Boot中使用AOP统一处理Web请求日志

45. Spring Boot MyBatis连接Mysql数据库【从零开始学Spring Boot】

44. Spring Boot日志记录SLF4J【从零开始学Spring Boot】

43. Spring Boot动态数据源(多数据源自动切换)【从零开始学Spring Boot】

42. Spring Boot多数据源【从零开始学Spring Boot】

41. Spring Boot 使用Java代码创建Bean并注册到Spring中【从零开始学Spring Boot】

40. springboot + devtools(热部署)【从零开始学Spring Boot】

39.4 Spring Boot Shiro权限管理【从零开始学Spring Boot】

39.3 Spring Boot Shiro权限管理【从零开始学Spring Boot】

39.2. Spring Boot Shiro权限管理【从零开始学Spring Boot】

39.1 Spring Boot Shiro权限管理【从零开始学Spring Boot】

38 Spring Boot分布式Session状态保存Redis【从零开始学Spring Boot】

37 Spring Boot集成EHCache实现缓存机制【从零开始学Spring Boot】

36 Spring Boot Cache理论篇【从零开始学Spring Boot】

35 Spring Boot集成Redis实现缓存机制【从零开始学Spring Boot】

34Spring Boot的启动器Starter详解【从零开始学Spring Boot】

33 Spring Boot 监控和管理生产环境【从零开始学Spring Boot】

32 Spring Boot使用@SpringBootApplication注解【从零开始学Spring Boot】

更多查看博客: http://412887952-qq-com.iteye.com/

【Spring Boot 系列博客】

61. mybatic insert异常:BindingException: Parameter 'name' not found【从零开始学spring B】

60. Spring Boot写后感【从零开始学Spring Boot】

59. Spring Boot Validator校验【从零开始学Spring Boot】

58. Spring Boot国际化(i18n)【从零开始学Spring Boot】

57. Spring 自定义properties升级篇【从零开始学Spring Boot】

56. spring boot中使用@Async实现异步调用【从零开始学Spring Boot】

55. spring boot 服务配置和部署【从零开始学Spring Boot】

54. spring boot日志升级篇—logback【从零开始学Spring Boot】

52. spring boot日志升级篇—log4j多环境不同日志级别的控制【从零开始学Spring Boot】

51. spring boot属性文件之多环境配置【从零开始学Spring Boot】

50. Spring Boot日志升级篇—log4j【从零开始学Spring Boot】

49. spring boot日志升级篇—理论【从零开始学Spring Boot】

48. spring boot单元测试restfull API【从零开始学Spring Boot】

47. Spring Boot发送邮件【从零开始学Spring Boot】

46. Spring Boot中使用AOP统一处理Web请求日志

45. Spring Boot MyBatis连接Mysql数据库【从零开始学Spring Boot】

44. Spring Boot日志记录SLF4J【从零开始学Spring Boot】

43. Spring Boot动态数据源(多数据源自动切换)【从零开始学Spring Boot】

42. Spring Boot多数据源【从零开始学Spring Boot】

41. Spring Boot 使用Java代码创建Bean并注册到Spring中【从零开始学Spring Boot】

40. springboot + devtools(热部署)【从零开始学Spring Boot】

39.4 Spring Boot Shiro权限管理【从零开始学Spring Boot】

39.3 Spring Boot Shiro权限管理【从零开始学Spring Boot】

39.2. Spring Boot Shiro权限管理【从零开始学Spring Boot】

39.1 Spring Boot Shiro权限管理【从零开始学Spring Boot】

38 Spring Boot分布式Session状态保存Redis【从零开始学Spring Boot】

37 Spring Boot集成EHCache实现缓存机制【从零开始学Spring Boot】

36 Spring Boot Cache理论篇【从零开始学Spring Boot】

35 Spring Boot集成Redis实现缓存机制【从零开始学Spring Boot】

34Spring Boot的启动器Starter详解【从零开始学Spring Boot】

33 Spring Boot 监控和管理生产环境【从零开始学Spring Boot】

32 Spring Boot使用@SpringBootApplication注解【从零开始学Spring Boot】

更多查看博客: http://412887952-qq-com.iteye.com/

最新文章

  1. MTK MT33xx型GPS的NMEA协议解析实例
  2. [Head First设计模式]生活中学设计模式——组合模式
  3. hdoj 5139Formula
  4. 利用LruCache为GridView加载大量本地图片完整示例
  5. 8款强大的CSS3/HTML5动画及应用源码
  6. HDU 5723 Abandoned country (最小生成树+dfs)
  7. linux 以root用户登录ftp
  8. dll文件32位64位检测工具以及Windows文件夹SysWow64的坑(很详细,还有自动动手编程探测dll)
  9. 【足迹C++primer】40、动态数组
  10. Webdriver如何解决页面元素过期:org.openqa.selenium.StaleElementReferenceException: Element not found in the cache - perhaps the page has changed since it was looked up
  11. 带金属光泽的模型shader的实现
  12. js导出CSV
  13. 推荐五款Android 应用的自动化测试工具
  14. Python-字符串及列表操作-Day2
  15. 斯坦福大学公开课机器学习:machine learning system design | error metrics for skewed classes(偏斜类问题的定义以及针对偏斜类问题的评估度量值:查准率(precision)和召回率(recall))
  16. JavaSE核心之一:Date类、Calendar类、Math类、枚举;
  17. el标签将时间戳转换为特定格式以及将数值保留特定小数
  18. 9.5 翻译系列:数据注解之ForeignKey特性【EF 6 Code-First系列】
  19. vuejs目录结构启动项目安装nodejs命令,api配置信息思维导图版
  20. java保留两位小数和js保留两位小数一致性研究

热门文章

  1. webdriver高级应用- 禁止Chrome浏览器的PDF和Flash插件
  2. webdriver高级应用- 操作富文本框
  3. 【185天】黑马程序员27天视频学习笔记【Day14-下】
  4. python递归函数、二分法、匿名函数、(sorted、map、filter内置函数应用)
  5. isinstance 和 type 的区别
  6. iOS--------对堆、栈 存储空间的理解
  7. NOJ——1658平方和(自然数平方和公式和取模法则)
  8. Static相关
  9. Vmware Linux虚拟机磁盘扩容方法
  10. mysql开发必知必会