Skip to content

Commit 3e7deee

Browse files
committed
敏感词过滤
1 parent 82e376c commit 3e7deee

21 files changed

+295
-0
lines changed

myWordsFilterWeb/.classpath

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<classpath>
3+
<classpathentry kind="src" path="src"/>
4+
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
5+
<classpathentry kind="con" path="melibrary.com.genuitec.eclipse.j2eedt.core.MYECLIPSE_JAVAEE_6_CONTAINER"/>
6+
<classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.web.container"/>
7+
<classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.module.container"/>
8+
<classpathentry kind="output" path="WebRoot/WEB-INF/classes"/>
9+
</classpath>

myWordsFilterWeb/.mymetadata

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<project-module
3+
type="WEB"
4+
name="myWordsFilterWeb"
5+
id="myeclipse.1471510148708"
6+
context-root="/myWordsFilterWeb"
7+
j2ee-spec="6.0"
8+
archive="myWordsFilterWeb.war">
9+
<attributes>
10+
<attribute name="webrootdir" value="WebRoot" />
11+
</attributes>
12+
</project-module>
13+

myWordsFilterWeb/.project

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<projectDescription>
3+
<name>myWordsFilterWeb</name>
4+
<comment></comment>
5+
<projects>
6+
</projects>
7+
<buildSpec>
8+
<buildCommand>
9+
<name>org.eclipse.wst.common.project.facet.core.builder</name>
10+
<arguments>
11+
</arguments>
12+
</buildCommand>
13+
<buildCommand>
14+
<name>org.eclipse.wst.jsdt.core.javascriptValidator</name>
15+
<arguments>
16+
</arguments>
17+
</buildCommand>
18+
<buildCommand>
19+
<name>com.genuitec.eclipse.j2eedt.core.WebClasspathBuilder</name>
20+
<arguments>
21+
</arguments>
22+
</buildCommand>
23+
<buildCommand>
24+
<name>org.eclipse.jdt.core.javabuilder</name>
25+
<arguments>
26+
</arguments>
27+
</buildCommand>
28+
<buildCommand>
29+
<name>com.genuitec.eclipse.j2eedt.core.J2EEProjectValidator</name>
30+
<arguments>
31+
</arguments>
32+
</buildCommand>
33+
<buildCommand>
34+
<name>com.genuitec.eclipse.j2eedt.core.DeploymentDescriptorValidator</name>
35+
<arguments>
36+
</arguments>
37+
</buildCommand>
38+
<buildCommand>
39+
<name>org.eclipse.wst.validation.validationbuilder</name>
40+
<arguments>
41+
</arguments>
42+
</buildCommand>
43+
<buildCommand>
44+
<name>com.genuitec.eclipse.ast.deploy.core.DeploymentBuilder</name>
45+
<arguments>
46+
</arguments>
47+
</buildCommand>
48+
</buildSpec>
49+
<natures>
50+
<nature>com.genuitec.eclipse.ast.deploy.core.deploymentnature</nature>
51+
<nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
52+
<nature>com.genuitec.eclipse.j2eedt.core.webnature</nature>
53+
<nature>org.eclipse.jdt.core.javanature</nature>
54+
<nature>org.eclipse.wst.jsdt.core.jsNature</nature>
55+
<nature>org.eclipse.wst.common.project.facet.core.nature</nature>
56+
<nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
57+
</natures>
58+
</projectDescription>

myWordsFilterWeb/.settings/.jsdtscope

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<classpath>
3+
<classpathentry kind="src" path="WebRoot"/>
4+
<classpathentry kind="con" path="org.eclipse.wst.jsdt.launching.JRE_CONTAINER"/>
5+
<classpathentry kind="con" path="org.eclipse.wst.jsdt.launching.WebProject">
6+
<attributes>
7+
<attribute name="hide" value="true"/>
8+
</attributes>
9+
</classpathentry>
10+
<classpathentry kind="con" path="org.eclipse.wst.jsdt.launching.baseBrowserLibrary"/>
11+
<classpathentry kind="output" path=""/>
12+
</classpath>
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
#Thu Aug 18 16:49:09 CST 2016
2+
eclipse.preferences.version=1
3+
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
4+
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
5+
org.eclipse.jdt.core.compiler.compliance=1.6
6+
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
7+
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
8+
org.eclipse.jdt.core.compiler.source=1.6
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<project-modules id="moduleCoreId" project-version="1.5.0">
3+
<wb-module deploy-name="myWordsFilterWeb">
4+
<wb-resource deploy-path="/" source-path="/WebRoot"/>
5+
<wb-resource deploy-path="/WEB-INF/classes" source-path="/src"/>
6+
<property name="context-root" value="/myWordsFilterWeb"/>
7+
<property name="java-output-path" value="/myWordsFilterWeb/WebRoot/WEB-INF/classes"/>
8+
</wb-module>
9+
</project-modules>
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<faceted-project>
3+
<fixed facet="wst.jsdt.web"/>
4+
<installed facet="java" version="1.6"/>
5+
<installed facet="jst.web" version="3.0"/>
6+
<installed facet="wst.jsdt.web" version="1.0"/>
7+
</faceted-project>
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
org.eclipse.wst.jsdt.launching.baseBrowserLibrary
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Window

myWordsFilterWeb/README.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
通过Filter来实现留言板的敏感词过滤...
2+
3+
思路很简单,我们这里的敏感词是直接先放进去的,实际项目中,肯定是存在数据库中。
4+
在Filter 过滤器中,我们先拿到用户提交的留言,如果出现了敏感词,我们就用*号来替换。
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
Manifest-Version: 1.0
2+
Class-Path:
3+
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<web-app version="3.0"
3+
xmlns="http://java.sun.com/xml/ns/javaee"
4+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
5+
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
6+
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
7+
<display-name></display-name>
8+
<filter>
9+
<filter-name>wordFilter</filter-name>
10+
<filter-class>cn.hncu.filter.WordFilter</filter-class>
11+
</filter>
12+
<filter-mapping>
13+
<filter-name>wordFilter</filter-name>
14+
<url-pattern>/*</url-pattern>
15+
</filter-mapping>
16+
17+
18+
<servlet>
19+
<servlet-name>NoteServlet</servlet-name>
20+
<servlet-class>cn.hncu.servlet.NoteServlet</servlet-class>
21+
</servlet>
22+
23+
<servlet-mapping>
24+
<servlet-name>NoteServlet</servlet-name>
25+
<url-pattern>/NoteServlet</url-pattern>
26+
</servlet-mapping>
27+
<welcome-file-list>
28+
<welcome-file>index.jsp</welcome-file>
29+
</welcome-file-list>
30+
</web-app>

myWordsFilterWeb/WebRoot/index.jsp

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
2+
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
3+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
4+
<html>
5+
<head>
6+
<title>过滤器应用示例---敏感词过滤</title>
7+
</head>
8+
9+
<body>
10+
<h2>过滤器应用示例---敏感词过滤</h2>
11+
<form action="<c:url value='/NoteServlet'/>" method="post">
12+
用户名:<input type="text" name="name" /><br/><br/>
13+
<fieldset>
14+
<legend>留言板</legend>
15+
<textarea name="note" rows="10" cols="20"></textarea>
16+
</fieldset>
17+
<input type="submit" value="留言" />
18+
</form>
19+
</body>
20+
</html>

myWordsFilterWeb/myWordsFilterWeb.zip

14.1 KB
Binary file not shown.
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
package cn.hncu.filter;
2+
3+
import java.io.IOException;
4+
import java.util.List;
5+
6+
import javax.servlet.Filter;
7+
import javax.servlet.FilterChain;
8+
import javax.servlet.FilterConfig;
9+
import javax.servlet.ServletException;
10+
import javax.servlet.ServletRequest;
11+
import javax.servlet.ServletResponse;
12+
import javax.servlet.http.HttpServletRequest;
13+
import javax.servlet.http.HttpServletRequestWrapper;
14+
15+
import cn.hncu.pubs.WordsUtil;
16+
17+
public class WordFilter implements Filter{
18+
19+
@Override
20+
public void init(FilterConfig filterConfig) throws ServletException {
21+
}
22+
23+
@Override
24+
public void doFilter(ServletRequest request, ServletResponse response,
25+
FilterChain chain) throws IOException, ServletException {
26+
request.setCharacterEncoding("utf-8");
27+
28+
//在过滤器中用装饰模式把 原装request的功能增强了
29+
//---拦截后台调用的getParamter()方法
30+
MyRequest req = new MyRequest((HttpServletRequest)request);
31+
32+
chain.doFilter(req, response);//放行
33+
}
34+
35+
@Override
36+
public void destroy() {
37+
}
38+
}
39+
40+
class MyRequest extends HttpServletRequestWrapper{
41+
public MyRequest(HttpServletRequest request) {
42+
super(request);
43+
}
44+
45+
@Override
46+
public String getParameter(String name) {
47+
String str = super.getParameter(name);
48+
List<String> list = WordsUtil.getWords();
49+
for(String word : list){
50+
str = str.replaceAll(word, "*");
51+
}
52+
return str;
53+
}
54+
55+
56+
57+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package cn.hncu.pubs;
2+
3+
import java.util.ArrayList;
4+
import java.util.List;
5+
6+
public class WordsUtil {
7+
private static List<String> list = new ArrayList<String>();
8+
static{
9+
//这里应该从数据库中导入敏感词的,我在这里就直接用词来模拟了
10+
list.add("骂人");
11+
list.add("sb");
12+
}
13+
public static List<String> getWords(){
14+
return list;
15+
}
16+
public static void reBuild(){
17+
//把list中的内容存储到数据库---每一段时间存储一次
18+
}
19+
}
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
package cn.hncu.servlet;
2+
3+
import java.io.IOException;
4+
import java.io.PrintWriter;
5+
6+
import javax.servlet.ServletException;
7+
import javax.servlet.http.HttpServlet;
8+
import javax.servlet.http.HttpServletRequest;
9+
import javax.servlet.http.HttpServletResponse;
10+
11+
public class NoteServlet extends HttpServlet {
12+
13+
public void doGet(HttpServletRequest request, HttpServletResponse response)
14+
throws ServletException, IOException {
15+
response.setContentType("text/html;charset=utf-8");
16+
PrintWriter out = response.getWriter();
17+
out.println("不支持GET方式留言");
18+
out.close();
19+
}
20+
21+
public void doPost(HttpServletRequest request, HttpServletResponse response)
22+
throws ServletException, IOException {
23+
24+
response.setContentType("text/html;charset=utf-8");
25+
PrintWriter out = response.getWriter();
26+
out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
27+
out.println("<HTML>");
28+
out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>");
29+
out.println(" <BODY>");
30+
31+
String name = request.getParameter("name");
32+
if(name==null || name.trim().length()<=0){
33+
out.println("名字不能为空!!!");
34+
}else{
35+
String words = request.getParameter("note");
36+
out.println("<br/>"+name+"的留言是:<br/>"+ words);
37+
}
38+
out.println(" </BODY>");
39+
out.println("</HTML>");
40+
out.flush();
41+
out.close();
42+
}
43+
44+
}

0 commit comments

Comments
 (0)