`

filter(web容器过滤器)

阅读更多

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> 

 

分享到:
评论

相关推荐

    JAVA Web中过滤器

    销毁发生在Web应用关闭或重新部署时,Web容器调用destroy()方法,释放过滤器占用的资源。 5. **过滤器的链式处理** 多个过滤器可以组成一个过滤器链,它们按照在web.xml中的配置顺序依次执行。如果一个请求匹配多...

    Filter(过滤器)简介和工作原理

    Filter(过滤器)是 Java EE 中的一种组件,用于拦截和处理 Servlet 容器中的请求和响应。Filter 的基本功能是对 Servlet 容器调用 Servlet 的过程进行拦截,从而在 Servlet 进行响应处理的前后实现一些特殊的功能。...

    Filter过滤器(分类讨论,分类讲解)

    ### Filter过滤器(分类讨论,分类讲解) #### 一、Filter概述 在Java Web开发中,`Filter`是一种非常重要的技术,它可以在请求到达目标资源(如Servlet或JSP页面)之前进行预处理,或者在响应返回客户端之前进行...

    web容器文件压缩 tk-filter tk-filter js,jsp,css,文件压缩包含源代码

    `tk-filter` 是一个针对这种需求设计的过滤器(Filter),它适用于各种Web容器,如Tomcat、Jetty等。这个过滤器的主要功能是在Web服务器端对js、jsp和css文件进行压缩,然后再发送到客户端,从而减少网络传输的数据...

    过滤器(java编写的过滤器)

    当Web容器加载过滤器时,会调用`init()`方法进行初始化;每当有请求符合过滤器的映射规则时,就会调用`doFilter()`方法进行处理;当Web容器关闭时,会调用`destroy()`方法释放过滤器占用的资源。 ### 总结 过滤器...

    过滤器在Java Web开发中的应用研究.pdf

    当Web容器开始使用Servlet过滤服务时,会自动调用这个方法一次,并传递一个FilterConfig对象。这个对象包含了过滤器的初始化参数,开发者可以通过调用getInitParameter()方法获取这些参数。该方法仅在其生命周期中...

    jsp中Filter类实现过滤器功能

    4. **销毁**:`destroy()`方法在容器卸载过滤器时调用,释放过滤器占用的资源。 #### 使用场景 这种过滤器可以广泛应用于论坛、博客、聊天室等各种Web应用中,用来防止不良信息的传播,提高网站的安全性和用户体验...

    filter过滤器的简单使用.rar

    在Java Web开发中,Filter(过滤器)是一个非常重要的组件,它允许我们在HTTP请求和响应之间进行拦截,实现数据预处理、后处理或者修改。在标题提到的"filter过滤器的简单使用.rar"压缩包中,很显然包含了一个关于...

    spring-boot 过滤器 filter

    在Spring Boot应用中,过滤器(Filter)是用于处理HTTP请求和响应的重要组件。它们允许我们在请求被实际处理之前或之后进行拦截,从而实现诸如日志记录、安全控制、字符编码转换等多种功能。本篇文章将深入探讨...

    STRUTS:filter过滤器

    在Java Web开发中,过滤器(Filter)是一种重要的组件,用于拦截客户端发送至服务器的请求或服务器返回至客户端的响应。Struts框架作为Java Web开发中的一种流行框架,利用了过滤器机制来增强其功能性和灵活性。本文...

    java filter过滤器

    【Java Filter过滤器详解】 Java Filter是Java Servlet技术的一部分,它允许开发者在Servlet容器中对HTTP请求和响应进行拦截处理,实现数据过滤、权限控制、日志记录等多种功能。Filter的生命周期包括三个主要方法...

    Struts2编写的通用(拦截器,过滤器)Filter

    这个名为"Struts2编写的通用(拦截器,过滤器)Filter"的项目,主要目标是防止用户非法访问未授权的页面,确保只有登录用户才能访问特定的资源。 **拦截器(Interceptor)** 拦截器是Struts2框架的核心特性之一,它...

    Filter过滤器1

    Filter 过滤器 Filter 过滤器是 JavaWeb 的一个重要组件,对请求和响应进行拦截,实现一些特殊的功能。Filter 程序是一个实现 Filter 接口的 Java 类,类似于 Servlet 程序,由 Servlet 容器进行调用和执行。需要在...

    servlet 过滤器例子 filter

    这可以通过在web.xml文件中配置`&lt;filter-mapping&gt;`元素来实现,指定过滤器应该拦截哪些Servlet或URL模式。 例如,下面是一个简单的过滤器配置: ```xml &lt;filter&gt; &lt;filter-name&gt;MyFilter&lt;/filter-name&gt; &lt;filter-...

    servlet过滤器详解

    **过滤器(Filter)**是一种Web组件,它能够在客户端请求到达目标资源(如Servlet、JSP页面等)之前进行预处理,以及在响应返回客户端之前进行后处理。通过这种方式,过滤器能够有效地拦截和修改请求或响应的信息。 ...

    JAVAEE过滤器的使用

    - 使用注解`@WebFilter`在Java类上直接配置过滤器,更符合现代开发习惯。 3. **过滤器方法** - **init()**:在过滤器实例化后调用,用于初始化过滤器。 - **doFilter()**:核心方法,处理请求和响应。它接收`...

    过滤器.zip

    在IT领域,过滤器(Filter)是一个非常关键的概念,尤其在Web开发中,它被广泛应用于数据处理和请求响应的预处理或后处理。这里提到的"过滤器.zip"文件包含了一系列的示例项目,从filter_demo到filter_demo5,它们...

    过滤器的编写

    在Web应用程序中,过滤器通常作为Servlet容器的一部分,如Tomcat或Jetty,它们在请求到达目标Servlet之前或之后执行。 2. **过滤器的生命周期** - **初始化**:当过滤器被加载时,`init()` 方法会被调用,用于初始...

    超实用的Web过滤技术

    此时,Intercepting Filter(截获过滤器)设计模式成为理想选择。在Servlet 2.3及更高版本中,过滤器允许开发者在请求到达Web资源前对其进行拦截,处理后修改响应,从而实现了对Web应用的预处理和后期处理逻辑。 ...

Global site tag (gtag.js) - Google Analytics