过滤器---过滤敏感词汇和长度
2017-05-25 11:45
387 查看
先过滤敏感词汇 再过滤评论长度 双过滤器的使用
结果如下:评论中不允许出现敏感词汇!
代码如下:
comm.jsp
<%@ page pageEncoding="utf-8" contentType="text/html;charset=utf-8" %>
<html>
<head>
<meta charset="utf-8" />
<title>过滤敏感词汇</title>
<style type="text/css">
textarea{
width:140px;
height:55px;
vertical-align:middle;
}
</style>
</head>
<body>
<form action="answer.do" method="post">
<fieldset>
<legend>评论</legend>
请输入评论:<textarea name="comm">
</textarea><br>
<input type="submit" value="发表评论"/>
</fieldset>
</form>
</body>
</html>
主程序:
package web;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class MainServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
//获取请求路径
String path = req.getServletPath();
if("/comm.do".equals(path)){
comm(req,res);
}else if("/answer.do".equals(path)){
answer(req,res);
}
}
protected void comm(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
req.getRequestDispatcher("comm.jsp").forward(req, res);
}
protected void answer(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
//接收请求参数
req.setCharacterEncoding("utf-8");
res.setContentType("text/html;charset=utf-8");
String comm = req.getParameter("comm").trim();
PrintWriter out = res.getWriter();
out.println("内容为:"+comm);
out.close();
}
}
两个过滤器:
package web;
import java.io.IOException;
import java.io.PrintWriter;
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 CommFilter1 implements javax.servlet.Filter {
private String words;
public void destroy() {
}
//只过滤/answer.do请求
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest)req;
HttpServletResponse response = (HttpServletResponse)res;
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
String s = request.getServletPath();
if(!"/answer.do".equals(s)){
chain.doFilter(request, response);
return;
}
//获取请求参数
String comm = request.getParameter("comm");
if(comm != null && comm.indexOf(words)!= -1){//有敏感词汇
PrintWriter out = response.getWriter();
out.println("评论中不允许出现敏感词汇!");
out.close();
return;
}
chain.doFilter(req, res);
}
public void init(FilterConfig cfg) throws ServletException {
words = cfg.getInitParameter("words");
}
}
配置文件:web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
<display-name>jsp5</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>
<servlet>
<servlet-name>main</servlet-name>
<servlet-class>web.MainServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>main</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<!-- 敏感词汇过滤 -->
<filter>
<filter-name>filter1</filter-name>
<filter-class>web.CommFilter1</filter-class>
<init-param>
<param-name>words</param-name>
<param-value>你妈妈</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>filter1</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
<!-- 评论文字长度过滤 -->
<filter>
<filter-name>filter2</filter-name>
<filter-class>web.CommFilter2</filter-class>
<init-param>
<param-name>commLength</param-name>
<param-value>20</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>filter2</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
</web-app>
结果如下:评论中不允许出现敏感词汇!
代码如下:
comm.jsp
<%@ page pageEncoding="utf-8" contentType="text/html;charset=utf-8" %>
<html>
<head>
<meta charset="utf-8" />
<title>过滤敏感词汇</title>
<style type="text/css">
textarea{
width:140px;
height:55px;
vertical-align:middle;
}
</style>
</head>
<body>
<form action="answer.do" method="post">
<fieldset>
<legend>评论</legend>
请输入评论:<textarea name="comm">
</textarea><br>
<input type="submit" value="发表评论"/>
</fieldset>
</form>
</body>
</html>
主程序:
package web;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class MainServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
//获取请求路径
String path = req.getServletPath();
if("/comm.do".equals(path)){
comm(req,res);
}else if("/answer.do".equals(path)){
answer(req,res);
}
}
protected void comm(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
req.getRequestDispatcher("comm.jsp").forward(req, res);
}
protected void answer(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
//接收请求参数
req.setCharacterEncoding("utf-8");
res.setContentType("text/html;charset=utf-8");
String comm = req.getParameter("comm").trim();
PrintWriter out = res.getWriter();
out.println("内容为:"+comm);
out.close();
}
}
两个过滤器:
package web;
import java.io.IOException;
import java.io.PrintWriter;
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 CommFilter1 implements javax.servlet.Filter {
private String words;
public void destroy() {
}
//只过滤/answer.do请求
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest)req;
HttpServletResponse response = (HttpServletResponse)res;
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
String s = request.getServletPath();
if(!"/answer.do".equals(s)){
chain.doFilter(request, response);
return;
}
//获取请求参数
String comm = request.getParameter("comm");
if(comm != null && comm.indexOf(words)!= -1){//有敏感词汇
PrintWriter out = response.getWriter();
out.println("评论中不允许出现敏感词汇!");
out.close();
return;
}
chain.doFilter(req, res);
}
public void init(FilterConfig cfg) throws ServletException {
words = cfg.getInitParameter("words");
}
}
package web; import java.io.IOException; import java.io.PrintWriter; 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 CommFilter2 implements Filter { private Integer commLength; public void destroy() { } public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest) req; HttpServletResponse response = (HttpServletResponse) res; request.setCharacterEncoding("utf-8"); response.setContentType("text/html;charset=utf-8"); String s = request.getServletPath(); //只过滤/answer.do请求 if(!"/answer.do".equals(s)){ chain.doFilter(request, response); return; } //获取请求参数 String comm = request.getParameter("comm"); if(comm != null && comm.length()>commLength){ PrintWriter out = response.getWriter(); out.println("评论内容过长 !"); out.close(); return; } chain.doFilter(request, response); } public void init(FilterConfig cfg) throws ServletException { commLength = Integer.parseInt(cfg.getInitParameter("commLength")); } }
配置文件:web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
<display-name>jsp5</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>
<servlet>
<servlet-name>main</servlet-name>
<servlet-class>web.MainServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>main</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<!-- 敏感词汇过滤 -->
<filter>
<filter-name>filter1</filter-name>
<filter-class>web.CommFilter1</filter-class>
<init-param>
<param-name>words</param-name>
<param-value>你妈妈</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>filter1</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
<!-- 评论文字长度过滤 -->
<filter>
<filter-name>filter2</filter-name>
<filter-class>web.CommFilter2</filter-class>
<init-param>
<param-name>commLength</param-name>
<param-value>20</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>filter2</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
</web-app>
相关文章推荐
- javaWed项目中用过滤器实现转码功能,敏感词汇过滤更能,处理Get和Post接收数据中的中文乱码问题以及敏感词汇的处理
- 过滤器-过滤敏感词汇
- java项目过滤敏感词汇
- 过滤敏感词汇
- 正则过滤敏感词汇
- 使用过滤器实现敏感词的过滤
- 【过滤器】(4)过滤器的应用案例:留言板敏感词过滤技术(包装模式)
- 过滤敏感词汇
- PHP 敏感词汇过滤
- 字符串多模式精确匹配(脏字/敏感词汇/关键字过滤算法)——TTMP算法 之实战F模式
- java 过滤器对敏感词过滤
- Msyql过滤敏感词汇语句
- 责任链模式-通过自定义过滤器过滤javascript代码和敏感字符。
- 敏感词汇过滤(不区分大小写)
- 敏感词汇过滤DFA算法
- response中 ,通过过滤器 实现敏感词过滤
- 敏感词汇过滤(单例)
- 用内容过滤器过滤敏感信息
- 过滤敏感词汇
- 使用过滤器实现敏感词的过滤