servlet监听器和过滤器

1.servlet监听器:

在 listener 这个包下 新建一个 xxxListener类,实现HttpSessionListener方法。

重写接口中的两个方法:

@Override

public void sessionCreated(HttpSessionEvent se) {

System.out.println("用户登陆了。。。");

}

 

@Override

public void sessionDestroyed(HttpSessionEvent se) {

//获取session

HttpSession session=se.getSession();

//获取容器

ServletContext application = session.getServletContext();

String name = (String) session.getAttribute("uname");

List<String> ulist = (List<String>) application.getAttribute("userlist");

ulist.remove(name);

System.out.println("用户销毁了。。。");

}

在web.xml文件中配置监听类的路径:

<listener>

<listener-class>com.sxt.listener.ChatListener</listener-class>

</listener>

2.Servlet过滤器

在 filters 包下新建一个 xxxFilter类 ,实现 Filter接口。

然后重写里面主要的三个方法:

//启动过滤器

@Override

public void init(FilterConfig filterConfig) throws ServletException {

System.out.println("过滤器启动。。。");

}

//进入和离开过滤器

@Override

public void doFilter(ServletRequest request, ServletResponse response,

FilterChain chain) throws IOException, ServletException {

HttpServletRequest req = (HttpServletRequest)request;

HttpServletResponse res = (HttpServletResponse)response;

String URI = req.getRequestURI();

StringBuffer URL = req.getRequestURL();

System.out.println("进入过滤器。。。当前URI为:"+URI+"当前URL为:"+URL);

//进入servlet前运行的代码

chain.doFilter(request, response); //放行

//离开serlvet运行的代码

System.out.println("离开过滤器。。。");

}

//销毁过滤器

@Override

public void destroy() {

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

}

在web.xml文件中配置:

<filter>

<filter-name>charset</filter-name>

<filter-class>com.sxt.filters.CharsetFilter(过滤器的全限定名)</filter-class>

</filter>

<filter-mapping>

<filter-name>charset(与上面保持一致)</filter-name>

<url-pattern>/*(需要过滤的路径)</url-pattern>

</filter-mapping>

配置<url-pattern>的三种方式:

1. /* (过滤该web应用下的所有资源)

2. *.do *.html *.jsp (需要过滤某一类资源)

3. /admin/* (过滤该文件夹下的所有资源)

 

3.过滤器链(多个过滤器组合)

按 web.xml 文件中的过滤器配置先后顺序执行。

配置在前的先执行,配置在后的后执行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值