`

配置过滤器

阅读更多

配置过滤器,通过mapping的url-pattern将访问页面截住,通过import javax.servlet.Filter来进行一些校验处理,
,实现innt(),doFilter(),destory()然后转向页面
  代码:
  public class AccessFilter extends HttpServlet implements Filter {
      private FilterConfig filterConfig;  //Handle the passed-in FilterConfig
   private String loginPage;
      private String[] pageBeforeLogin;
      private final String[] DEFAULT_LOGIN_PAGE={"/login.jsp"};
      /**
       * 获取InitParameter
       * 登录页、不用登录就可以访问的页
       * @param filterConfig FilterConfig
       * @throws ServletException
       */
      public void init(FilterConfig filterConfig) throws ServletException {
        this.filterConfig = filterConfig;
    try
        {
          loginPage=filterConfig.getInitParameter("loginPage");
        }
        catch(java.lang.Exception e)
        {
          loginPage=DEFAULT_LOGIN_PAGE[0];
        }
        try
        {
          pageBeforeLogin=(loginPage + "," + filterConfig.getInitParameter("pageBeforeLogin")).split(",");
        }
        catch(Exception e)
        {
        }
      }
      //Process the request/response pair
      public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) {
        HttpServletRequest req=(HttpServletRequest) request;
        HttpServletResponse res=(HttpServletResponse) response;
        //先判断是否已经登录
 
           HttpSession session= req.getSession();
           if(session!=null&&session.getAttribute(SystemGlobals.LOGINUSERID)!=null){
                doNext(request, response, filterChain);
               return;
           }

           //clientRequest 记录真正的被请求的 URL 比如 /index.jsp;/login.jsp;/
           String clientRequest = req.getServletPath();
           System.out.println(clientRequest);
           for (int i=0;i<pageBeforeLogin.length;i++)
           {
             if (pageBeforeLogin[i].equalsIgnoreCase(clientRequest))
             {
                doNext(request,response,filterChain);
                return;
             }
           }

      //运行到此处说明必须转到登录界面
        try
        {
           //RequestDispatcher rd = this.filterConfig.getServletContext().getRequestDispatcher(loginPage); // req.getRequestDispatcher(loginPage);
           //rd.forward(request, res);
            res.sendRedirect(req.getContextPath()+ loginPage);
            return;
        }
        catch(Exception e)
        {
          e.printStackTrace();
        }

      }
     private void doNext(ServletRequest request, ServletResponse response, FilterChain filterChain)
     {
       try {
              filterChain.doFilter(request, response);
            }
            catch(ServletException sx) {
              filterConfig.getServletContext().log(sx.getMessage());
            }
            catch(IOException iox) {
              filterConfig.getServletContext().log(iox.getMessage());
            }
     }
      //Clean up resources
      public void destroy() {
      }
}
  web.xml配置:
  <filter>
    <filter-name>sessionloginchecker</filter-name>
    <filter-class>com.itsv.chy.system.permission.AccessFilter</filter-class>
    <init-param>
      <param-name>loginPage</param-name>
      <param-value>/system/login.jsp</param-value>
    </init-param>
    <init-param>
      <param-name>pageBeforeLogin</param-name>
      <param-value>/login.do,/logout.do</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>sessionloginchecker</filter-name>
    <url-pattern>index.jsp</url-pattern>
  </filter-mapping>
  <filter-mapping>
    <filter-name>sessionloginchecker</filter-name>
    <url-pattern>/accessAction.do</url-pattern>
  </filter-mapping>

分享到:
评论

相关推荐

    struts2配置过滤器

    ### Struts2配置过滤器详解 #### 一、概述 Struts2是基于MVC模式的一个开源框架,它能够帮助开发者构建出结构清晰且易于维护的Web应用。在实际开发过程中,为了实现某些功能(例如用户认证、权限控制等),往往...

    Java中配置过滤器

    ### Java中配置过滤器 在Java Web开发中,过滤器(Filter)是一种非常重要的机制,它可以在请求到达目标资源之前或响应返回客户端之后执行特定的操作。例如,可以使用过滤器来实现统一的编码设置、安全控制、日志...

    java配置过滤器,解决乱码

    下面我们将深入探讨Java中的乱码问题,以及如何通过配置过滤器来解决这个问题。 首先,我们要理解Java乱码的根源。乱码通常出现在两个主要场景:输入(如POST表单数据)和输出(如JSP页面显示)。在Java Web应用中...

    前端跨域,后端配置过滤器

    解决前后端跨域,java后端配置过滤器

    web.xml中配置过滤器

    在 web.xml 文件中配置过滤器 在 Java Servlet 编程中,过滤器是一个非常重要的概念,它允许开发者截取和修改进入一个 Servlet 或 JSP 页面的请求或从一个 Servlet 或 JSP 页面发出的响应。在 web.xml 文件中配置...

    Servlet配置过滤器 Filter

    ### Servlet配置过滤器Filter知识点详解 #### 一、概述 在Java Web开发中,`Servlet`过滤器(`Filter`)是一种重要的技术组件,它可以在请求到达目标资源(如Servlet或JSP页面)之前或者响应返回客户端之前进行...

    STM32 CAN过滤器滤波器配置详解

    STM32 CAN 过滤器滤波器配置详解 在嵌入式系统中,CAN(Controller Area Network)总线是常见的通信协议之一。...在实际应用中,需要根据自己的实际需要配置过滤器,以确保正确地接收和发送数据帧。

    Springboot配置过滤器实现过程解析

    Springboot配置过滤器实现过程解析 本文主要介绍了Springboot配置过滤器的实现过程解析,通过示例代码详细介绍了过滤器的实现细节,对大家的学习或者工作具有一定的参考学习价值。 Springboot配置过滤器的基础概念...

    Spring 各种过滤器配置大全

    FilterChainProxy会按顺序来调用这些filter,使这些filter能享用Spring Ioc的功能, CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON 定义url比较前先转为小写 PATTERN_TYPE_APACHE_ANT 定义使用Apache ant的匹配模式

    jsp中过滤器配置实现所有过滤

    总结,通过在`web.xml`中正确配置过滤器,我们可以实现对所有JSP请求的统一处理,这在诸如安全控制、性能优化、数据校验等方面具有广泛应用。同时,灵活地利用过滤器配置和初始化参数,可以满足不同场景的需求,提升...

    servlet过滤器实例经典过滤器

    Servlet过滤器是Java Web开发中的一个重要组件,它允许开发者在请求到达...在学习和使用过程中,一定要深入理解Filter接口的方法和生命周期,以及如何在web.xml中正确配置过滤器,这样可以更有效地利用这一强大工具。

    Java servlet过滤器配置详解

    Java Servlet过滤器是Java Web应用程序中的重要组件,它在请求被...理解并熟练配置过滤器对于提升Web应用的质量和性能至关重要。在实践中,结合`web.xml`和自定义过滤器类,我们可以构建出强大且灵活的应用架构。

    STM32的CAN过滤器详解.pdf

    在初始化阶段,可以根据需求激活和配置过滤器,未激活的过滤器不会参与报文筛选。每个FIFO至少需要激活一个过滤器才能正常接收数据。若不打算使用复杂的过滤功能,可以仅激活一组过滤器组,设置为32位屏蔽位模式,...

    servlet过滤器配置,解决JSP的所有乱码

    3. **配置过滤器**:在`web.xml`文件中定义一个过滤器,例如: ```xml &lt;filter-name&gt;EncodingFilter &lt;filter-class&gt;com.example.filter.EncodingFilter&lt;/filter-class&gt; &lt;filter-name&gt;EncodingFilter ...

    管道过滤器程序,主要用java实现

    6. **配置过滤器**:在`web.xml`文件中配置过滤器,指定其过滤范围、初始化参数以及过滤器链的顺序。 7. **Filter的性能优化**:合理设计过滤器链和优化过滤器的处理效率是提高系统性能的关键。避免过度的内存消耗...

    XML常用配置信息 过滤器 监听器

    ### XML常用配置信息详解:过滤器、监听器与Session会话闲置时间 #### 一、XML配置基础 在Java Web开发中,`web.xml`是一个非常重要的配置文件,它主要用于定义Web应用程序的基本结构和行为。该文件是用XML(可...

    【HRMS】SSH整合配置文件,做权限设置的过滤器代码

    同时,合理配置过滤器的执行顺序,避免出现权限检查的遗漏或冗余。 总结起来,【HRMS】SSH整合配置文件,做权限设置的过滤器代码涉及到的知识点包括Struts2的拦截器、Spring的bean管理和安全框架、Hibernate的数据...

    java过滤器例子

    在`web.xml`文件中,通过`&lt;filter&gt;`和`&lt;filter-mapping&gt;`元素来配置过滤器。`&lt;filter&gt;`定义过滤器类,`&lt;filter-mapping&gt;`则指定过滤器应该拦截哪些URL或者Servlet。 ```xml &lt;filter-name&gt;MyFilter ...

    过滤器(Filter)

    `Filter创建.exe`可能是一个用于创建过滤器实例或者配置过滤器的工具,而`说明.txt`可能包含了关于如何使用这个工具或者过滤器的详细步骤和注意事项。 过滤器还可以与其他框架集成,比如Spring MVC中的Filter,可以...

    JAVA Web中过滤器

    从Java Servlet 3.0版本开始,我们还可以使用注解的方式来配置过滤器,无需在web.xml中手动配置,使得代码更加简洁。 通过了解和熟练运用JAVA Web中的过滤器,开发者可以更高效地管理和控制Web应用的输入和输出,...

Global site tag (gtag.js) - Google Analytics