HUSKING - kotteri

技術系Note

【JAVA】JSP/サーブレット間の文字化け対応(Filter使用)

【状況】

サーブレットのforwardを使用して、JSP内容をブラウザに表示した際に日本語が文字化けした

【対応前にやっていた事】

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のサーバーサイド側の学習にオススメの書籍