案例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过滤器的案例妙用 - 脏话过滤/编码过滤/代码过滤...相关推荐

  1. java脏话模糊对比_分享JavaWeb中filter过滤器的案例妙用 - 脏话过滤/编码过滤/代码过滤...

    案例1. 利用Servlet的过滤器Filter进行完成脏话过滤 package cn.javabs.filter; import java.io.IOException; import javax. ...

  2. java arraylist 常用方法_分享ArrayList中的几个常用方法的源码

    jdk1.7.0_79 上文里解析了有关ArrayList中的几个常用方法的源码--<有关ArrayList常用方法的源码解析>,本文将对LinkedList的常用方法做简要解析. Lin ...

  3. JavaWeb中filter的详解及应用案例

    JavaWeb中filter的详解及应用案例 转载自:http://www.cnblogs.com/vanl/p/5742501.html 一:Filter介绍 Filter可认为是Servlet的一 ...

  4. java 过滤器 中文_java中Filter过滤器解决中文乱码办法

    java中Filter过滤器解决中文乱码办法 发布时间:2020-04-07 10:19:09 来源:亿速云 阅读:16 作者:小新 这篇文章主要为大家详细介绍了java中Filter过滤器解决中文乱 ...

  5. java 过滤js事件_java中的过滤器与监听器

    过滤器: Filter本身并不生成请求和响应对象,只是提供过滤功能. Filter能够在Servlet被调用之前检查Request对象,并修改Request Header和Request内容:在Ser ...

  6. Java Servlet中Filter过滤器的原理以及使用方式

    详细介绍了Java Web Servlet中的Filter过滤器的原理以及常见用法. 文章目录 1 Filter接口 1.1 过滤器的生命周期 1.2 doFilter过滤方法 2 Filter的使用 ...

  7. lisp调用qleader端点_[分享]lisp中可用command调用的函数全集!!!!

    [分享]lisp中可用command调用的函数全集!!!! [em21] [em16] lisp中command命令可以调用的函数全集: 3D 创建三维多边形网格对象 3DARRAY 创建三维阵列 3 ...

  8. java拦截到登陆界面,JavaWeb 使用Filter实现自动登录

    JavaWeb 使用Filter实现自动登录 思路 使用cookie存储账号.密码,使用Filter拦截,从cookie中取出账号.密码.若用户要注销|登出.不再想使用自动登录,将cookie的有效期 ...

  9. javascript 过滤_功能性JavaScript中的过滤和链接

    javascript 过滤 本文由Dan Prince , Vildan Softic和Joan Yinn进行了同行评审. 感谢所有SitePoint的同行评审员使SitePoint内容达到最佳状态! ...

最新文章

  1. Python的数据处理学习(三)
  2. openresty开发系列29--openresty中发起http请求
  3. nginx的请求接收流程(二)
  4. console 一行_你还在用 console.log 调试?
  5. Android官方开发文档Training系列课程中文版:手势处理之拖拽或缩放
  6. django-模板的继承
  7. api pdo php,从PHP Mysql API转换为PDO时如何处理数据类型
  8. NSNumber的使用
  9. AutoCAD2012从入门到精通中文视频教程 第16课 渐变填充,椭圆弧命令(个人收藏)
  10. openCV学习资料整理
  11. iOS---Local declaration of hides问题
  12. Meta Learning在NLP领域的应用
  13. Android Animations动画使用详解
  14. 2×24全交换开关矩阵方案
  15. Python 环境安装系统教程——PyCharm
  16. c语言常见warning的消除方法及重要性
  17. 快手极速版56位 sig3
  18. WPF应用程序生成Word文档测试
  19. m4r转换工具html加载视频,在线m4r格式转换器
  20. 2023PS beta 官方注册安装教程

热门文章

  1. BCD编码(8421编码)
  2. Pytorch使用笔记
  3. MAC下SSL通讯问题、解决办法
  4. 消费者心理学:三个趣味经济学原理
  5. 面试别向HR说这六种离职原因
  6. Node.js中LTS和Current的两种版本有啥区别?
  7. Git上传华为云(基于SSH公钥免密)
  8. Red Hat Linux 基础命令大全
  9. 思科路由器:开启telnet和ssh远程登陆
  10. EXCEL之如何批量把文本型数字转化为数字