zoukankan      html  css  js  c++  java
  • 编码过滤器 Mr

    过滤器和监听器是Servlet2.3新增的功能,在很多方面都是十分常用的组件。过滤器一般用于对全局的可匹配的访问页面进行统一的处理,体现了即插即 用的思想,比如对全局的页面进行编码设置、会话控制、页面访问权限控制等。这里介绍最简单的且最常用的编码过滤器,让作者体会过滤器的部署过程。

    使用方法:

    在web.xml中如下配置:

    <filter>
    <filter-name>EncodingFilter</filter-name>
    <filter-class>com.utils. EncodingFilter</filter-class>
    <init-param>
    <param-name>encoding</param-name>
    <param-value>gb2312</param-value>
    </init-param>
    </filter>
    <filter-mapping>
    <filter-name>EncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
    </filter-mapping>

    输入参数为encoding,目前设置为gb2312。匹配的url为/*,表示匹配所有的请求。

    在组建包中建立如下类 EncodingFilter.java:

    package com.utils;
    import javax.servlet.*;
    import javax.servlet.http.*;

    publicclass EncodingFilter extends HttpServlet implements Filter {
    private FilterConfig config =null;
    private String encoding ="";
    publicvoid init(FilterConfig config) throws ServletException {
    this.config = config;
    this.encoding = config.getInitParameter("encoding");
    }

    publicvoid doFilter(ServletRequest request, ServletResponse
    response, FilterChain chain)
    throws java.io.IOException, ServletException {
    HttpServletRequest req
    = (HttpServletRequest)request;
    HttpServletResponse res
    = (HttpServletResponse)response;
    response.setCharacterEncoding(
    this.encoding);
    java.io.PrintWriter out
    = res.getWriter();
    out.print(
    "过滤器设置编码为:"+this.encoding+"<br><br>");
    chain.doFilter(req, res);
    }
    }

    该类定义了一个变量encoding保存输入的参数,并通过init()函数取得该参数值。doFilter()函数是过滤器主要工作的地方。该类 首先去的当前页的request和response对象,调用response.setCharacterEncoding()函数来设置输入的编码参 数。需要注意的是,最后有调用页面的输出对象out输出了编码的说明文字。从过滤器的知识可知,这样每一个页面的最前面都会出现这一句话,因为 chain.doFilter()函数在其后调用。在后续的效果图中将都会有这一句话。

    编译完该类后,将class文件复制到encode\WEB-INF\classes下的com\utils下。

    (3)访问地址http://localhost:8081/encode/InitServlet,显示结果如图6-5所示。

     
    图6-5  过滤器效果图

    从效果看,结果参数正常取得并显示输出了。

    Mr-sniper
    北京市海淀区
    邮箱:rafx_z@hotmail.com
  • 相关阅读:
    三数之和
    罗马数字与整数
    Oracle 开启或关闭归档
    Oracle RMAN scripts to delete archivelog
    Oracle check TBS usage
    Oracle kill locked sessions
    场景9 深入RAC运行原理
    场景7 Data Guard
    场景4 Data Warehouse Management 数据仓库
    场景5 Performance Management
  • 原文地址:https://www.cnblogs.com/rafx/p/encoding.html
Copyright © 2011-2022 走看看