`

filter应用

阅读更多

web.xml

 

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
 xmlns="http://java.sun.com/xml/ns/j2ee"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
 http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
  <filter>

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

     <filter-class>com.util.filter.CharsetEncodingFilter</filter-class>

     <init-param>
           
            <param-name>encoding</param-name>

            <param-value>GB18030</param-value>

     </init-param>
     <init-param>
   <param-name>cityCode</param-name>

            <param-value>091</param-value>

     </init-param>

 </filter>

 <filter-mapping>

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

     <url-pattern>/TestServlet</url-pattern>
</filter-mapping>
  <servlet>
    <servlet-name>TestServlet</servlet-name>
    <servlet-class>org.mvo.servlet.TestServlet</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>TestServlet</servlet-name>
    <url-pattern>/TestServlet</url-pattern>
  </servlet-mapping>

 
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>

 

filter

 

package com.util.filter;

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

import org.mvo.common.StringUtils;

import java.util.*; // For Date class

/**
 * Simple filter that prints a report on the standard output each time an
 * associated servlet or JSP page is accessed.
 */

// 定义一个成员变量用于在init()方法里得到配置文件里<init-param>中对应 <paramname>encoding</param-name> 的
// <param-value>GB18030</param-value>值;其中GB18030值可以更改比如gbk等;

public class CharsetEncodingFilter implements javax.servlet.Filter {
 FilterConfig fc;

 public void doFilter(ServletRequest request, ServletResponse response,
   FilterChain chain) throws ServletException, IOException {
  // 1,doFilter方法的第一个参数为ServletRequest对象。此对象给过滤器提供了对进入的信息(包括表单数据、cookie和HTTP请求头)的完全访问。第二个参数为ServletResponse,通常在简单的过滤器中忽略此参数。最后一个参数为FilterChain,此参数用来调用servlet或JSP页。

  HttpServletRequest req = (HttpServletRequest) request;// 如果处理HTTP请求,并且需要访问诸如getHeader或getCookies等在ServletRequest中无法得到的方法,就要把此request对象构造成HttpServletRequest。

  // request1.setCharacterEncodeing("");
  // System.out.println("进来");
  
  String provCode = fc.getInitParameter("cityCode");
  
  boolean flg = false;
  
  HttpSession session = req.getSession();
  String cityCode = (String) session.getAttribute("CityCode");
  cityCode = StringUtils.StrNullDeal(cityCode);
  
  System.out.println(cityCode);
  if (cityCode.equals(provCode)) {
   if ("有手机号".equals("有手机号")) {
    session.setAttribute("CityCode", "910");
    flg = true;
   }
  }
  chain.doFilter(request, response);
  if (flg) {
   session.setAttribute("CityCode", provCode);
  }
  System.out.println(session.getAttribute("CityCode").toString());
  // System.out.println("出去");
  // 2.调用FilterChain对象的doFilter方法。Filter接口的doFilter方法取一个FilterChain对象作为它的一个参数。在调用此对象的doFilter方法时,激活下一个相关的过滤器。如果没有另一个过滤器与servlet或JSP页面关联,则servlet或JSP页面被激活。

 }

 public void init(FilterConfig config) throws ServletException {
  this.fc = config;
//  String provCode = config.getInitParameter("cityCode");
//  System.out.println(provCode);
  // encoding =
  // FilterConfig.getInitParameter("encoding");//FilterConfig对象具有一个getInitParameter方法,它能够访问部署描述符件
  // //(web.xml)中分配的过滤器初始化参数
 }

 public void destroy() {
  fc.getInitParameter("cityCode");
 }

}

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics