简单使用jstl实现敏感字替换

package com.ceshi;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;

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 CharFilter implements Filter{
    private ArrayList<String> list = new ArrayList<String>();
    @Override
    public void destroy() {
        // TODO 自动生成的方法存根

    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
            throws IOException, ServletException {
        HttpServletRequest req = (HttpServletRequest)request;
        HttpServletResponse rep=(HttpServletResponse)response;
        MyRequest mreq = new MyRequest(req);

        chain.doFilter(mreq, rep);
    }

    @Override
    public void init(FilterConfig cfg) throws ServletException {
        String val=cfg.getInitParameter("dirtywords");
        String[] ss=val.split(",");
        list.addAll(Arrays.asList(ss));

    }
    class MyRequest extends HttpServletRequestWrapper{
        private HttpServletRequest request;
        public MyRequest(HttpServletRequest request) {
            super(request);
            this.request=request;

        }
        @Override
        public String getParameter(String name) {
            String txt=this.request.getParameter("txt");
            for(String s:list){
                txt=txt.replaceAll(s, "**");
            }
            return txt;
        }

    }

}
package com.ceshi;

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.HttpServletResponse;

public class TestFilter implements Filter{

    @Override
    public void destroy() {
        // TODO 自动生成的方法存根

    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
            throws IOException, ServletException {
        // TODO 自动生成的方法存根
        //HttpServletRequest req=(HttpServletRequest)request;
        //HttpServletResponse rep = (HttpServletResponse)response;
        request.setCharacterEncoding("utf-8");
        response.setCharacterEncoding("utf-8");
        //response.getWriter().write("kaishi");
        chain.doFilter(request, response);
        //response.getWriter().write("jieshu");
    }

    @Override
    public void init(FilterConfig arg0) throws ServletException {
        // TODO 自动生成的方法存根

    }

}
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">

     <filter>
        <filter-name>testfilter</filter-name>
        <filter-class>com.ceshi.TestFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>testfilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
     <filter>
        <filter-name>CharFilter</filter-name>
        <filter-class>com.ceshi.CharFilter</filter-class>
        <init-param>
            <param-name>dirtywords</param-name>
            <param-value>tmd,cnm,nmb</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>CharFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

  <display-name>Test0213pm</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
</web-app>

NewFile.jsp界面:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<form action="txt.jsp" method="post">
<textarea rows="10" cols="20" name="txt">
asdasdadasdtmdnmbasdasdnmb
</textarea>
<input type="submit" value="tijiao"/>
</form>
</body>
</html>

txt.jsp界面:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
${param.txt }
</body>
</html>

实现效果如下:

时间: 2024-10-13 23:05:50

简单使用jstl实现敏感字替换的相关文章

读取敏感词库内容,讲某段字符里面的敏感词替换成*

敏感词过滤SensitivewordFilter.java package aaa; import java.util.HashSet; import java.util.Iterator; import java.util.Map; import java.util.Set; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * @Description: 敏感词过滤 * @Project:test * @A

Java 敏感词过滤,Java 敏感词替换,Java 敏感词工具类

Java 敏感词过滤,Java 敏感词替换,Java 敏感词工具类   =========================== ?Copyright 蕃薯耀 2017年9月25日 http://www.cnblogs.com/fanshuyao/ 一.问题描述 很多对外网站的某些内容都需要过滤敏感词,避免政治与色@情上的问题. 二.解决方案 使用词库进行匹配过滤成 * (星号) Java 敏感词工具类及敏感词词库见附件. 1.下载后,有几个类,主要为WordFilter 这个工具类,使用方法如下

《高效精准》敏感字&amp;词过滤

在网上看到的大部分采用DFA算法,大概思路如下: 1:DFA采用Map的hash机制,将敏感词单个拆分,以第1个字符为key,其他值依旧使用map相连,形成了大map套用小map.. 2:遍历需要过滤的字符串,获取每一个字符,根据get(key)来检测是否为敏感词. 我最开始是想到用正则来提取数据中的敏感数据,然后获取敏感字所在索引位置,再利用StringBuilder.replace(start,end,str)来替换,但经过测试发现使用正则有2个问题: 1:因为是正则要整串匹配,所以效率慢,

django+SQLite搭建轻量级个人博客(七)前端页面敏感词替换

前端页面keyword替换实现机制是:使用django模板filter,但是需要通过自定义filter方式实现.步骤和效果见下述内容. 1.使用@register.filter() 和 @register.simple_tag() 实现页面敏感词替换 2.templatetags 文件夹是 python Package 类型,且名字必须是templatetags 具体内容见下图(url简单就省略了): 原文地址:https://www.cnblogs.com/xuexizongjie/p/117

JavaScript 编写代码对用户输入内容的输入框进行排查,看有没有敏感字“草”字

代码如下: var input = prompt("请输入您要搜索的内容:"); //一个弹窗 var arr = input; //弹窗输入的内容保存在数组中 var index = input.indexOf("草"); //从头开始检测草下标的位置,0为起始点 document.write("你输入的一串字为:",arr); //输出用户在弹框中输入的所有 document.write("<br/>"); /

修改敏感字

代码如下: /*正则表达式*/// 替换// 替换敏感词// var str ="纪委负责全国党员干部的纪检和纪检监察工作,";// 纪委 **// 纪检 **// 纪检监察 ****// 第一个字纪// 第二个字委或检 如果是检 /* var str="强调,当前各级党组织和党员.干部贯彻执行党的群众路线情况是好的,党群干群关系也是好的,广大党员.干部发挥了先锋模范作用,赢得了广大人民群众肯定和拥护. " var reg = /党/g; //global var

越简单越流行,一字带凉鞋演绎简约时髦范

号称"凉鞋界小黑裙"的一字带凉鞋绝对是夏日街头出镜率超高的凉鞋单品,看似简约风的造型设计非但没有因为单调而被埋没,反而更容易受到时尚潮人的青睐.一字带高跟凉鞋不但好看显脚小,而且非常百搭,是广大女性的喜爱. 一字带凉鞋看似简单,相关衣着搭配其实也很有讲究,不论是同色互搭还是使用互补色提亮,各种颜色搭配小技巧一定能够起到让人眼前一亮的效果,发挥大作用. 皮肤够白的话穿上浅金属色高跟能够拉长腿部至脚跟的视觉比,比如小个子周冬雨穿的这双,没有过于单薄的同时,又和短裙相衬显腿长. 细款一字带凉

JSTL fn:replace()函数替换 换行符

转自:http://blog.163.com/chenjie_8392/blog/static/439339842010513128139/ 近日在使用textarea时,输入了回车,为了将textarea的多行文本内容作为一行显示,需要采用fn:replace函数进行处理. 但是测试很多次都不可以: 1. 使用 ${fn: replace(source,'\n','')},这样会提示错误,如果换成\\n不会进行替换. 2. 使用${fn:replace(source,'\\\\n','')},

简单实用jstl实现代码编写

package com.ceshi; import java.io.IOException; import javax.servlet.jsp.JspException; import javax.servlet.jsp.tagext.*; public class TestTag extends SimpleTagSupport { private String outerTagName="p"; public String getOuterTagName() { return ou