Spring注記フィルタFilter設定に基づいて、中国語の文字化けしを解決する
まず
その後、
Filter
クラスを書き、インタフェースFilter
を実現する.import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;
@WebFilter(filterName = "encodingFilter",urlPatterns = "/*")
public class encodingFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
servletRequest.setCharacterEncoding("UTF-8");
servletResponse.setCharacterEncoding("UTF-8");
filterChain.doFilter(servletRequest,servletResponse);
}
@Override
public void destroy() {
}
}
その後、
Filter
を登録し、DispatcherServlet
にマッピングし、AbstractAnnotationConfigDispatcherServletInitializer
のgetServletFilters()
を再ロードする.import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
import javax.servlet.Filter;
public class MemorandumWebAInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected Class>[] getRootConfigClasses() {
return new Class>[]{RootConfig.class};
}
@Override
protected Class>[] getServletConfigClasses() {
return new Class>[]{WebConfig.class};
}
@Override
protected String[] getServletMappings() {
return new String[]{"/"};
}
@Override
protected Filter[] getServletFilters() {
return new Filter[]{new encodingFilter()};
}
}