【JAVA】JSP/サーブレット間の文字化け対応(Filter使用)
【対応前にやっていた事】
① JSPのpageディレクティブには以下を記載
page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"
②headタグには以下を記載
meta http-equiv="Content-Type" content="text/html; charset=UTF-8"
この状態でブラウザでJSPを表示すると文字化けした
【対応内容】
javax.servlet.Filterを使用
以下のクラスを追加した
@WebFilter(urlPatterns = {"/*"}) public class ServletFilter implements Filter { private static final String encoding = "UTF-8"; @Override public void destroy() { // TODO 自動生成されたメソッド・スタブ } @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { // 文字コード設定 request.setCharacterEncoding(encoding); response.setContentType("text/html charset=" + encoding); chain.doFilter(request, response); } @Override public void init(FilterConfig arg0) throws ServletException { // TODO 自動生成されたメソッド・スタブ } }
doFilterメソッド内で
- レスポンスデータのコンテンツタイプ指定
を記述する事で文字化けしなくなった
最後に、JAVAのサーバーサイド側の学習にオススメの書籍