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>
相关推荐
销毁发生在Web应用关闭或重新部署时,Web容器调用destroy()方法,释放过滤器占用的资源。 5. **过滤器的链式处理** 多个过滤器可以组成一个过滤器链,它们按照在web.xml中的配置顺序依次执行。如果一个请求匹配多...
Filter(过滤器)是 Java EE 中的一种组件,用于拦截和处理 Servlet 容器中的请求和响应。Filter 的基本功能是对 Servlet 容器调用 Servlet 的过程进行拦截,从而在 Servlet 进行响应处理的前后实现一些特殊的功能。...
`tk-filter` 是一个针对这种需求设计的过滤器(Filter),它适用于各种Web容器,如Tomcat、Jetty等。这个过滤器的主要功能是在Web服务器端对js、jsp和css文件进行压缩,然后再发送到客户端,从而减少网络传输的数据...
4. **Filter生命周期**:在Java中,过滤器通常在Servlet容器(如Tomcat)启动时初始化,并在容器关闭时销毁。生命周期方法如`init()`, `doFilter()`, 和`destroy()`用于管理过滤器的初始化、运行和清理。 5. **过滤...
当Web容器加载过滤器时,会调用`init()`方法进行初始化;每当有请求符合过滤器的映射规则时,就会调用`doFilter()`方法进行处理;当Web容器关闭时,会调用`destroy()`方法释放过滤器占用的资源。 ### 总结 过滤器...
当Web容器开始使用Servlet过滤服务时,会自动调用这个方法一次,并传递一个FilterConfig对象。这个对象包含了过滤器的初始化参数,开发者可以通过调用getInitParameter()方法获取这些参数。该方法仅在其生命周期中...
4. **销毁**:`destroy()`方法在容器卸载过滤器时调用,释放过滤器占用的资源。 #### 使用场景 这种过滤器可以广泛应用于论坛、博客、聊天室等各种Web应用中,用来防止不良信息的传播,提高网站的安全性和用户体验...
在Java Web开发中,Filter(过滤器)是一个非常重要的组件,它允许我们在HTTP请求和响应之间进行拦截,实现数据预处理、后处理或者修改。在标题提到的"filter过滤器的简单使用.rar"压缩包中,很显然包含了一个关于...
在Spring Boot应用中,过滤器(Filter)是用于处理HTTP请求和响应的重要组件。它们允许我们在请求被实际处理之前或之后进行拦截,从而实现诸如日志记录、安全控制、字符编码转换等多种功能。本篇文章将深入探讨...
在Java Web开发中,过滤器(Filter)是一种重要的组件,用于拦截客户端发送至服务器的请求或服务器返回至客户端的响应。Struts框架作为Java Web开发中的一种流行框架,利用了过滤器机制来增强其功能性和灵活性。本文...
【Java Filter过滤器详解】 Java Filter是Java Servlet技术的一部分,它允许开发者在Servlet容器中对HTTP请求和响应进行拦截处理,实现数据过滤、权限控制、日志记录等多种功能。Filter的生命周期包括三个主要方法...
这个名为"Struts2编写的通用(拦截器,过滤器)Filter"的项目,主要目标是防止用户非法访问未授权的页面,确保只有登录用户才能访问特定的资源。 **拦截器(Interceptor)** 拦截器是Struts2框架的核心特性之一,它...
Filter 过滤器 Filter 过滤器是 JavaWeb 的一个重要组件,对请求和响应进行拦截,实现一些特殊的功能。Filter 程序是一个实现 Filter 接口的 Java 类,类似于 Servlet 程序,由 Servlet 容器进行调用和执行。需要在...
SpringBoot @WebFilter注解过滤器的实现 SpringBoot 框架提供了多种方式来实现过滤器,例如使用 Servlet Filter API 或者使用 Spring 的 HandlerInterceptor机制,但是 SpringBoot 2.x 版本中引入了新的 @WebFilter...
这可以通过在web.xml文件中配置`<filter-mapping>`元素来实现,指定过滤器应该拦截哪些Servlet或URL模式。 例如,下面是一个简单的过滤器配置: ```xml <filter> <filter-name>MyFilter</filter-name> <filter-...
**过滤器(Filter)**是一种Web组件,它能够在客户端请求到达目标资源(如Servlet、JSP页面等)之前进行预处理,以及在响应返回客户端之前进行后处理。通过这种方式,过滤器能够有效地拦截和修改请求或响应的信息。 ...
- 使用注解`@WebFilter`在Java类上直接配置过滤器,更符合现代开发习惯。 3. **过滤器方法** - **init()**:在过滤器实例化后调用,用于初始化过滤器。 - **doFilter()**:核心方法,处理请求和响应。它接收`...
在IT领域,过滤器(Filter)是一个非常关键的概念,尤其在Web开发中,它被广泛应用于数据处理和请求响应的预处理或后处理。这里提到的"过滤器.zip"文件包含了一系列的示例项目,从filter_demo到filter_demo5,它们...