示例:定义一个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过滤非法字符的更多相关文章

  1. 使用Filter过滤非法内容

    1.首先,需要编写一个响应的封装器ResponseReplaceWrapper,用它来缓存response中的内容,代码如下: ResponseReplaceWrapper.java package ...

  2. C#基础-replace()过滤非法字符

    string FilterfileName(string strName) { string result=string.Empty ; if (string.IsNullOrWhiteSpace(s ...

  3. ThinkPHP 3.2 开放 cache注缓存,过滤非法字符

    打开缓存配置文件 /Application/Common/conf/cache.php源代码如下面: <?php return array( //'配置项'=>'配置值' 'LAYOUT_ ...

  4. js 过滤非法字符

    demo = 'zhang#@$san'; reg=/[`~!@#$%^&*()_+<>?:"{},.\/;'[\]]/im; if(reg.test(demo)){ t ...

  5. Spring Filter过滤表单中的非法字符

    使用Spring Filter过滤表单中的非法字符 1 package test.filter; 2 3 import java.io.IOException; 4 import java.util. ...

  6. Java Filter过滤xss注入非法参数的方法

    http://blog.csdn.NET/feng_an_qi/article/details/45666813 Java Filter过滤xss注入非法参数的方法 web.xml: <filt ...

  7. java 非法字符过滤 , 半角/全角替换

    java 非法字符过滤 , 半角/全角替换 package mjorcen.netty.test1; import java.io.UnsupportedEncodingException; publ ...

  8. windows文件名非法字符过滤检测-正则表达式

    过滤文件名非法字符 windows现在已知的文件名非法字符有 \ / : * ? " < > | var reg = new RegExp('[\\\\/:*?\"&l ...

  9. Java正则表达式过滤并消除非法字符

    package sd; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * * @author 大汉 * */ ...

随机推荐

  1. cadence通过孔焊盘的制作

    1 首先制作flash 1)制作焊盘前先计算好各项数据 thermal relief(热风焊盘):内径(ID)= 孔径 +20mil    外径(OD)= Anti_pad的直径= Regular p ...

  2. CentOS安装 pure-ftpd

    yum -y install pam-devel cd /usr/local .tar.gz cd pure-ftpd- ./configure --prefix=/usr/local/pure-ft ...

  3. VS2013中自动缩进和注释的快捷键

    自动缩进: ctrl +k 再 ctrl +f 注释: ctrl+k 再 ctrl +c 取消注释: ctrl+k 再 ctrl+u

  4. android ble connect slowly

    Hi I'm writing an Android app to connect to a BLE peripheral device. Android 4.4.2, Galaxy Nexus. I ...

  5. 典型的js页面

    var myurl; var mydata; var postype = "POST"; var getype = "GET"; var jsontype = ...

  6. oracle里如何将两个日期的时间差返回**时**分的格式

    SELECT EXTRACT(DAY FROM (sysdate-to_date('2012-03-29 00:00:00','YYYY-MM-DD HH24:MI:ss')) DAY TO SECO ...

  7. 《C++Primer》复习——with C++11 [2]

    1.数组引用形参,C++允许将变量定义成数组的引用,给予同样的道理,形参也可以是数组的引用,此时引用形参绑定到对应的实参上,也就是绑定到数组上 ]) { for (auto elem : arr) c ...

  8. 2186: [Sdoi2008]沙拉公主的困惑 - BZOJ

    Description 大富翁国因为通货膨胀,以及假钞泛滥,政府决定推出一项新的政策:现有钞票编号范围为1到N的阶乘,但是,政府只发行编号与M!互质的钞票.房地产第一大户沙拉公主决定预测一下大富翁国现 ...

  9. smarty中的母板极制_extends和block标签

    模板继承 继承是从面向对象编程而来的概念,模板继承可以让你定义一个或多个父模板,提供给子模板来进行扩展. 扩展继承意味着子模板可以覆盖部分或全部父模板的块区域. 继承结构可以是多层次的,所以你可以继承 ...

  10. EXT--当defaultType与items的子组件默认xtype冲突时items的子组件的xtype为panel

    示例图 直接看下面示例代码: /** * 获取导入表单 * @returns {Ext.FormPanel} */ function getImportForm() { return new Ext. ...