過濾器統一全站編碼

/**
 * 
 */
package cn.itcast.test;

import java.io.UnsupportedEncodingException;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;

/**
 * @author 國真
 * 繼承HttpServletRequestWrapper類是採用了裝飾者模式
 */
public class CharSetRequest extends HttpServletRequestWrapper {

    public CharSetRequest(HttpServletRequest request) {
        super(request); //調用父類的構造器,給父類傳遞底層對象
    }

    //增強getParameter()方法
    @Override
    public String getParameter(String name) {
        String value = super.getParameter(name);

        //判斷當前請求是否爲get請求,若是則回退,重解
        if (getMethod().equalsIgnoreCase("GET")) {
            try {
                value = new String(value.getBytes("iso-8859-1"), "utf-8");
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }
        }
        //返回
        return value;
    }

}
package cn.itcast.test;

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;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;

/**
 * 處理全站編碼問題
 * @author 國真
 *
 */
public class CharSetFilter implements Filter {

    public CharSetFilter() {
        // TODO Auto-generated constructor stub
    }

    //釋放
    public void destroy() {
        // TODO Auto-generated method stub
    }

    //執行過濾功能
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {

        request.setCharacterEncoding("utf-8");  //只處理post請求
        response.setContentType("text/html;charset=utf-8"); //處理響 應的編碼

        //創建山寨版的request
        CharSetRequest req = new CharSetRequest((HttpServletRequest)request);
        //放行市把request掉包
        chain.doFilter(req, response);
    }

    //初始化
    public void init(FilterConfig fConfig) throws ServletException {

    }

}
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
  <display-name>tools</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  <filter>
    <filter-name>CharSetFilter</filter-name>
    <filter-class>cn.itcast.test.CharSetFilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>CharSetFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
  <servlet>
    <servlet-name>VerifyCodeServlet</servlet-name>
    <servlet-class>cn.itcast.vcode.servlet.VerifyCodeServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>VerifyCodeServlet</servlet-name>
    <url-pattern>/VerifyCodeServlet</url-pattern>
  </servlet-mapping>
</web-app>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章