java脏字过滤_分享JavaWeb中filter过滤器的案例妙用 - 脏话过滤/编码过滤/代码过滤...
案例1. 利用Servlet的过滤器Filter进行完成脏话过滤
package cn.javabs.filter;
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;
import javax.servlet.http.HttpServletRequestWrapper;
import javax.servlet.http.HttpServletResponse;
public class DirtyWordsFilterDemo implements Filter {
public void init(FilterConfig filterConfig) throws ServletException {
}
public void doFilter(ServletRequest req, ServletResponse resp,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest request;
HttpServletResponse response;
try{
request = (HttpServletRequest)req;
response = (HttpServletResponse)resp;
}catch(Exception e){
throw new RuntimeException("non-http request");
}
DirtyWordHttpServletRequest dwrequest = new DirtyWordHttpServletRequest(request);
chain.doFilter(dwrequest, response);
}
public void destroy() {
}
}
class DirtyWordHttpServletRequest extends HttpServletRequestWrapper{
private String strs[] = {"傻逼","畜生","我去年买了个包"};
private HttpServletRequest request;
public DirtyWordHttpServletRequest(HttpServletRequest request){
super(request);
this.request = request;
}
@Override
public String getParameter(String name) {
String value = request.getParameter(name);
if(value==null)
return null;
for(String s:strs){
if(value.contains(s)){
value = value.replace(s, "**");
}
}
return value;
}
}
案例2. 利用Servlet的过滤器Filter进行完成Html编码过滤
package cn.javabs.filter;
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;
import javax.servlet.http.HttpServletRequestWrapper;
import javax.servlet.http.HttpServletResponse;
public class HtmlFilterDemo implements Filter {
public void init(FilterConfig filterConfig) throws ServletException {
}
public void doFilter(ServletRequest req, ServletResponse resp,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest request;
HttpServletResponse response;
try{
request = (HttpServletRequest)req;
response = (HttpServletResponse)resp;
}catch(Exception e){
throw new RuntimeException("non-http request");
}
HtmlHttpServletRequest hrequest = new HtmlHttpServletRequest(request);
chain.doFilter(hrequest, response);
}
public void destroy() {
}
}
class HtmlHttpServletRequest extends HttpServletRequestWrapper{
private HttpServletRequest request;
public HtmlHttpServletRequest(HttpServletRequest request){
super(request);
this.request = request;
}
@Override
public String getParameter(String name) {
String value = request.getParameter(name);
if(value==null)
return null;
value = htmlFilter(value);
return value;
}
private String htmlFilter(String message) {
if (message == null)
return (null);
char content[] = new char[message.length()];
message.getChars(0, message.length(), content, 0);
StringBuffer result = new StringBuffer(content.length + 50);
for (int i = 0; i < content.length; i++) {
switch (content[i]) {
case '
result.append("<");
break;
case '>':
result.append(">");
break;
case '&':
result.append("&");
break;
case '"':
result.append(""");
break;
default:
result.append(content[i]);
}
}
return (result.toString());
}
}
案例3. 利用Servlet的过滤器Filter进行完成字符编码过滤(Get及Post方式)
package cn.javabs.filter;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
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;
import javax.servlet.http.HttpServletRequestWrapper;
import javax.servlet.http.HttpServletResponse;
/**
* 同时解决GET及POST请求参数和响应输出的编码过滤器
*/
public class SetAllEncodingFilterDemo implements Filter {
private FilterConfig filterConfig;
public void init(FilterConfig filterConfig) throws ServletException {
this.filterConfig = filterConfig;
}
public void doFilter(ServletRequest req, ServletResponse resp,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest request;
HttpServletResponse response;
try{
request = (HttpServletRequest)req;
response = (HttpServletResponse)resp;
}catch(Exception e){
throw new RuntimeException("non-http request");
}
String encoding = "UTF-8";
String value = filterConfig.getInitParameter("encoding");
if(value!=null){
encoding = value;
}
request.setCharacterEncoding(encoding);//POST请求方式
response.setContentType("text/html;charset="+encoding);
MyHttpServletRequest mrequest = new MyHttpServletRequest(request);
chain.doFilter(mrequest, response);
}
public void destroy() {
}
}
class MyHttpServletRequest extends HttpServletRequestWrapper{
private HttpServletRequest request;
public MyHttpServletRequest(HttpServletRequest request){
super(request);
this.request = request;
}
public String getParameter(String name) {
String value = request.getParameter(name);
if(value==null)
return value;
try {
if("get".equalsIgnoreCase(request.getMethod()))
value = new String(value.getBytes("ISO-8859-1"),request.getCharacterEncoding());
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return value;
}
}
java脏字过滤_分享JavaWeb中filter过滤器的案例妙用 - 脏话过滤/编码过滤/代码过滤...相关推荐
- java脏话模糊对比_分享JavaWeb中filter过滤器的案例妙用 - 脏话过滤/编码过滤/代码过滤...
案例1. 利用Servlet的过滤器Filter进行完成脏话过滤 package cn.javabs.filter; import java.io.IOException; import javax. ...
- java arraylist 常用方法_分享ArrayList中的几个常用方法的源码
jdk1.7.0_79 上文里解析了有关ArrayList中的几个常用方法的源码--<有关ArrayList常用方法的源码解析>,本文将对LinkedList的常用方法做简要解析. Lin ...
- JavaWeb中filter的详解及应用案例
JavaWeb中filter的详解及应用案例 转载自:http://www.cnblogs.com/vanl/p/5742501.html 一:Filter介绍 Filter可认为是Servlet的一 ...
- java 过滤器 中文_java中Filter过滤器解决中文乱码办法
java中Filter过滤器解决中文乱码办法 发布时间:2020-04-07 10:19:09 来源:亿速云 阅读:16 作者:小新 这篇文章主要为大家详细介绍了java中Filter过滤器解决中文乱 ...
- java 过滤js事件_java中的过滤器与监听器
过滤器: Filter本身并不生成请求和响应对象,只是提供过滤功能. Filter能够在Servlet被调用之前检查Request对象,并修改Request Header和Request内容:在Ser ...
- Java Servlet中Filter过滤器的原理以及使用方式
详细介绍了Java Web Servlet中的Filter过滤器的原理以及常见用法. 文章目录 1 Filter接口 1.1 过滤器的生命周期 1.2 doFilter过滤方法 2 Filter的使用 ...
- lisp调用qleader端点_[分享]lisp中可用command调用的函数全集!!!!
[分享]lisp中可用command调用的函数全集!!!! [em21] [em16] lisp中command命令可以调用的函数全集: 3D 创建三维多边形网格对象 3DARRAY 创建三维阵列 3 ...
- java拦截到登陆界面,JavaWeb 使用Filter实现自动登录
JavaWeb 使用Filter实现自动登录 思路 使用cookie存储账号.密码,使用Filter拦截,从cookie中取出账号.密码.若用户要注销|登出.不再想使用自动登录,将cookie的有效期 ...
- javascript 过滤_功能性JavaScript中的过滤和链接
javascript 过滤 本文由Dan Prince , Vildan Softic和Joan Yinn进行了同行评审. 感谢所有SitePoint的同行评审员使SitePoint内容达到最佳状态! ...
最新文章
- Python的数据处理学习(三)
- openresty开发系列29--openresty中发起http请求
- nginx的请求接收流程(二)
- console 一行_你还在用 console.log 调试?
- Android官方开发文档Training系列课程中文版:手势处理之拖拽或缩放
- django-模板的继承
- api pdo php,从PHP Mysql API转换为PDO时如何处理数据类型
- NSNumber的使用
- AutoCAD2012从入门到精通中文视频教程 第16课 渐变填充,椭圆弧命令(个人收藏)
- openCV学习资料整理
- iOS---Local declaration of hides问题
- Meta Learning在NLP领域的应用
- Android Animations动画使用详解
- 2×24全交换开关矩阵方案
- Python 环境安装系统教程——PyCharm
- c语言常见warning的消除方法及重要性
- 快手极速版56位 sig3
- WPF应用程序生成Word文档测试
- m4r转换工具html加载视频,在线m4r格式转换器
- 2023PS beta 官方注册安装教程