• 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内核中如何访问寄存器?
    uboot加载itb文件后提示"ERROR: new format image overwritten"如何处理?
    如何单独编译Linux内核源码中的驱动为可加载模块?
    openwrt如何打开linux内核的CONFIG_DEVMEM选项?
    openwrt的shell下如何访问寄存器的内容?
    linux系统错误码大全
    第 3 章 文本元素
    第 2 章 基本格式
    第 1 章 HTML5 概述
    第 20 章 项目实战--案例和关于[7]
  • 原文地址:https://www.cnblogs.com/zhangguangxiang/p/14232620.html
Copyright © 2020-2023  润新知