Servlet学习笔记--用Filter实现过滤非法文字
来源:互联网 发布:中国移动优化工作 编辑:程序博客网 时间:2024/05/22 12:07
一、 步骤
1、创建名为WordFilter类,实现Filter接口。
2、WordFilter类:实现Filter接口中的init()方法、doFilter()方法(在此获取页面提交的内容)、destroy()方法。
3、WordFilter类:在类中编写filter()方法,对提交的内容逐一过滤。
4、在web.xml中配置过滤器。
5、创建message.jsp页面,显示过滤器效果。
二、体会及收获
1、在java中可用代码控制跳转到相关的jsp页面。代码如下:
request.getRequestDispatcher("message.jsp").forward(request, response);//或者:response.sendRedirect("message.jsp");
两条语句的区别可参考:http://blog.csdn.net/xiangsuixinsheng/article/details/6594776
2、Java中与jsp传值例子:
Java中:“request.getParameter("title")
”
jsp页面中用“<input type="text" name="title" />
”
3、在做Servlet类时,若直接在浏览器中实现访问某个Servlet类时,这个 Servlet类必须实现doGet()方法。
4、本次的写出的只是简单的例子,若真要用到项目当中过滤非法文字,还有待改进(本例子只实现对每个请求都调用封装好的过滤方法来过滤文字,若请求多且频繁,过滤过程十分麻烦。很多项目都是要求通过使用Servlet过滤器对一次性所有的请求进行非法过滤的,本例子远未达到)。
三、相关代码
1、WordFilter.jsp
package com.code;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;//非法文字过滤器public class WordFilter implements Filter { private String words[];// 非法字符数组,也可以这种形式:List<String> unString; @Override public void init(FilterConfig filterConfig) throws ServletException {// 实现Filter接口的初始化init()方法 words = new String[] { "滚蛋", "混蛋", "funk" };// 初始化非法数组 } @Override public void destroy() { this.words = null; } @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { request.setCharacterEncoding("utf-8");// 设置request的编码 response.setContentType("text/html;charset=utf-8");// 设置response的编码。若换成response.setContentType("utf-8"),则从Servlet中传到jsp的中文会乱码 String t = request.getParameter("title");//获取jsp提交的参数“title”的值 String c = request.getParameter("content");//获取jsp提交的参数“content”的值 request.setAttribute("title", filter(t));//用filter()过滤标题,并放回到request中 request.setAttribute("content", filter(c)); chain.doFilter(request, response); } public String filter(String param) {// 此方法通过循环非法字符,对提交的内容逐一过滤,将非法字符代替为“* * *” try { if (words != null && words.length > 0) {// 判断非法文字字符是否被初始化 for (int i = 0; i < words.length; i++) {// 循环替换非法字符 if (param.indexOf(words[i]) != -1) {// 判断是否包含非法字符 param = param.replaceAll(words[i], "* * *");// 替换非法文字 } } } } catch (Exception e) { e.printStackTrace(); } return param; }}
2、web.xml中配置WordFilter
<filter> <filter-name>WordFilter</filter-name> <filter-class>com.code.WordFilter</filter-class> </filter> <filter-mapping> <filter-name>WordFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
3、message.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";request.setCharacterEncoding("utf-8");%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><base href="<%=basePath%>"><title>My JSP 'index.jsp' starting page</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0"><meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"></head><% String title = (String)request.getAttribute("title"); String content = (String)request.getAttribute("content"); if(title != null && !title.isEmpty()){ out.println("<p align='center'>"+"title : "+title+"</p>"); } if(content != null && !content.isEmpty()){ out.println("<p align='center'>"+"content : "+content+"</p>"); } %><body> <form method="post" onsubmit="return message(this);"> <table align="center"> <tr> <td>title</td> <td><input type="text" name="title" /></td> </tr> <tr> <td>content</td> <td><input type="text" name="content" /></td> </tr> <tr> <td><input type="submit" value="提交" /></td> </tr> </table> </form></body></html>
0 0
- Servlet学习笔记--用Filter实现过滤非法文字
- Filter实现过滤非法文字例子
- filter过滤器实现过滤非法文字
- 利用Servlet的过滤器过滤非法文字!
- Servlet实现Filter过滤拦截
- Filter过滤非法字符
- servlet过滤非法字符
- filter过滤、servlet过滤
- filter实现登录验证,并且过滤servlet
- 如何用jsp+servlet+fliter实现非法字符过滤
- Filter 过滤程序 过滤非法ip地址
- 学习笔记之Servlet Filter
- 使用Filter进行 过滤非法登录用户
- 使用Response.Filter过滤非法词汇
- 使用Response.Filter过滤非法词汇
- 使用Response.Filter 过滤非法词汇
- 使用Response.Filter过滤非法词汇
- Java Filter过滤XSS注入非法参数
- c++ primer第五版(中文)习题答案 第十章第六节-特定容器算法
- iOS—— 秒学远程推送
- c#中convert和parse的区别个人推荐使用convert多
- Move Zeroes
- ubuntu 安装 eclipse CDT 配置 sublime c++ 主题
- Servlet学习笔记--用Filter实现过滤非法文字
- 黑马程序员 Java基础——网络编程
- 谷歌给应届生的8条建议
- 集合(关于Map)
- Android系统权限和root权限
- byte中bit解析
- C++ 指针知识点整理
- 7克砝码和2克砝码分盐问题 自创总结
- 我的生活怎么了?