filter的使用 java 过滤器的几种使用方法

Python014

filter的使用 java 过滤器的几种使用方法,第1张

过滤器

过滤器是处于客户端与服务器资源文件之间的一道过滤网,在访问资源文件之前,通过一系列的过滤器对请求进行修改、判断等,把不符合规则的请求在中途拦截或修改。也可以对响应进行过滤,拦截或修改响应。

如图,浏览器发出的请求先递交给第一个filter进行过滤,符合规则则放行,递交给filter链中的下一个过滤器进行过滤。过滤器在链中的顺序与它在web.xml中配置的顺序有关,配置在前的则位于链的前端。当请求通过了链中所有过滤器后就可以访问资源文件了,如果不能通过,则可能在中间某个过滤器中被处理掉。

在doFilter()方法中,chain.doFilter()前的一般是对request执行的过滤操作,chain.doFilter后面的代码一般是对response执行的操作。过滤链代码的执行顺序如下:

过滤器一般用于登录权限验证、资源访问权限控制、敏感词汇过滤、字符编码转换等等操作,便于代码重用,不必每个servlet中还要进行相应的操作。

filter代码在pujia12345提供的代码上改的;

jsp页面的编码你设成你自己的,我用的是utf-8。

input.jsp输入后,正常跳转到handle.jsp,而禁词已经被过滤。

filter:

package test

import java.io.*

import javax.servlet.*

import java.util.*

public class MyFilter implements Filter

{

private List<String>unString

public void init(FilterConfig filterConfig) throws ServletException

{

unString = new ArrayList<String>()

unString.add("日")

}

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)

throws IOException, ServletException

{

String content = request.getParameter("content")//需要过滤的参数

if(content!=null){

for (int i = 0i <unString.size()i++)

{

String strIllegal = unString.get(i)

if (content.indexOf(strIllegal) >= 0)

{

content = content.replaceAll(strIllegal, "")//非法字符替换成空

}

request.setAttribute("content", content)//为request设置属性保存修改后的值

}

}

chain.doFilter(request, response)

}

public void destroy()

{

//System.out.println("过滤器销毁")

}

}

//---------------------------//

web.xml:

<filter>

<filter-name>myfilter</filter-name>

<filter-class>test.MyFilter</filter-class>

</filter>

<filter-mapping>

<filter-name>myfilter</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>

//---------------------------//

输入页面input.jsp:

<%@page contentType="text/htmlcharset=utf-8"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<title>input.jsp</title>

</head>

<body>

<form action="handle.jsp" method="post">

<input type="text" name="content" />

<input type="submit" value=" 提交 " />

</form>

</body>

</html>

//---------------------------//

input提交的页面handle.jsp:

<%@page contentType="text/htmlcharset=utf-8"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<title>handle.jsp </title>

</head>

<body>

<%

String content = (String)request.getAttribute("content")

out.println(content)

%>

</body>

</html>