Filter过滤非法字符

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

CharForm.jsp

 1 <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
 2
 3 <html>
 4   <head></head>
 5
 6   <body>
 7 <%-- 表单,提交方式为post,提交到DoGetDemo --%>
 8 <form action="ShowContent.jsp" method="post">
 9 用户名:<input type="text" name="username"><br />
10 发言:<br />
11 <textarea name="charContent" rows="20" cols="40"></textarea><br />
12 <input type="submit" value="提交">
13 <input type="reset" value="重置">
14 </form>
15   </body>
16 </html>

浏览器显示:

CharFilter.java

 1 package com.mhb;
 2
 3 import java.io.IOException;
 4
 5 import javax.servlet.Filter;
 6 import javax.servlet.FilterChain;
 7 import javax.servlet.FilterConfig;
 8 import javax.servlet.ServletException;
 9 import javax.servlet.ServletRequest;
10 import javax.servlet.ServletResponse;
11 import javax.servlet.http.HttpServletRequest;
12
13 public class CharFilter implements Filter {
14
15 public void init(FilterConfig arg0) throws ServletException {
16 System.out.println("非法文字过滤器初始化!");
17 }
18 public void doFilter(ServletRequest arg0, ServletResponse arg1,
19 FilterChain arg2) throws IOException, ServletException {
20 //设置参数的接收格式
21 HttpServletRequest request = (HttpServletRequest)arg0;
22 //设置参数的编码格式
23 request.setCharacterEncoding("utf-8");
24 //接收聊天内容
25 String charContent = request.getParameter("charContent");
26
27 if(charContent != null){
28 // 等号右边的-1表示没有找到该字符串,
29 //0表示该字符串位于第一个字符,1表示位于第二个字符。
30 if(charContent.indexOf("晕")== -1){
31 arg2.doFilter(arg0, arg1);
32 }else{
33 request.getRequestDispatcher("/SendFailure.jsp").forward(arg0, arg1);
34 }
35 }else{
36 arg2.doFilter(arg0, arg1);
37 }
38 }
39 public void destroy() {
40 System.out.println("非法文字过滤器销毁!");
41 }
42 }

ShowContent.jsp

 1 <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
 2
 3 <html>
 4   <head><title>发言成功!</title></head>
 5   <body>
 6       <center>
 7 <h1>发言成功</h1>
 8 用户名:${param.username}<br />
 9 发言内容:${param.charContent }
10 </center>
11   </body>
12 </html>

SendFailure.jsp

 1 SendFailure .txt
 2 <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
 3
 4 <html>
 5   <head><title>发言失败</title></head>
 6
 7   <body>
 8 <center>
 9 <h1>发言失败,含有非法字符!</h1>
10 </center>
11   </body>
12 </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>

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

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

时间: 2024-10-18 02:04:38

Filter过滤非法字符的相关文章

过滤非法字符和发送邮件

1 过滤非法字符和发送邮件 2 1:关于过滤非法字符 3 ********************************************过滤非法字符*********************************************************************************** 4 protected string FilterBadWords(string msg) 5 { 6 string badwords="妈妈的|我靠|操|fuck|sb|b

使用replace()简单过滤非法字符

1 string FilterfileName(string strName) 2 { 3 string result=string.Empty ; 4 if (string.IsNullOrWhiteSpace(strName)) 5 { 6 //do something 7 } 8 else 9 { 10 result = strName.Replace("\\", "_").Replace("/", "_").Repla

ThinkPHP 3.2 开启 cache缓存的注意事项,过滤非法字符

开启缓存的配置文件 /Application/Common/conf/cache.php源码如下: <?php return array( //'配置项'=>'配置值' 'LAYOUT_ON' => true, 'HTML_CACHE_ON' => strpos($_SERVER['HTTP_HOST'], '.') !== false, // 开启静态缓存 默认为 true 本地不开启 'HTML_CACHE_TIME' => 3600, // 全局静态缓存有效期(秒) '

iOS过滤非法字符串

碰到在搜索框中过滤非法字符的问题,传统的用while循环来操作就显得太繁琐,ios 的 NSString 里有相关的方法可以解决此问题.如下: NSCharacterSet *doNotWant = [NSCharacterSet characterSetWithCharactersInString:@"[email protected]#$%^&*+?/="]; tempString = [[tempString componentsSeparatedByCharacters

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

使用Spring Filter过滤表单中的非法字符 1 package test; 2 3 import java.io.IOException; 4 import java.util.Iterator; 5 import java.util.Map; 6 7 import javax.servlet.FilterChain; 8 import javax.servlet.ServletException; 9 import javax.servlet.http.HttpServletReque

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

http://blog.csdn.NET/feng_an_qi/article/details/45666813 Java Filter过滤xss注入非法参数的方法 web.xml: [html] view plain copy <filter> <filter-name>XSSFiler</filter-name> <filter-class> com.paic.mall.web.filter.XssSecurityFilter </filter-c

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

java 非法字符过滤 , 半角/全角替换 package mjorcen.netty.test1; import java.io.UnsupportedEncodingException; public class CharByteConverter { /** * 全角转半角 * * @param str * @return * * @author mjorcen * @email [email protected] * @dateTime Sep 27, 2014 2:51:50 PM *

[C/C++标准库]_[初级]_[过滤Windows文件名中的非法字符]

场景: 1. 通常生成文件时需要一个文件名,而生成文件名的方式可能是通过用户输入的字符,但是有些字符在windows上是不能作为文件名的,强行创建这类文件会失败. 2.一般可以通过正则表达式替换所有的非法字符,这里实现的是C++98 template(模板)方式的替换无效字符,std::string,std::wstring. 基本上windows上和字符串打交道都离不开wstring. 函数: template<class T> void FilterInvalidFileNameChar(

过滤Windows文件名中的非法字符

转载:http://blog.csdn.net/infoworld/article/details/42033097 场景: 1. 通常生成文件时需要一个文件名,而生成文件名的方式可能是通过用户输入的字符,但是有些字符在windows上是不能作为文件名的,强行创建这类文件会失败. 2.一般可以通过正则表达式替换所有的非法字符,这里实现的是C++98 template(模板)方式的替换无效字符,std::string,std::wstring. 基本上windows上和字符串打交道都离不开wstr