JavaWeb project custom filter (charset filter)

a simple charset filter

This content is intended to record the process of extending filters in JavaWeb projects, and cannot completely solve the problem of garbled characters in projects

1. Customize a filter class
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. Add filter to web.xml under WEB-INF directory, filter loading is in order
<?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. Project code structure

write picture description here

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=324380217&siteId=291194637