1. 程式人生 > >JavaWeb專案自定義過濾器(字符集過濾器)

JavaWeb專案自定義過濾器(字符集過濾器)

一個簡單的字符集過濾器

此內容旨在記錄JavaWeb專案中擴充套件過濾器的過程,並不能完全解決專案中的亂碼問題

1、 自定義一個過濾器類
package com.jiuqi.filter;

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; /** 1. Title:CharacterFilter<br> 2. Description: 字符集過濾器 3. 4. @author QiuChangjin 5. @version 2018年4月13日 */ public class CharacterFilter implements Filter { private String character; // 字符集編碼型別 /** * Filter的初始化 */ @Override public void
init(FilterConfig filterConfig) throws ServletException { // 讀取web.xml中Filter配置的初始化引數 character = filterConfig.getInitParameter("character"); } @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws
IOException, ServletException { // 讀取初始化的引數character servletRequest.setCharacterEncoding(character); servletResponse.setCharacterEncoding(character); servletResponse.setContentType("text/html; charset=UTF-8"); filterChain.doFilter(servletRequest, servletResponse); // 放行,轉到下一個過濾器 } /** * 在Filter銷燬前,完畢某些資源的回收 */ @Override public void destroy() { } }
2、WEB-INF目錄下的web.xml中增加filter,過濾器載入是有順序的
<?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_2_5.xsd" id="WebApp_ID"
    version="2.5">
    <display-name>MyTest</display-name>
    <!-- 定義一個Filter -->
    <filter>
        <!-- Filter的名字 -->
        <filter-name>CharacterFilter</filter-name>
        <!-- Filter的實現類 -->
        <filter-class>com.jiuqi.filter.CharacterFilter</filter-class>
        <!-- 初始化引數 -->
        <init-param>
            <!-- 引數名 -->
            <param-name>character</param-name>
            <!-- 引數值,編碼為utf-8 -->
            <param-value>utf-8</param-value>
        </init-param>
    </filter>
    <!-- 定義Filter要攔截的url地址 -->
    <filter-mapping>
        <!-- Filter的名字 -->
        <filter-name>CharacterFilter</filter-name>
        <!-- 要攔截的url,這裡是所有攔截 -->
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
</web-app>
3、專案程式碼結構

這裡寫圖片描述