0
点赞
收藏
分享

微信扫一扫

JavaWeb(过滤器&监听器)

芷兮离离 2022-04-21 阅读 96

一、过滤器

先在src里面建一个filter包:

字符编码过滤器代码如下(记得实现Filter类):

@Override
	public void destroy() {
		// TODO Auto-generated method stub
		//销毁
	}

	@Override
	public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2)
			throws IOException, ServletException {
		/**
		 * URL通配符:以下两种情况任选其一
		 * 1. /*:所有的界面(请求)
		 * 2. *.后缀 (例如*.do:所有以do为后缀的请求)
		 */
		HttpServletRequest req=(HttpServletRequest)arg0;
		//设置编码方式
		req.setCharacterEncoding("utf-8");
		//获取请求路径 equals 上下文参数
		String path=req.getServletPath();
		System.out.println("请求路径:"+path);
		//执行过滤操作
		System.out.println("经过了字符编码过滤器~~我得意的笑");
		//执行放行操作
		arg2.doFilter(arg0, arg1);
	}

	@Override
	public void init(FilterConfig arg0) throws ServletException {
		// TODO Auto-generated method stub
		//初始化
	}

二、监听器

先键一个listener包

案例:使用监听器实现统计在线人数(记得实现ServletContextListener,HttpSessionListener类):

/**
	 * 创建一个会话 +1
	 * 销毁一个会话 -1
	 */

	//application:应用
	private ServletContext application=null;//扩大作用域
	
	@Override
	public void contextDestroyed(ServletContextEvent arg0) {
//		System.out.println("应用程序被销毁了");
	}

	@Override
	public void contextInitialized(ServletContextEvent arg0) {
//		System.out.println("应用程序被初始化了");
		//初始化的时候赋值
		application=arg0.getServletContext();
		Integer count = 0;
		//存进去
		application.setAttribute("count", count);//键,值 ${count}
	}

	@Override
	public void sessionCreated(HttpSessionEvent arg0) {
//		System.out.println("会话被创建了");
		//在原来的基础上+1
		//先拿值 +1 再存进去
		Integer count=(Integer)application.getAttribute("count");//先拿到之前的在线人数
		count++;
		application.setAttribute("count", count);
	}

	@Override
	public void sessionDestroyed(HttpSessionEvent arg0) {
//		System.out.println("会话被销毁了-注销");
		//在原来的基础上-1
		//先拿值 -1 再存进去
		Integer count=(Integer)application.getAttribute("count");//先拿到之前的在线人数
		count--;
		application.setAttribute("count", count);
	}
举报

相关推荐

0 条评论