Servlet(三)过滤器与监听器

一、过滤器Filter

1.什么是过滤器

  • 在请求到达服务器资源(servlet/jsp)之前 , 过滤器可以拦截某些请求
  • 在过滤器中就可以添加一些相应的代码处理,可以减少代码冗余

2.web.xml配置过滤器

    <!--配置过虑器-->
    <filter>
        <filter-name>encodingFilter</filter-name>
        <filter-class>pro.filter.EncodingFilter</filter-class>
    </filter>
    <filter-mapping>
       <!-- <filter-name>encodingFilter</filter-name>
        <url-pattern>/login.jsp</url-pattern>允许进入到过滤器的请求地址-->
        <filter-name>encodingFilter</filter-name>
        <url-pattern>/*</url-pattern><!--访问本项目中任何资源都进入到编码过滤器中-->
    </filter-mapping>

    <filter>
        <filter-name>isloginFilter</filter-name>
        <filter-class>pro.filter.IsLOginFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>isloginFilter</filter-name>
        <url-pattern>/success.jsp</url-pattern>
    </filter-mapping>

3.验证用户是否已经登录

public class IsLOginFilter implements Filter {
    //如何确定用户是否已经登录  判断session对象中是否有没有用户信息
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        HttpServletRequest request = (HttpServletRequest)servletRequest;
        String name = (String)request.getSession().getAttribute("account");//时刻想想set了没有,set的name是什么
        if (name==null){
            HttpServletResponse response = (HttpServletResponse)servletResponse;
            response.sendRedirect("login.jsp");
        }else{
            filterChain.doFilter(servletRequest, servletResponse);
        }
    }
}

4.过滤器生命周期

  • init() 在服务器启动时执行
  • destroy() 在服务器关闭时销毁

二、监听器Listener

1.什么是监听器

  • 用于监听ServletContext,HttpSession和ServletRequest等域对象的创建与销毁,以及对象中属性的修改

2.web.xml配置监听器

   <!--配置监听器-->
    <listener>
        <listener-class>pro.listener.ObjectListener</listener-class>
    </listener>
    <listener>
        <listener-class>pro.listener.Attrlistener</listener-class>
    </listener>

3.过滤器生命周期

  • 创建于服务器的启动
  • 销毁于服务器的关闭
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值