《JavaEE》第五周day5学习笔记-Filter、Listener

一、Filter

(一)概述


Java的特殊类,当用户访问服务器资源时,请求优先被过滤器捕获,完成一些特殊的处理,如:登录验证、统一编码、敏感字符过滤等。

(二)创建Filter


1.创建一个类,实现Filter接口;
2.重写init、doFilter、destroy方法;
3.doFilter方法中配置过滤条件
filterChain.doFilter(servletRequest,servletResponse);

XML细节:

<filter>
	<filter-name>demo</filter-name>
	<filter-class>com.coastline.web.filter.FilterDemo</filter-class>
</filter>

<filter-mapping>
	<filter-name>demo</filter-name>
	<url-pattern>/*</url-pattern>
</filter-mapping>

(三)生命周期


  • init:服务器启动后,创建Filter对象,然后调用init方法;只执行一次,用于加载资源
  • doFilter:每一次请求被拦截时,会执行;会多次执行
  • destroy:服务器关闭后,Filter对象被销毁;只执行一次,用于释放资源

(四)其他特性


1.拦截器配置
(1)/index.jsp,仅拦截index.jsp资源
(2)/user/*,拦截/user路径下的所有资源
(3)*.jsp,拦截所有后缀名为.jsp资源
(4)/*,拦截所有资源

2.过滤器先后顺序
按照字符串比较规则,值小的优先放行(AFilter优先于BFilter);如果配置了web.xml,<filter-mapping>定义在上面的优先执行。

3.登录验证

public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
        HttpServletRequest request=(HttpServletRequest)req;
        HttpServletResponse response =(HttpServletResponse)resp;
        String requestURI = request.getRequestURI();
        if(requestURI.contains("login.jsp")||requestURI.contains("/loginServlet")){
            chain.doFilter(req, resp);
        }else{
            Object user = request.getSession().getAttribute("user");
            if(user!=null){
                chain.doFilter(req,resp);
            }else{
                request.setAttribute("login_error","您尚未登录,请登录");
                request.getRequestDispatcher("/login.jsp").forward(request,resp);
            }
        }
    }

二、Listener

(一)概述


Java的特殊类,通过绑定事件、事件源、监听器,实现:当事件源发生某个事件时,执行监听器代码。常用的监听器分类:

  • ServletContext
  • HttpSession
  • ServletRequest

(二)创建Listener


1.创建一个类,实现ServletContextListener/ServletContextAttributeListener/…接口;
2.重写接口方法

  • contextInitialized():对象创建后会调用该方法
  • contextDestroyed():对象销毁后会调用该方法

3.配置web.xml

<!--配置监听器-->
       <listener>
              <listener-class>listener.ContextLoaderListener</listener-class>
       </listener>

<!--指定初始化的参数-->
       <context-param>
              <param-name>contextLoadConfig</param-name>
              <param-value>/WEB-INF/classes/applicationContext.xml</param-value>
       </context-param>

3+.注解
@WebListener

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值