java-Filter

java-Filter

过滤器是小型的Web组件,它们负责拦截请求以及响应,以便查看、提取或以某种方式操作正在客户机和服务器之间交换的数据。简单的说,过滤器就类似于客户端发送的web请求与服务器之间的防火墙,经过该防火墙验明正身后放可以传入后天进行进一步的数据请求。

过滤器其实是一个Java的类,然后实现了几个函数,创建filter文件的时候,创建Class文件即可,参考代码如下所示:

package common;

import java.io.IOException;

import javax.servlet.Filter;

import javax.servlet.FilterChain;

import javax.servlet.FilterConfig;

import
javax.servlet.ServletException;

import javax.servlet.ServletRequest;

import
javax.servlet.ServletResponse;

publicclass filter implements Filter

{

private FilterConfig
filterConfig;

public void
doFilter(ServletRequest request, ServletResponse response,

FilterChain chain)
throws IOException, ServletException

{

  /*

  再这里读取参数,并进行响应的过滤操作

  */

chain.doFilter(request,
response);//放行。让其走到下个链或目标资源中

}

public void
init(FilterConfig filterConfig) throws
ServletException {

System.out.println("初始化了");

this.filterConfig =
filterConfig;

}

public void
destroy() {

System.out.println("销毁了");

}

}

Filter可以过滤某一个Servlet或者JSP文件,或者顾虑一组Servlet或者JSP文件,这些功能是在web.XML文件中进行配置。

web.xml参考代码:

<?xmlversion="1.0"encoding="UTF-8"?>

<web-appversion="2.5"

xmlns="http://java.sun.com/xml/ns/javaee"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://java.sun.com/xml/ns/javaee

http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

<display-name></display-name>

<filter>

<filter-name>filter</filter-name>

<filter-class>common.filter</filter-class>

<init-param>

<param-name>param1</param-name>

<param-value>value在这里呢</param-value>

</init-param>

</filter>

<filter-mapping>  

<filter-name>filter</filter-name>

<url-pattern>/ms/*</url-pattern>

 //
<servlet-name></servlet-name>

<dispatcher>REQUEST</dispatcher><!-- 没有配置dispatcher就是默认request方式的 -->

<dispatcher>FORWARD</dispatcher>

<dispatcher>ERROR</dispatcher>

<dispatcher>INCLUDE</dispatcher>

</filter-mapping>

<servlet>

<description>This is the
description of my J2EE component</description>

<display-name>This is the
display name of my J2EE component</display-name>

<servlet-name>myservlet</servlet-name>

<servlet-class>myservlet</servlet-class>

</servlet>

<servlet>

<description>This is the
description of my J2EE component</description>

<display-name>This is the
display name of my J2EE component</display-name>

<servlet-name>SecondServlet</servlet-name>

<servlet-class>SecondServlet</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>myservlet</servlet-name>

<url-pattern>/ms/one/myservlet</url-pattern>

</servlet-mapping>

<servlet-mapping>

<servlet-name>SecondServlet</servlet-name>

<url-pattern>/ms/tow/SecondServlet</url-pattern>

</servlet-mapping>

<welcome-file-list>

<welcome-file>index.jsp</welcome-file>

</welcome-file-list>

</web-app>

---------------------

再<filter-mapping> 映射节点中,如果我们对某一个Servlet文件进行过滤,可以设置

<servlet-name>TargetFilterServletFileName</servlet>

TargetFilterServletFileName表示将要进行过滤的Servlet文件,

如果要对一组文件记性过滤,可以设置
<url-pattern>/FilePath</url-pattern>其中*表示上一级路径下的所有文件,

比如:/mm/servletForder/*
表示对/mm/servletForder/之后的所有文件进行过滤,

再web.xml配置文件中,需要注意的一点是:如果使用过滤文件,那么Filter的配置必须放到
<servlet>节点之前

Jason

2014年05月11日

java-Filter,布布扣,bubuko.com

时间: 2024-08-16 05:42:31

java-Filter的相关文章

Java Filter过滤xss注入非法参数的方法

http://blog.csdn.NET/feng_an_qi/article/details/45666813 Java Filter过滤xss注入非法参数的方法 web.xml: [html] view plain copy <filter> <filter-name>XSSFiler</filter-name> <filter-class> com.paic.mall.web.filter.XssSecurityFilter </filter-c

如何在Java Filter 中注入 Service

在项目中遇到一个问题,在 Filter中注入 Serivce失败,注入的service始终为null.如下所示: public class WeiXinFilter implements Filter{ @Autowired private UsersService usersService; public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOExc

Java Filter(拦截器)

多个Filter按照在配置文件中配置的filter顺序执行. 在web.xml文件中配置该Filter,使用init-param元素为该Filter配置参数,init-param可接受如下两个子元素: param-name:指定参数名. param-value:指定参数值. filter .filter-mapping .servlet.servlet-mapping 才构成一个完整的拦截器配置. Filter类需要实现Filter接口,该接口有init.doFilter.destroy3个方法

java Filter的简单使用

java web中的过滤器的简单使用.直接上代码.1.web.xml 1 <?xml version="1.0" encoding="UTF-8"?> 2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3 xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http:

在Java filter中调用service层方法

在项目中遇到一个问题,在 Filter中注入 Serivce失败,注入的service始终为null.如下所示: 1 public class WeiXinFilter implements Filter{ 2 3 @Autowired 4 private UsersService usersService; 5 6 public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)

Java Filter防止sql注入攻击

原理,过滤所有请求中含有非法的字符,例如:, & < select delete 等关键字,黑客可以利用这些字符进行注入攻击,原理是后台实现使用拼接字符串,案例:某个网站的登入验证的SQL查询代码为 strSQL = "SELECT * FROM users WHERE (name = '" + userName + "') and (pw = '"+ passWord +"');" 恶意填入 userName = "'

Java filter中的chain.doFilter详解

转载: 一.chain.doFilter作用 1.一般filter都是一个链,web.xml 里面配置了几个就有几个.一个一个的连在一起 request -> filter1 -> filter2 ->filter3 -> -. -> request resource. 2.chain.doFilter将请求转发给过滤器链下一个filter , 如果没有filter那就是你请求的资源 二.举例 input.jsp 是用来提交输入的 : 当提交后,过滤器检测姓名和年龄 . 如果

过滤器(java.filter)和拦截器(springmvc.interceptor)区别

①拦截器是基于java的反射机制的,而过滤器是基于函数回调. ②拦截器不依赖与servlet容器,过滤器依赖与servlet容器. ③拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用. ④拦截器可以访问action上下文.值栈里的对象,而过滤器不能访问. ⑤在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次 执行顺序:拦截器是被包裹在过滤器 假设doFilter中有代码:sout1;doFilter;sout2 执行顺序:sout1--

JAVA—Filter

过滤器 Filter 1. Filter简介. filter 是对客户端访问资源的过滤,符合条件放行,不符合条件不放行, 并且可以对目标资源访问前后进行逻辑处理. 2. Filter 的API 详解. 1)filter生命周期及其与生命周期相关的方法.   Filter接口有三个方法,并且这三个都是与Filter的生命相关的方法.   init(Filterconfig):代表filter对象初始化方法 filter 对象创建时执行       doFilter (ServletRequest

【Java技术点滴】——Filter基本使用与扩展

背景 在程序实现的过程中我们往往碰到类似于这样的问题:为了防止后台接收数据不能乱码,我们需要在处理的Servlet中设置请求字符集,就会在每一个Servlet中加上这样的代码: request.setCharacterEncoding("GB18030"); 这样的代码就是在程序中写死了的,设置字符集的功能是不利于维护的,如果将来要修改为另外一种字符集类型,需要在每个Servlet中进行修改.如果要进行封装,同样面临每个Servlet都要调用的问题,而往往这种方法调用是与具体业务需求关