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>
浏览器显示:

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过滤非法内容
1.首先,需要编写一个响应的封装器ResponseReplaceWrapper,用它来缓存response中的内容,代码如下: ResponseReplaceWrapper.java package ...
- C#基础-replace()过滤非法字符
string FilterfileName(string strName) { string result=string.Empty ; if (string.IsNullOrWhiteSpace(s ...
- ThinkPHP 3.2 开放 cache注缓存,过滤非法字符
打开缓存配置文件 /Application/Common/conf/cache.php源代码如下面: <?php return array( //'配置项'=>'配置值' 'LAYOUT_ ...
- js 过滤非法字符
demo = 'zhang#@$san'; reg=/[`~!@#$%^&*()_+<>?:"{},.\/;'[\]]/im; if(reg.test(demo)){ t ...
- Spring Filter过滤表单中的非法字符
使用Spring Filter过滤表单中的非法字符 1 package test.filter; 2 3 import java.io.IOException; 4 import java.util. ...
- Java Filter过滤xss注入非法参数的方法
http://blog.csdn.NET/feng_an_qi/article/details/45666813 Java Filter过滤xss注入非法参数的方法 web.xml: <filt ...
- java 非法字符过滤 , 半角/全角替换
java 非法字符过滤 , 半角/全角替换 package mjorcen.netty.test1; import java.io.UnsupportedEncodingException; publ ...
- windows文件名非法字符过滤检测-正则表达式
过滤文件名非法字符 windows现在已知的文件名非法字符有 \ / : * ? " < > | var reg = new RegExp('[\\\\/:*?\"&l ...
- Java正则表达式过滤并消除非法字符
package sd; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * * @author 大汉 * */ ...
随机推荐
- 每日一“酷”之difflib
介绍:difflib 比较序列.该模块包含一些用来计算和处理序列直接差异的工具.她对于比较文本尤其用,其中包含的函数可以使用多种常用差异格式生成报告. 测试数据(splitlines()按行划分为序列 ...
- Arrays.asList方法总结
import java.util.Arrays; import java.util.List; /** * * 本类演示了Arrays类中的asList方法 * 通过四个段落来演示,体现出了该方法的相 ...
- 基础才是重中之重~理解linq中的groupby
linq将大部分SQL语句进行了封装,这使得它们更加面向对象了,对于开发者来说,这是一件好事,下面我从基础层面来说一下GroupBy在LINQ中的使用. 对GroupBy的多字段分组,可以看我的这篇文 ...
- hash --C++
题目来源:code[VS] 这是一个极其无聊的hash题.... 1230 元素查找 题目描述 Description 给出n个正整数,然后有m个询问,每个询问一个整数,询问该整数是否在n个正整数中出 ...
- Fibonacci数
Fibonacci数 时间限制:3000 ms | 内存限制:65535 KB 难度:1 描述 无穷数列1,1,2,3,5,8,13,21,34,55...称为Fibonacci数列,它可以递 ...
- ASP.NET Web – 状态管理
状态类型 客户端或服务器资源 有效时间 ViewState 客户端 只在一个页面中 Cookie 客户端 关闭浏览器时会删除临时cookie,永久cookie存储在客户系统的磁盘上 Session 服 ...
- input框中value与placeholder的区别
value:是input中预先放置的文字,当鼠标点击之后依然存在,是值的一部分. placeholder:是input中输入位置的默认显示的文字,鼠标点击后仍旧显示,但不属于值,类似于背景.
- 无root权限安装python
http://lujialong.com/?p=150 pipe 安装第三方包 http://www.lfd.uci.edu/~gohlke/pythonlibs/#pip http://www.cn ...
- shell脚本积累
统计当前目录下文件夹的大小 for d in $(ls) do du -sh ./$d done 获取之前日期date +"%Y%m%d" -d "-n days&q ...
- 【BZOJ】【2820】YY的GCD
莫比乌斯反演 PoPoQQQ讲义第二题. 暴力枚举每个质数,然后去更新它的倍数即可,那个g[x]看不懂就算了…… 为什么去掉了一个memset就不T了→_→…… /****************** ...