Servlet 3.0过滤器Filter
2016-06-07 00:00
357 查看
Servlet:
其中:
filterName:即以前web.xml中的filter-name。
urlPatterns:访问路径,即web.xml中的filter-mapping->url-pattern
initParams :初始化参数,等价于web.xml的init-param节点。name=>param-name>,value=>param-value
JSP:
MessageServlet:
效果:
结果:
其中:
filterName:即以前web.xml中的filter-name。
urlPatterns:访问路径,即web.xml中的filter-mapping->url-pattern
initParams :初始化参数,等价于web.xml的init-param节点。name=>param-name>,value=>param-value
[code=language-java]/** * 字符过滤 */ @WebFilter(filterName = "/WordFilter", urlPatterns = "/*", initParams = { @WebInitParam(name = "encoding", value = "UTF-8"), @WebInitParam(name = "words", value = "日,次奥,靠,艹,尼玛,呵呵") }) public class WordFilter implements Filter { private String Encoding; private String[] words; /** * Default constructor. */ public WordFilter() { } /** * @see Filter#destroy() */ public void destroy() { } /** * @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain) */ public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { if (null != this.Encoding && this.Encoding != "") { request.setCharacterEncoding(Encoding); request = new MyWordsRequest((HttpServletRequest) request); response.setContentType("text/html;" + Encoding); } chain.doFilter(request, response); } /** * 文字过滤 * * @param value * 原始文字 * @return 返回过滤后的文字 */ private String filter(String value) { try { if (null != this.words && this.words.length > 0) { for (int i = 0; i < words.length; i++) { if (value.contains(this.words[i])) { value = value.replaceAll(this.words[i], "**"); } } } } catch (Exception err) { err.printStackTrace(); } return value; } /** * 初始化 */ public void init(FilterConfig fConfig) throws ServletException { System.out.println("WordFilter.."); Encoding = fConfig.getInitParameter("encoding"); String wordStr = fConfig.getInitParameter("words"); if (null != wordStr && wordStr != "") { this.words = wordStr.split(","); } System.out.println(this.Encoding + "--" + this.words); } class MyWordsRequest extends HttpServletRequestWrapper { public MyWordsRequest(HttpServletRequest request) { super(request); } @Override public String getParameter(String name) { return filter(super.getRequest().getParameter(name)); } @Override public String[] getParameterValues(String name) { String[] values = super.getRequest().getParameterValues(name); if (null != values && values.length > 0) { for (int i = 0; i < values.length; i++) { values[i] = filter(values[i]); } } return values; } } }
JSP:
[code=language-html]<form action="MessageServlet" method="post"> <table border="0" width="500" align="center"> <tr> <td align="right">内 容:</td> <td><textarea rows="5" cols="40" name="content"></textarea></td> </tr> <tr> <td align="center" colspan="2"><input type="submit" value="提 交"></td> </tr> </table> </form>
MessageServlet:
[code=language-java] @WebServlet("/MessageServlet") public class MessageServlet extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public MessageServlet() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request, response); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String title = request.getParameter("title"); String content =request.getParameter("content"); request.setAttribute("title", title); request.setAttribute("content", content); request.getRequestDispatcher("zuoye1.jsp").forward(request, response); } }
效果:
结果:
相关文章推荐
- 源码阅读-准备篇-eclipse快捷键使用
- 技术
- Mysql表操作和 DECIMAL(N,M)数据类型
- jdk参数设置 参数意义
- WAMP升级PHP版本
- intellij idea 起Tomcat乱码和内存溢出
- Myeclipse 项目全局搜索
- iframe模拟无刷新上传文件
- 国家气象局免费天气预报接口API
- SAX详解
- 源码编译安装DRBD
- spring事物的提交与回滚
- 【Effective Java】最佳实践 其他合集
- OSG-Win32窗口显示osg
- OSG-Win32窗口显示osg
- 如何使用CSS来编辑文本
- 动态爱心。
- HTML5 jQuery图片上传前预览
- 国外十大高校人工智能实验室及其代表性人物一览
- 机器学习--BP神经网络的C++实现