溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

過(guò)濾器統(tǒng)一全站編碼

發(fā)布時(shí)間:2020-06-17 08:49:11 來(lái)源:網(wǎng)絡(luò) 閱讀:423 作者:Adam的blog 欄目:開發(fā)技術(shù)
/**
 * 
 */
package cn.itcast.test;

import java.io.UnsupportedEncodingException;

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

/**
 * @author 國(guó)真
 * 繼承HttpServletRequestWrapper類是采用了裝飾者模式
 */
public class CharSetRequest extends HttpServletRequestWrapper {

    public CharSetRequest(HttpServletRequest request) {
        super(request); //調(diào)用父類的構(gòu)造器,給父類傳遞底層對(duì)象
    }

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

        //判斷當(dāng)前請(qǐng)求是否為get請(qǐng)求,若是則回退,重解
        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;

/**
 * 處理全站編碼問(wèn)題
 * @author 國(guó)真
 *
 */
public class CharSetFilter implements Filter {

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

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

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

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

        //創(chuàng)建山寨版的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>
向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI