`
icarusliu
  • 浏览: 237186 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

jsp过滤器

    博客分类:
  • web
阅读更多

 过滤器 API 包含 3 个简单的接口,它们整洁地嵌套在 javax.servlet 包中。那 3 个接口分别是 Filter 、 FilterChain 和 FilterConfig 。从编程的角度看,过滤器类将实现 Filter 接口,然后使用这个过滤器类中的 FilterChain 和 FilterConfig 接口。该过滤器类的一个引用将传递给 FilterChain 对象,以允许过滤器把控制权传递给链中的下一个资源。 FilterConfig 对象将由容器提供给过滤器,以允许访问该过滤器的初始化数据。

为了与我们的三步模式保持一致,过滤器必须运用三个方法,以便完全实现 Filter 接口:

init() :这个方法在容器实例化过滤器时被调用,它主要设计用于使过滤器为处理做准备。该方法接受一个 FilterConfig 类型的对象作为输入。

doFilter() :与 servlet 拥有一个 service() 方法(这个方法又调用 doPost() 或者 doGet() )来处理请求一样,过滤器拥有单个用于处理请求和响应的方法?D?D doFilter() 。这个方法接受三个输入参数:一个 ServletRequest 、 response 和一个 FilterChain 对象。

destroy() :正如您想像的那样,这个方法执行任何清理操作,这些操作可能需要在自动垃圾收集之前进行。

SessionFilter.java

package net.pms.web.filter;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpServletResponseWrapper;

/**
* @author jfish
* @since 2006.1.12
*/
public class SessionFilter implements Filter {

     public static boolean isContains(String container, String[] regx) {
           boolean result = false;

           for (int i = 0; i < regx.length; i++) {
                 if (container.indexOf(regx[i]) != -1) {
                       return true;
                 }
           }
           return result;
     }

     public FilterConfig config;

     public void setFilterConfig(FilterConfig config) {
           this.config = config;
     }

     public FilterConfig getFilterConfig() {
           return config;
     }

     public void doFilter(ServletRequest request, ServletResponse response,
                 FilterChain chain) throws IOException, ServletException {

           HttpServletRequest httpreq = (HttpServletRequest) request;
           HttpServletResponse httpres = (HttpServletResponse) response;

           HttpServletResponseWrapper wrapper = new HttpServletResponseWrapper(
                       (HttpServletResponse) response);
           String logonStrings = config.getInitParameter("logonStrings");
           String includeStrings = config.getInitParameter("includeStrings");
           String redirectPath = httpreq.getContextPath()
                       + config.getInitParameter("redirectPath");
           String disabletestfilter = config.getInitParameter("disabletestfilter");

           if (disabletestfilter.toUpperCase().equals("Y")) {
                 chain.doFilter(request, response);
                 return;
           }
           String[] logonList = logonStrings.split(";");
           String[] includeList = includeStrings.split(";");
           Object user = httpreq.getSession().getAttribute("userinfo");
           if (user == null) {
                 if (!this.isContains(httpreq.getRequestURI(), includeList)) {
                       chain.doFilter(request, response);
                       return;
                 }
                 if (this.isContains(httpreq.getRequestURI(), logonList)) {
                       chain.doFilter(request, response);
                       return;
                 }
                 wrapper.sendRedirect(redirectPath);

           } else {
                 chain.doFilter(request, response);
           }
     }

     public void destroy() {
           this.config = null;
     }

     public void init(FilterConfig filterConfig) throws ServletException {
           this.config = filterConfig;
     }
}
 


4.配置 Servlet 过滤器
在web.xml中:

<filter>
           <filter-name>SessionFilter</filter-name>
           <filter-class>net.pms.web.filter.SessionFilter</filter-class>
           <init-param>
                 <param-name>logonStrings</param-name>
                 <param-value>login.jsp</param-value>
           </init-param>
           <init-param>
                 <param-name>includeStrings</param-name>
                 <param-value>.jsp;.html</param-value>
           </init-param>
           <init-param>
                 <param-name>redirectPath</param-name>
                 <param-value>/login.jsp</param-value>
           </init-param>
           <init-param>
                 <param-name>disabletestfilter</param-name>
                 <param-value>N</param-value>
           </init-param>
     </filter>
      <filter-mapping>
           <filter-name>SessionFilter</filter-name>
           <url-pattern>/*</url-pattern>
     </filter-mapping>
 

其中参数logonStrings,登陆页面
includeStrings,过滤页面参数
redirectPath,没有登陆转向页面
disabletestfilter,过滤器是否有效。

 

分享到:
评论

相关推荐

    jsp过滤器的使用(含一个project实例说明)

    **JSP过滤器详解与项目实例** 在Java Web开发中,JSP(JavaServer Pages)是用于创建动态网页的一种技术,而过滤器(Filter)则是Servlet API中的一部分,用于处理HTTP请求和响应,提供了一种预处理和后处理请求的...

    jsp过滤器(编码)

    在标题“jsp过滤器(编码)”中,我们关注的是如何使用过滤器来处理编码问题。在`web.xml`配置文件中,我们可以定义一个过滤器来设定请求和响应的编码格式。以下是一个示例配置: ```xml &lt;filter-name&gt;...

    jsp 过滤器——解决中文乱码问题

    ### jsp过滤器——解决中文乱码问题 #### 背景介绍 在Web应用开发过程中,特别是使用Java Server Pages (JSP)进行中文字符处理时,经常遇到的一个问题是中文字符显示为乱码。这主要是因为客户端与服务器端之间存在...

    老师给的jsp过滤器

    JSP过滤器是Servlet规范的一部分,它遵循`javax.servlet.Filter`接口。过滤器通过在请求到达目标资源(如Servlet、JSP页面)之前拦截请求,以及在响应返回给客户端之前拦截响应,实现了对HTTP请求和响应的透明处理。...

    jsp过滤器与监听器

    jsp过滤器与监听器,很好的讲课和学习的ppt

    jsp过滤器开发

    【jsp过滤器开发】 在JavaEE的Web应用中,过滤器(Filter)是Servlet2.3和JSP1.2规范引入的重要组件,它在处理HTTP请求和响应时扮演着关键角色。过滤器的主要功能是对请求和响应进行预处理和后处理,允许开发者在...

    jsp过滤器及乱码的解决

    【JSP过滤器及乱码解决详解】 在Web开发中,字符编码问题一直是困扰开发者的重要问题,特别是当涉及到多语言环境时。JSP过滤器的使用可以帮助我们有效地处理字符编码,确保数据在不同组件之间的一致性和正确性。...

    JSP过滤器方式无损坏给图片添加水印

    首先,我们需要了解JSP过滤器的基本概念。在Servlet规范中,过滤器是拦截请求和响应的组件,可以在请求到达目标资源之前或响应离开目标资源之后进行预处理和后处理。它们是基于Delegation模型工作的,通过`doFilter...

    jsp 过滤器中文乱码的处理

    本篇文章将详细讲解如何处理JSP中的中文乱码以及如何通过过滤器(Filter)来解决这一问题。 首先,中文乱码的处理主要涉及到字符集(Charset)的概念。在JSP中,当请求参数包含中文字符时,如果不设定字符编码,...

    JSP过滤器

    **JSP过滤器详解** JSP(JavaServer Pages)过滤器是Servlet API的一部分,它允许开发者在请求到达目标资源(如JSP页面、Servlet等)之前或之后进行处理。过滤器是实现动态网页应用程序功能扩展的重要工具,尤其...

    jsp字符过滤器

    JSP过滤器是基于Servlet规范的Filter接口实现的,它可以拦截请求,对请求和响应进行预处理或后处理。在`web.xml`配置文件中,我们定义一个filter和filter-mapping,指定过滤器的类和需要拦截的URL模式。 ```xml ...

    jsp中的过滤器(含例子)

    本篇将深入讲解`JSP`中的过滤器,并通过实例来帮助理解其工作原理和应用场景。 首先,我们需要了解`Filter`的基本概念。过滤器是一个实现了`javax.servlet.Filter`接口的类,它可以拦截HTTP请求并进行预处理,或者...

    JSP过滤器防止Xss漏洞的实现方法(分享).docx

    JSP过滤器提供了一种更为统一和高效的方式来解决这个问题。在上述例子中,我们创建了一个名为`XssFilter`的Servlet过滤器,它实现了`javax.servlet.Filter`接口。这个过滤器在请求到达业务层之前拦截它们,并使用`...

    jsp用过滤器解决中文乱码问题的方法.docx

    为了解决这个问题,我们可以使用jsp过滤器来实现编码设置。我今天要分享的就是使用jsp过滤器解决中文乱码问题的方法。 什么是jsp过滤器? jsp过滤器(Filter)是一种特殊的jsp组件,用于对jsp页面的请求和响应进行...

    JSP过滤器防止Xss漏洞的实现方法(分享)

    JSP过滤器是一种有效的防止XSS攻击的方法,通过在请求进入业务逻辑之前对输入数据进行处理,过滤掉可能包含恶意代码的字符。 首先,我们来理解Servlet过滤器的工作原理。Servlet过滤器是Java Servlet API的一部分,...

    JSP过滤器Filter配置过滤类型全部汇总

    JSP过滤器(Filter)是Servlet技术中的一个组件,用于对进入目标资源(如Servlet、JSP页面)的请求和/或从目标资源发出的响应进行干预和处理。这篇文章汇总了在web.xml文件中配置JSP过滤器Filter的多种方法,介绍了...

    Jsp中使用过滤器实现用户权限限制功能

    本文将深入探讨如何在JSP中利用过滤器实现用户权限限制功能。 首先,我们需要了解过滤器的概念。在Servlet规范中,过滤器是Java Web应用中的一个组件,它可以在请求被Servlet处理之前和之后执行一些预处理或后处理...

    jsp filter 过滤器判断用户是否登录

    ### JSP Filter 过滤器判断用户是否登录 在Web应用开发中,权限验证是非常重要的一个环节。通过使用过滤器(Filter),可以在请求到达目标资源(如Servlet或JSP页面)之前进行处理,例如实现登录状态检查、权限验证...

    JSP用过滤器解决request getParameter中文乱码问题.docx

    过滤器在Servlet容器中扮演着拦截请求和响应的角色,可以在请求到达目标资源(如JSP页面)之前对其进行预处理,包括设置合适的字符编码,以确保中文字符正确解析。下面将详细介绍如何使用过滤器来解决这个问题。 ...

Global site tag (gtag.js) - Google Analytics