




已阅读5页,还剩6页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
福建农林大学计算机与信息学院实验报告系计算机与信息专业计算机科学与技术年级2013成绩姓名学号实验室机号实验时间教师签字实验(五) 过滤器和监听器一、实验目的和要求1. 掌握如何实现一个Servlet过滤器步骤二、实验内容和原理1. 自定义一个过滤器,用来过滤非法文字。如果用户提交的信息中含有非法文字,则使用“*”字符替代之前的非法字符。要求:编写3个文件,即 用来提交用户发言信息的表单 用来过滤非法文字的过滤器 显示过滤后的用户发言的页面三、实验环境1. 硬件环境:2. 软件环境:JDK1.5四、算法描述及实验步骤1. 算法描述(可以用流程图、伪代码或源程序描述)2. 实验步骤Index.html Handle.jsp 过滤后的内容 Web.xml CharFilter newpackage.CharFilter KeyWord0 fuck KeyWord1 bitch KeyWord2 fool CharFilter /* 30 newPackage.CharFilter.javapackage newpackage;import java.io.IOException;import java.io.PrintStream;import java.io.PrintWriter;import java.io.StringWriter;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;/* * * author Administrator */public class CharFilter implements Filter private static final boolean debug = true; private FilterConfig filterConfig = null; private String sKeyWords; public CharFilter() private void doBeforeProcessing(ServletRequest request, ServletResponse response) throws IOException, ServletException if (debug) log(CharFilter:DoBeforeProcessing); private void doAfterProcessing(ServletRequest request, ServletResponse response) throws IOException, ServletException if (debug) log(CharFilter:DoAfterProcessing); /* * * param request The servlet request we are processing * param response The servlet response we are creating * param chain The filter chain we are processing * * exception IOException if an input/output error occurs * exception ServletException if a servlet error occurs */ public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException if (debug) log(CharFilter:doFilter(); doBeforeProcessing(request, response); /获取关键字 sKeyWords = new String3; sKeyWords0 = filterConfig.getInitParameter(KeyWord0); if(sKeyWords0 = null) sKeyWords0 = ; sKeyWords1 = filterConfig.getInitParameter(KeyWord1); if(sKeyWords1 = null) sKeyWords1 = ; sKeyWords2 = filterConfig.getInitParameter(KeyWord2); if(sKeyWords2 = null) sKeyWords2 = ; /获取输入 request.setCharacterEncoding(GB2312); String sInput = request.getParameter(input); if(sInput = null) chain.doFilter(request, response); return; for(int i = 0;i sKeyWords.length;i+) sInput = myReplace(sInput,sKeyWordsi,*); request.setAttribute(output, sInput);/送往下一个过滤器 Throwable problem = null; try chain.doFilter(request, response); catch (Throwable t) / If an exception is thrown somewhere down the filter chain, / we still want to execute our after processing, and then / rethrow the problem after that. problem = t; t.printStackTrace(); doAfterProcessing(request, response);/ If there was a problem, we want to rethrow it if it is / a known type, otherwise log it. if (problem != null) if (problem instanceof ServletException) throw (ServletException) problem; if (problem instanceof IOException) throw (IOException) problem; sendProcessingError(problem, response); public String myReplace(String sInput,String sKeyWord,char cReplace) if(sInput = null | sInput.isEmpty() System.exit(0); if(sKeyWord = null | sKeyWord.isEmpty() return sInput; int nlength = sKeyWord.length(); String sReplace = ; while(nlength != 0) sReplace = sReplace + Character.toString(cReplace); nlength-; /替换大写 return sInput.replaceAll(sKeyWord, sReplace); /* * Return the filter configuration object for this filter. */ public FilterConfig getFilterConfig() return (this.filterConfig); /* * Set the filter configuration object for this filter. * * param filterConfig The filter configuration object */ public void setFilterConfig(FilterConfig filterConfig) this.filterConfig = filterConfig; /* * Destroy method for this filter */ Override public void destroy() this.filterConfig = null; /* * Init method for this filter * param filterConfig */ Override public void init(FilterConfig filterConfig) this.filterConfig = filterConfig; if (filterConfig != null) if (debug) log(CharFilter:Initializing filter); /* * Return a String representation of this object. */ Override public String toString() if (filterConfig = null) return (CharFilter(); StringBuffer sb = new StringBuffer(CharFilter(); sb.append(filterConfig); sb.append(); return (sb.toString(); private void sendProcessingError(Throwable t, ServletResponse response) String stackTrace = getStackTrace(t); if (stackTrace != null & !stackTrace.equals() try response.setContentType(text/html); PrintStream ps = new PrintStream(response.getOutputStream(); PrintWriter pw = new PrintWriter(ps); pw.print(nnErrornnn); /NOI18N / PENDING! Localize this for next official release pw.print(The resource did not process correctlynn); pw.print(stackTrace); pw.print(n); /NOI18N pw.close(); ps.close(); response.getOutputStream().close(); catch (Exception ex) else try PrintStream ps = new PrintStream(response.getOutputStream(); t.printStackTrace(ps); ps.close(); response.getOutputStream().close(); catch (Exception ex) public static String getStackTrace(Throwable t) String stackTrace = null; try StringWriter sw = new StringWriter(); PrintWriter pw = new PrintWriter(sw); t.printStackTrace(pw); pw.close(); sw.close();
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年桂林市第十一中学招聘初中教师考试笔试试题(含答案)
- 3D创新创业项目商业计划书
- 淡水贝类深加工技术创新创业项目商业计划书
- 自动驾驶车辆外观与法规遵从创新创业项目商业计划书
- 智能婴儿监护系统创新创业项目商业计划书
- 汽车沙漠驾驶技巧资讯源创新创业项目商业计划书
- 现场急救知识培训简报课件
- 辐射换热基础知识培训课件
- 2025年工业废气净化处理技术成果绿色环保鉴定报告
- 2025年文化产业园产业集聚与服务体系构建中的区域差异分析报告
- 2024(统编版)语文六年级上册 开学第一课 课件
- 招标代理服务服务方案
- 风力发电技术的发展现状和未来发展趋势
- 财税公司报告
- 脱发患者的头皮及头发护理方法
- 球囊扩张支架植入术
- 小儿推拿手法穴位的全身调理与养生保健
- 警械培训课件
- 人教版七年级英语下册阅读专项训练60篇-含答案
- 人工智能在检验医学中的应用
- 【江苏洋河股份内部控制环境现状、问题及对策12000字(论文)】
评论
0/150
提交评论