过滤器过滤敏感词的代码
包cn . itcast . web . filter;导入javax . servlet . *;导入javax . servlet . annotation . webfilter;导入java . io . bufferedreader;导入java . io . filereader;导入java . io . ioexception;导入java . lang . reflect . invocationhandler;导入java . lang . reflect . method;导入java . lang . reflect . proxy;导入java . util . arraylist;导入java . util . list;/* *敏感词汇过滤器*/@ webfilter(& # 34;/* & # 34;)公共类敏感词筛选器实现筛选器{公共void dofilter(servletrequest,servletresponse resp,筛选器链)引发servlet异常,ioexception {//1。创建代理对象。增强getparameter方法servlet request proxy _ req =(servlet request)proxy . new proxy instance(req . getclass()。getclassloader()、req.getclass()。getinterfaces(),新的invokationhandler(){ @ override public object invoke(对象代理,方法方法,[]参数)引发可抛出的{//增强getparameter方法//判断它是否是getparameter方法if(方法)。getname()。等于(& # 34;getparameter & # 34){//增强返回值//获取返回值string value = (string)方法。调用(请求、参数);if(值!= null){ //遍历(字符串:list) {if(值)的敏感字符。包含(字符串){ value = value.replaceall(字符串,& # 34;* * * & # 34;);} } }返回值;}//判断方法名是否为getparametermap //判断方法名是否为getparametervaluereturnmethod . invoke(req,args);//如果不是,传递真实对象并传递args数组} });//2 .release chain . dofilter(proxy _ req,resp);}私人列表& lt字符串>列表=新数组列表<。字符串>();//敏感词汇集合public void init(filter config config)引发servlet exception { try }{//1。获取文件servlet context servlet context = config . getservlet context()的真实路径。字符串实路径= servlet context . getrealpath(& # 34;/网页-信息/类/敏感词汇。);//2 .读取文件buffere reader br = new buffere reader(new file reader(real path));//3 .将文件中的每一行数据添加到列表中。字符串行=空;((line = br.readline())!=null){ list.add(行);} br . close();system.out.println(列表);}catch(异常e){ e . printstacktrace();} }公共无效销毁(){ }}
文章来源:www.atolchina.com