zoukankan      html  css  js  c++  java
  • javaweb过滤器

    实现对web资源请求的拦截,完成特殊的操作,尤其是对请求的预处理。

    1、过滤器的实现步骤

    编写java类实现Filter接口,并实现其doFilter方法。

    自动生成以下代码

    package Filter;
    
    import java.io.IOException;
    
    import javax.servlet.Filter;
    import javax.servlet.FilterChain;
    import javax.servlet.ServletException;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;
    
    public class characterFilter implements Filter {
    
    	@Override
    	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)throws IOException, ServletException {
    		// TODO Auto-generated method stub
    
    	}
    
    }
    

    doFilter过滤器的功能实现方法

    init初始化时运行的方法

    destroy过滤器销毁时的后期处理

    doFilter方法中最后应该有  chain.doFilter(request, response); 

    chain为过滤器链,在doFilter结束后执行此话,代表本过滤结束进入下一个过滤器或执行操作。

    2在web.xml文件中对filter类进行注册,并设置所拦截的资源。

    1、注册过滤器

    2、拦截映射配置

    在web-app中配置

      <filter>
      	<filter-name>characterFilter</filter-name>   <!-- 过滤器名称 -->
      	<filter-class>Filter.characterFilter</filter-class>  <!-- 过滤器地址 -->
      </filter>
      
      <filter-mapping>
      	<filter-name>characterFilter</filter-name>  <!-- 哪个过滤器起作用 -->
      	<url-pattern>/*</url-pattern>    <!-- 对什么请求进行过滤,,/*代表所有的请求 -->
      </filter-mapping>

    3、配置并获取过滤器的初始化参数

    1、设置初始化参数

    在web.xml中的web-app中filter中配置

      	<init-param>
      		<param-name>systemName</param-name>
      		<param-value>character Encoding</param-value>
      	</init-param>
      	<init-param>
      		<param-name>version</param-name>
      		<param-value>1.0</param-value>
      	</init-param>

    param-name:参数名

    param-value:参数值

    2、获取初始化参数

    在Filter类中添加FilterConfig属性的变量

        private FilterConfig filterConfig;

    得到filterConfig的set和get方法

        public FilterConfig getFilterConfig() {
    		return filterConfig;
    	}
    
    	public void setFilterConfig(FilterConfig filterConfig) {
    		this.filterConfig = filterConfig;
    	}

    在init方法中获得传进来的FilterConfig并传给类属性

    this.filterConfig=filterConfig;

    3、使用初始化参数

    在doFilter中

    String systemName = filterConfig.getInitParameter("systemName");

    获取参数值

    3、doFilter代码编写      功能:字符编码的过滤

    在web.xml中的web-app中filter中配置

        <init-param>
      		<param-name>charset</param-name>
      		<param-value>UTF-8</param-value>
      	</init-param>

    doFilter中加入

    request.setCharacterEncoding(filterConfig.getInitParameter("charset"));

    如此在初始化时获得参数,执行时执行doFilter就完成了字符编码的过滤。

    其他注意事项,很多情况下需要将request转换成HttpServletRequest类型

    		HttpServletRequest hrequest = (HttpServletRequest)request;
    		HttpServletResponse hresponse = (HttpServletResponse)response;

    filter-mapping配置的子元素dispatcher

    当过滤器被调用前还要考虑资源被调用的方式

    直接访问页面request方式     不修改dispatcher过滤器默认是request

    include     jsp中

    forword    页面转换

    error     错误信息

    可以配置多个dispatcher

  • 相关阅读:
    linux命令
    常用正则表达式总结
    List集合对象根据字段排序
    IO字 节流/字符流 读取/写入文件
    Jquery广告浮动效果小案例
    拿到添加对象的id号方法
    Jquery省市区三级联动案例
    JAVA集合迭代遍历和特性介绍
    Listener监听器使用小案例
    java中用过滤器解决字符编码问题
  • 原文地址:https://www.cnblogs.com/zhangguangxiang/p/14232620.html
Copyright © 2011-2022 走看看