1、过滤器代码,添加了不过滤的链接(FilterTszf.java)
package filters; import java.io.IOException; import java.util.Iterator; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; public class FilterTszf implements Filter { public void destroy() { } //拦截器的方法 public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException { request.setCharacterEncoding("UTF-8"); //得到HttpServletRequest HttpServletRequest httpRequest = (HttpServletRequest)request; //得到请求url String url = httpRequest.getRequestURI(); //不过滤的链接组成的字符串 /msg_admin/Pic_News.jsp String buGuoLvShuZu = "/filter/huangYi.jsp,/msg_admin/Pic_News.jsp"; //页面传入的所有参数值拼接的字符串 StringBuffer str = new StringBuffer(""); //需要过滤的特殊字符 String dszf = "'_|_&_;_$_%_@_,_\"_\\\"_\'_\\\'_<_>_(_)_+_CR_LF_\\_and_exec_insert_select_delete_update_count_*_chr_mid_master_truncate_char_declare_or_+_--"; //将特殊字符拆成数组 String dszf_array[] = dszf.split("_"); if(buGuoLvShuZu.indexOf(url) >= 0){ }else{ //拿到页面传过来的键值对,并迭代出所有的键 Iterator itr = request.getParameterMap().keySet().iterator(); //根据key拿value值 while (itr.hasNext()) { //每一项value值 String zhi = request.getParameter(itr.next().toString()); if(null != zhi){ //将页面传入的值拼接 str.append(zhi.toString()); str.append("_"); } } //将页面字符与所有特殊字符比对 for(int i = 0; i < dszf_array.length; i++){ if(str.toString().indexOf(dszf_array[i]) >= 0){ //含有非法,跳转到错误页面 RequestDispatcher dispatcher = request.getRequestDispatcher("/error.jsp"); dispatcher .forward(request,response); return; } } } //不含特殊字符正常跳转 chain.doFilter(request,response); return; } public void init(FilterConfig filterConfig) throws ServletException { } }
2、登入输入页面(dengRu.jsp)
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>测试登录</title> </head> <body> <form action="huangYi.jsp" enctype="multipart/form-data"> <input type="text" name="name" id="name" /> <input type="text" name="password" id="password" /> <select name="yyyy"> <option>你好</option> <option>\"</option> <option>and</option> <option>select</option> </select> <input type="file" name="fileAdder" id="fileAdder" value="上传"/> <input type="submit" value="登入"/> </form> </body> </html>
3、web.xml配置
<!-- 过滤器 --> <filter> <filter-name>first </filter-name> <filter-class>filters.FilterTszf </filter-class> <init-param> <param-name>encoding</param-name> <param-value>GBK</param-value> </init-param> </filter> <filter-mapping> <filter-name>first </filter-name> <!--/*表示拦截所有--> <url-pattern>/* </url-pattern> </filter-mapping>
相关推荐
Filter 的基本功能是对 Servlet 容器调用 Servlet 的过程进行拦截,从而在 Servlet 进行响应处理的前后实现一些特殊的功能。 在 Servlet API 中定义了三个接口类来开供开发人员编写 Filter 程序:Filter, ...
1、Filter接口:所有的Servlet过滤器类都必须实现javax.servlet.Filter接口 a、init(FilterConfig): 这是Servlet过滤器的初始化方法,Servlet容器创建Servlet过滤器实例后将调用这个方法。在这个方法中可以读取...
Filter过滤器,对web服务器所有web资源进行过滤,从而实现一些特殊的功能(权限访问控制、过滤敏感词汇、压缩响应信息)。Filter能够对Servlet容器的请求和响应进行检查和修改,其本身不能生成请求request和响应...
Servlet过滤器简介 Servlet过滤器实际上就是一个标准的java类,这个类通过实现Filter接口获得过滤器的功能。它在jsp容器启动的时候通过web.xml配置文件被系统加载。Servlet过滤器在接收到用户请求的时候被调用,当...
createWebServer()这个方法的源码我就不贴上了,大家可以自己看一下源码,最后就会看到...5 //getServletContextInitializerBeans()这个方法进开始进行解析并添加filter过滤器 了 6 for (ServletContextInitializer be
1. 使用通配符“*”拦截用户的所有请求。 Filter的<filter-...当用户直接访问页面时,Web容器将会调用过滤器。如果目标资源是通过RequestDispatcher的include()或forward()方法访问时,那么该过滤器将不会被调用。
弹簧过滤器 [MVC生命周期](#MVC生命周期) [如何使用过滤器](#如何使用过滤器) 使用指南 , 弹簧过滤器 使用Servlet的ServletContext函数,可以在用户调用Servlet之前/之后检查并设置用户的请求/响应标头信息...
以上的这些功能,通过一种名为责任链或者拦截器或者过滤器(语义上的区别而技术上没有什么区别,知道做了什么就行了)的设计模式可以实现,那么就来看看什么是责任链的设计模式。 以下内容参考北京尚学堂的马士兵...
cors-filter.zip,这是服务器端cors的java servlet过滤器实现,用于web容器,如apache tomcatcors(跨源资源共享)是w3c支持的一种机制,用于在web浏览器中启用跨源请求。cors需要浏览器和服务器的支持才能工作。这是...
筛选器容器一种无主题的Web组件,用于根据表单字段值筛选可见的子元素。 演示jamstack.org上的演示(按语言,模板或许可过滤)zachleat.com上的演示(按博客文章类别过滤)安装npm install @ zachleat / filter-...
过滤器 filter web.xml implements filter filterchain arg2.doFilter(req,resp); 监听器 servlet application /session /request 6/8 个 1、拦截器 定义拦截器的包 定义拦截器的核心 定义拦截器类 ...
20.5 对用户进行统一验证的过滤器 594 20.6 对请求和响应数据进行替换的 20.6 过滤器 600 20.7 小结 609 第21章 中文乱码问题与国际化 610 21.1 中文乱码问题产生的由来 610 21.1.1 常用字符集 610 21.1.2 对...
20.5 对用户进行统一验证的过滤器 594 20.6 对请求和响应数据进行替换的 20.6 过滤器 600 20.7 小结 609 第21章 中文乱码问题与国际化 610 21.1 中文乱码问题产生的由来 610 21.1.1 常用字符集 610 21.1.2 对...
</filter>struts-gpipe过滤器继承了StrutsPrepareAndExecuteFilter,在启动的时候会初始化struts-gpipe容器。2,struts.xml配置 name="gweb.groovy.dir" value="biz" /> name="gweb" namespace="/index" ...
20.5 对用户进行统一验证的过滤器 594 20.6 对请求和响应数据进行替换的 20.6 过滤器 600 20.7 小结 609 第21章 中文乱码问题与国际化 610 21.1 中文乱码问题产生的由来 610 21.1.1 常用字符集 610 21.1.2 对...
20.5 对用户进行统一验证的过滤器 594 20.6 对请求和响应数据进行替换的 20.6 过滤器 600 20.7 小结 609 第21章 中文乱码问题与国际化 610 21.1 中文乱码问题产生的由来 610 21.1.1 常用字符集 610 21.1.2 对...
Spring针对几个著名的Web服务器的数据源提供了相应的JDBC抽取器: •WebLogic:WebLogicNativeJdbcExtractor •WebSphere:WebSphereNativeJdbcExtractor •JBoss:JBossNativeJdbcExtractor 在定义了JDBC...
主要就是配置web.xml将shiro的filter和spring容器bean的filter关联起来,生命周期由servlet容器来控制,然后配置shiro的spring的xml文件,其中主要配置shiro过滤器securityManager、认证成功失败的跳转页面、过滤链...
2. 新增的注解支持:该版本新增了若干注解,用于简化 Servlet、过滤器(Filter)和监听器(Listener)的声 明,这使得 web.xml 部署描述文件从该版本开始不再是必选的了。 3. 可插性支持:熟悉 Struts2 的开发者一定...
2.4.3. 超文本传输协议响应包头过滤器插件(HeaderFilter) 根据配置文件的ACCEPT_TYPE配置项,对超文本传输协议响应的内容类型进行 限制。 2.4.4. 超文本标记语言文件存储插件(SaveHTMLToFile) 将用超文本标记语言...