`

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> 

 

分享到:
评论

相关推荐

    Filter过滤器

    Filter 的基本功能是对 Servlet 容器调用 Servlet 的过程进行拦截,从而在 Servlet 进行响应处理的前后实现一些特殊的功能。 在 Servlet API 中定义了三个接口类来开供开发人员编写 Filter 程序:Filter, ...

    Servlet过滤器使用

    1、Filter接口:所有的Servlet过滤器类都必须实现javax.servlet.Filter接口 a、init(FilterConfig): 这是Servlet过滤器的初始化方法,Servlet容器创建Servlet过滤器实例后将调用这个方法。在这个方法中可以读取...

    JavaWeb Servlet中Filter过滤器的详解

     Filter过滤器,对web服务器所有web资源进行过滤,从而实现一些特殊的功能(权限访问控制、过滤敏感词汇、压缩响应信息)。Filter能够对Servlet容器的请求和响应进行检查和修改,其本身不能生成请求request和响应...

    java servlet过滤器使用示例

    Servlet过滤器简介 Servlet过滤器实际上就是一个标准的java类,这个类通过实现Filter接口获得过滤器的功能。它在jsp容器启动的时候通过web.xml配置文件被系统加载。Servlet过滤器在接收到用户请求的时候被调用,当...

    Java的过滤器与拦截器的区别.docx

    createWebServer()这个方法的源码我就不贴上了,大家可以自己看一下源码,最后就会看到...5 //getServletContextInitializerBeans()这个方法进开始进行解析并添加filter过滤器 了 6 for (ServletContextInitializer be

    javaWed笔记

    1. 使用通配符“*”拦截用户的所有请求。 Filter的&lt;filter-...当用户直接访问页面时,Web容器将会调用过滤器。如果目标资源是通过RequestDispatcher的include()或forward()方法访问时,那么该过滤器将不会被调用。

    SpringFilter:Springboot过滤器示例

    弹簧过滤器 [MVC生命周期](#MVC生命周期) [如何使用过滤器](#如何使用过滤器) 使用指南 , 弹簧过滤器 使用Servlet的ServletContext函数,可以在用户调用Servlet之前/之后检查并设置用户的请求/响应标头信息...

    名为责任链或者拦截器或者过滤器的简单模拟

    以上的这些功能,通过一种名为责任链或者拦截器或者过滤器(语义上的区别而技术上没有什么区别,知道做了什么就行了)的设计模式可以实现,那么就来看看什么是责任链的设计模式。 以下内容参考北京尚学堂的马士兵...

    cors-filter-1.0.1.zip

    cors-filter.zip,这是服务器端cors的java servlet过滤器实现,用于web容器,如apache tomcatcors(跨源资源共享)是w3c支持的一种机制,用于在web浏览器中启用跨源请求。cors需要浏览器和服务器的支持才能工作。这是...

    一个无主题的Web组件,用于根据表单字段值过滤可见的子元素。-JavaScript开发

    筛选器容器一种无主题的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、拦截器 定义拦截器的包 定义拦截器的核心 定义拦截器类 ...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part2

    20.5 对用户进行统一验证的过滤器 594 20.6 对请求和响应数据进行替换的 20.6 过滤器 600 20.7 小结 609 第21章 中文乱码问题与国际化 610 21.1 中文乱码问题产生的由来 610 21.1.1 常用字符集 610 21.1.2 对...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part3

    20.5 对用户进行统一验证的过滤器 594 20.6 对请求和响应数据进行替换的 20.6 过滤器 600 20.7 小结 609 第21章 中文乱码问题与国际化 610 21.1 中文乱码问题产生的由来 610 21.1.1 常用字符集 610 21.1.2 对...

    web页面模块化异步渲染struts-gpipe.zip

     &lt;/filter&gt;struts-gpipe过滤器继承了StrutsPrepareAndExecuteFilter,在启动的时候会初始化struts-gpipe容器。2,struts.xml配置 name="gweb.groovy.dir" value="biz" /&gt;  name="gweb" namespace="/index" ...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part4

    20.5 对用户进行统一验证的过滤器 594 20.6 对请求和响应数据进行替换的 20.6 过滤器 600 20.7 小结 609 第21章 中文乱码问题与国际化 610 21.1 中文乱码问题产生的由来 610 21.1.1 常用字符集 610 21.1.2 对...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part5

    20.5 对用户进行统一验证的过滤器 594 20.6 对请求和响应数据进行替换的 20.6 过滤器 600 20.7 小结 609 第21章 中文乱码问题与国际化 610 21.1 中文乱码问题产生的由来 610 21.1.1 常用字符集 610 21.1.2 对...

    ssh(structs,spring,hibernate)框架中的上传下载

    Spring针对几个著名的Web服务器的数据源提供了相应的JDBC抽取器:  •WebLogic:WebLogicNativeJdbcExtractor  •WebSphere:WebSphereNativeJdbcExtractor  •JBoss:JBossNativeJdbcExtractor  在定义了JDBC...

    SpringMVC+mybatis-framework-bootstrap

    主要就是配置web.xml将shiro的filter和spring容器bean的filter关联起来,生命周期由servlet容器来控制,然后配置shiro的spring的xml文件,其中主要配置shiro过滤器securityManager、认证成功失败的跳转页面、过滤链...

    annotaction

    2. 新增的注解支持:该版本新增了若干注解,用于简化 Servlet、过滤器(Filter)和监听器(Listener)的声 明,这使得 web.xml 部署描述文件从该版本开始不再是必选的了。 3. 可插性支持:熟悉 Struts2 的开发者一定...

    C++网络爬虫项目

    2.4.3. 超文本传输协议响应包头过滤器插件(HeaderFilter) 根据配置文件的ACCEPT_TYPE配置项,对超文本传输协议响应的内容类型进行 限制。 2.4.4. 超文本标记语言文件存储插件(SaveHTMLToFile) 将用超文本标记语言...

Global site tag (gtag.js) - Google Analytics