Last active
August 29, 2015 14:03
-
-
Save shinchit/444552b1fbb3e317d058 to your computer and use it in GitHub Desktop.
Javaによる文字コードの指定(Servlet Filter使用)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import java.io.*; | |
import javax.servlet.*; | |
import javax.servlet.http.*; | |
public class CharacterEncodingFilter implements Filter { | |
private String encoding = null; | |
// このクラスが初めて実行される時のみ一度だけコールされるメソッド。初期化に使う。 | |
// マルチスレッドの環境においては、最初のスレッドがこのクラスを呼び出した時のみ実行される。 | |
@Override | |
public void init(FilterConfig filterConfig) throws ServletException { | |
// web.xmlにて設定されている文字コードを取得 | |
this.encoding = filterConfig.getInitParameter("encoding"); | |
} | |
// リクエストの度に呼び出されるメソッド。フィルターとしての機能はここに記述する。 | |
@Override | |
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { | |
// リクエストボディの文字コードを設定 | |
request.setCharacterEncoding(this.encoding); | |
// レスポンスの文字コード(およびコンテントタイプのCharset)を設定 | |
response.setContentType("text/html; charset=" + this.encoding); | |
// 次のフィルターに処理をパスする(続くフィルターがなければServlet本体の処理が呼び出される) | |
chain.doFilter(request, response); | |
} | |
// このフィルタクラスを使う最後のスレッドが処理を終えた後、このクラスの参照が廃棄されるタイミング | |
// で1度だけ実行されるメソッド。リソースの解放など終了処理を行う。 | |
@Override | |
public void destroy() {} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment