我是靠谱客的博主 小巧柜子,这篇文章主要介绍学习笔记——Filter和Listener详解,现在分享给大家,希望可以做个参考。

1.Filter

1、Filter:过滤器,用来过滤网站的数据,可以用来处理中文乱码,登录验证…

2、Filter开发过程:

  1. 导包
  2. 编写过滤器

实现Filter接口,重写对应的方法即可

复制代码
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
package com.kuang.filter; import javax.servlet.*; import java.io.IOException; public class CharacterEncodingFilter implements Filter { //初始化:web服务器启动,就已经初始化了,随时等待过滤对象出现! @Override public void init(FilterConfig filterConfig) throws ServletException { System.out.println("CharacterEncodingFilter初始化"); } //Chain:链 //1.过滤中的所有代码,在过滤特定请求的时候都会执行 //2.必须要让过滤器继续同行 filterChain.doFilter(servletRequest,servletResponse); @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { servletRequest.setCharacterEncoding("utf-8"); servletResponse.setCharacterEncoding("utf-8"); servletResponse.setContentType("text/html;charset=UTF-8"); System.out.println("CharacterEncodingFilter执行前..."); //让我们的请求继续走,如果不写,程序到这里就被拦截停止! filterChain.doFilter(servletRequest,servletResponse); System.out.println("CharacterEncodingFilter执行后..."); } //销毁:web服务器关闭的时候,过滤器会销毁 @Override public void destroy() { System.out.println("CharacterEncodingFilter销毁"); } }

3、在web.xml中配置Filter

复制代码
1
2
3
4
5
6
7
8
9
10
<filter> <filter-name>CharacterEncodingFilter</filter-name> <filter-class>com.kuang.filter.CharacterEncodingFilter</filter-class> </filter> <filter-mapping> <filter-name>CharacterEncodingFilter</filter-name> <!--只要是 /servlet 的任何请求,会经过这个过滤器--> <url-pattern>/servlet/*</url-pattern> </filter-mapping>

2.Listener

实现一个监听器的接口

1、编写一个监听器,实现监听器的接口:

复制代码
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
package com.kuang.listener; import javax.servlet.ServletContext; import javax.servlet.http.HttpSessionEvent; import javax.servlet.http.HttpSessionListener; //统计网站在线人数:统计Session public class OnlineCountListener implements HttpSessionListener{ //创建Session监听 @Override public void sessionCreated(HttpSessionEvent se) { ServletContext ctx = se.getSession().getServletContext(); System.out.println(se.getSession().getId()); Integer onLineCount = (Integer) ctx.getAttribute("onLineCount"); if (onLineCount==null){ onLineCount = new Integer(1); }else{ int count = onLineCount.intValue(); onLineCount = new Integer(count+1); } ctx.setAttribute("onLineCount",onLineCount); } //销毁Session监听 @Override public void sessionDestroyed(HttpSessionEvent se) { ServletContext ctx = se.getSession().getServletContext(); System.out.println(se.getSession().getId()); Integer onLineCount = (Integer) ctx.getAttribute("onLineCount"); if (onLineCount==null){ onLineCount = new Integer(0); }else{ int count = onLineCount.intValue(); onLineCount = new Integer(count-1); } ctx.setAttribute("onLineCount",onLineCount); } }

2、在web.xml中注册监听器

复制代码
1
2
3
4
5
6
7
<!-- 注册监听器 --> <listener> <listenerclass>com.kuang.listener.OnlineCountListener</listener-class> </listener>

3.过滤器常见应用

1、用户登录之后才能进入主页!用户注销之后就不能进入主页了!
2、进入主页的时候要判断用户是否已经登录(在过滤器中实现)

部分代码:

复制代码
1
2
3
4
5
6
7
HttpServletRequest request = (HttpServletRequest) req; HttpServletResponse response = (HttpServletResponse) resp; if (request.getSession().getAttribute("USER_SESSION") == null){ response.sendRedirect("/error.jsp"); } filterChain.doFilter(request,response);

最后

以上就是小巧柜子最近收集整理的关于学习笔记——Filter和Listener详解的全部内容,更多相关学习笔记——Filter和Listener详解内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(74)

评论列表共有 0 条评论

立即
投稿
返回
顶部