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); } } }
    坚持
  • 相关阅读:
    ProtoBuf开发者指南(转)
    kafka的c/c++高性能客户端librdkafka简介
    SQL的执行顺序:
    zookeeper与卡夫卡集群搭建
    记一次ping: unknown host错误
    nginx服务器的rewrite功能
    nginx做http向https的自动跳转
    jQuery数据缓存
    jQuery的无new构建
    位操作符的计算优势
  • 原文地址:https://www.cnblogs.com/gaoSJ/p/12931894.html
Copyright © 2011-2022 走看看