java web过滤器
来源:互联网 发布:优思得云计算科技 编辑:程序博客网 时间:2024/06/11 03:08
过滤器原理
java中过滤器的作用就好比生活中自来水的净化,自来水通过层层净化才能达到引用标准,java web中Servlet的过滤器也有相同的作用,主要用于过滤客户端的请求,并将过滤后的请求交给下一个资源。当客户端发出Web资源的请求时,Web服务器根据应用程序配置文件的过滤规则进行检查,若客户请求满足过滤规则,则对客户请求/响应进行拦截,对请求头和请求数据进行检查或改动,并依次通过过滤器链,最后把请求/响应交给请求的Web资源处理。请求信息在过滤器链中可以被修改,也可以根据条件让请求不发往资源处理器,并直接向客户机发回一个响应。当资源处理器完成了对资源的处理后,响应信息将逐级逆向返回。同样在这个过程中,用户可以修改响应信息,从而完成一定的任务。
Servlet过滤器使用步骤
1、创建javax.servlet.Filter接口的类。过滤器实际上就是一个类,该类必须实现Filter接口。Filter接口中定义了三个方法init(),doFilter(),destroy(),init()在过滤器初始化时被调用,doFilter()对请求进行处理,destroy()销毁方法,释放资源。
2、在web.xml中配置过滤器。
与过滤器有关的接口
Filter接口,这是每个过滤器必须实现的接口,有三个方法init(),doFilter(),destroy()。init()在过滤器初始化时被调用,当开始使用servlet过滤器服务时,Web容器调用此方法一次。doFilter()对请求进行处理,destroy()销毁方法,释放资源。
FilterConfig接口,这个接口由Servlet实现,主要用于获取过滤器的配置信息。有四个方法。
String getFilterName()获取过滤器名字, 返回web.xml文件中定义的过滤器的名称。
ServletContext getServletContext()
获取Servlet的Context,String getInitParameter(String name)获取过滤器的初始化参数值。
Enumeration getInitParameterNames()获取过滤器的所有参数,并用Enumeration存储。
FilterChain接口,该接口也是由Servlet实现,只有一个方法 void doFilter(),此方法用于将过滤器过滤后的请求传递给下一个过滤器,如果此过滤器已经是最后一个过滤器,则将请求交给相应的目标资源。
实例,用servlet解决java web项目中乱码问题
乱码是java web开发中经常遇见的问题,转码操作可以解决此问题,但是每次都要转码过于繁琐,采用字符编码过滤器后就可以很好的解决此问题,并且十分方便。减少转码步骤,简化代码量。
1、创建ChatacterFilter实现Filter接口
package Package01;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;public class CharacterFilter implements Filter { protected String encoding=null; @Override public void destroy() { // TODO Auto-generated method stub encoding=null;//销毁方法,释放资源 } @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { // TODO Auto-generated method stub if(encoding!=null) { //设置Request的编码格式 request.setCharacterEncoding(encoding); //设置Response的编码格式 response.setContentType("text/html;charset="+encoding); } chain.doFilter(request, response);//传递给下一个过滤器 } @Override public void init(FilterConfig filterConfig) throws ServletException { // TODO Auto-generated method stub encoding=filterConfig.getInitParameter("encoding");//获取web.xml文件中参数为encoding的值 }}
2、在web.xml中配置Filter信息
<?xml version="1.0" encoding="ISO-8859-1"?><web-app 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_3_0.xsd" version="3.0" metadata-complete="true"> <display-name>Welcome to Tomcat</display-name> <description> Welcome to Tomcat</description><!--web描述信息,可以不要--> <filter> <filter-name>CharactorFilter</filter-name><!--过滤器名字--> <filter-class>package01.IpFilter</filter-class><!-- 过滤器的类路径 --> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value><!--初始化参数值--> </init-param> </filter> <filter-mapping> <filter-name>CharactorFilter</filter-name> <url-pattern>/*</url-pattern><!-- 匹配模式 --> </filter-mapping></web-app>
- java web过滤器
- Java Web Servlet过滤器
- Java Web 中的过滤器
- Java web 过滤器
- java web 过滤器
- JAVA WEB FILTER(过滤器)
- Java-web Filter过滤器
- Java Web 过滤器
- java web 过滤器
- Java web----过滤器(Filter)
- java web 过滤器
- java web过滤器
- java web 过滤器filter
- Java-Web之过滤器
- java web过滤器
- Java Web开发----过滤器
- Java Web中的过滤器
- java web过滤器
- Android BlueDroid(三):BlueDroid蓝牙开启过程enable
- ACM天梯赛 L2-011. 玩转二叉树
- DeepID 人脸识别算法之三代
- Java设计模式之单例模式及在Android中的重要使用
- jdk和tomcat6.x环境变量配置???
- java web过滤器
- 好记性不如烂笔头
- Gradle 修改 Maven 仓库地址
- Android开发常用工具类
- 10个小球随机动
- 如何编辑修改PDF文件的内容
- c++全局变量
- Spring学习笔记----AOP编程
- 详解java定时任务