zoukankan      html  css  js  c++  java
  • 2阶——web三大组件之2(Filter(过滤器) Listen(监听器))

    1.实现一个filter步骤

      >编写一个java类实现Lister接口

    @WebFilter("/*")  //这样就不需要在web.xml文件中再配置了
    public class EncodingFilter implements Filter {
      
    }

      >在web.xml文件中配置 可以用注解  @WebFilter("/*")替代xml文件配置

        <filter>
            <filter-name>encodingFilter</filter-name>
            <filter-class>cn.filter.EncodingFilter</filter-class>
        </filter>
        <filter-mapping>
            <filter-name>encodingFilter</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>

    Web三大组件(filter listen servlet)  其实filter listen 都与servlet 一样在服务器启动时创建

     

     

    注解形式

    @WebFilter(value = "/*",dispatcherTypes = {DispatcherType.REQUEST,DispatcherType.FORWARD})

     xml形式

        <filter>
            <filter-name>encodingFilter</filter-name>
            <filter-class>cn.filter.EncodingFilter</filter-class>
    
        </filter>
        <filter-mapping>
            <filter-name>encodingFilter</filter-name>
            <url-pattern>/*</url-pattern>
            <dispatcher> REQUEST</dispatcher>  <!--这个配置可以限制通过何种请求才会调用到这个过滤器-->
            <dispatcher> FORWARD</dispatcher>   <!--这个配置可以限制通过何种请求才会调用到这个过滤器-->
        </filter-mapping>

    验证登录小demo

     public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
            HttpServletRequest request = (HttpServletRequest)servletRequest;
            HttpServletResponse response = (HttpServletResponse)servletResponse;
    
            String requestURI = request.getRequestURI();
            HttpSession session = request.getSession();
        
         //先放行登录的资源
    if(requestURI.contains("/login.jsp") || requestURI.contains("/css/") || requestURI.contains("/loginServlet")|| requestURI.contains("/js/")|| requestURI.contains("/checkCodeServlet") ){ filterChain.doFilter(request,response); }else {         
          //如果不是登录的资源则判断用户是否登录 如果登录则放行,如果没有登录则跳转
    Object user
    = session.getAttribute("user"); if(user != null){ filterChain.doFilter(request,response); }else{ //没有登录 需要跳转 request.setAttribute("login_msg","请先登录"); request.getRequestDispatcher("/login.jsp").forward(request,response); } } }
    坚持
  • 相关阅读:
    Codeforces Round #518 (Div. 1) Computer Game 倍增+矩阵快速幂
    BZOJ2756 [SCOI2012]奇怪的游戏 最大流
    Codeforces Global Round 1 (CF1110) (未完结,只有 A-F)
    [AtCoder] NIKKEI Programming Contest 2019 (暂缺F)
    [AtCoder] Yahoo Programming Contest 2019
    Codeforces Round #538 (Div. 2) (CF1114)
    [BZOJ3625][Codeforces Round #250]小朋友和二叉树 多项式开根+求逆
    [BZOJ2341][Shoi2011]双倍回文 manacher+std::set
    [BZOJ4278] [ONTAK2015]Tasowanie 贪心+后缀数组
    [BZOJ3451] Tyvj1953 Normal 点分治+FFT
  • 原文地址:https://www.cnblogs.com/gaoSJ/p/12931894.html
Copyright © 2011-2022 走看看