Filter过滤非法字符

示例:定义一个Filter,用于用户发言中出现的“晕”字,即如果没有这个字则允许发言,如果有这个字则不允许发言并提示错误。

CharForm.jsp

 <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

 <html>
<head></head> <body>
<%-- 表单,提交方式为post,提交到DoGetDemo --%>
<form action="ShowContent.jsp" method="post">
用户名:<input type="text" name="username"><br />
发言:<br />
<textarea name="charContent" rows="20" cols="40"></textarea><br />
<input type="submit" value="提交">
<input type="reset" value="重置">
</form>
</body>
</html>

浏览器显示:

Filter过滤非法字符

CharFilter.java

 package com.mhb;

 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; public class CharFilter implements Filter { public void init(FilterConfig arg0) throws ServletException {
System.out.println("非法文字过滤器初始化!");
}
public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain arg2) throws IOException, ServletException {
//设置参数的接收格式
HttpServletRequest request = (HttpServletRequest)arg0;
//设置参数的编码格式
request.setCharacterEncoding("utf-8");
//接收聊天内容
String charContent = request.getParameter("charContent"); if(charContent != null){
// 等号右边的-1表示没有找到该字符串,
//0表示该字符串位于第一个字符,1表示位于第二个字符。
if(charContent.indexOf("晕")== -1){
arg2.doFilter(arg0, arg1);
}else{
request.getRequestDispatcher("/SendFailure.jsp").forward(arg0, arg1);
}
}else{
arg2.doFilter(arg0, arg1);
}
}
public void destroy() {
System.out.println("非法文字过滤器销毁!");
}
}

ShowContent.jsp

 <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

 <html>
<head><title>发言成功!</title></head>
<body>
<center>
<h1>发言成功</h1>
用户名:${param.username}<br />
发言内容:${param.charContent }
</center>
</body>
</html>

SendFailure.jsp

 SendFailure .txt
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <html>
<head><title>发言失败</title></head> <body>
<center>
<h1>发言失败,含有非法字符!</h1>
</center>
</body>
</html>

web.xml配置

  <filter>
<filter-name>CharFilter</filter-name>
<filter-class>com.mhb.CharFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>CharFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

以上为所涉及到的代码,下面输入不含“晕”的发言内容

Filter过滤非法字符

发言内容中包含“晕”字,直接跳转到发言失败页面。

Filter过滤非法字符

上一篇:STL --> vector向量


下一篇:c# 检测是否有Sql非法字符