2008年12月6日土曜日

サーブレットでエンコード

すべてのレスポンスを統一したコードに変換する方式は
web.xmlに以下を記述します。

  1. <filter>   
  2. <filter-name>encodingFilter</filter-name>   
  3. <filter-class>filter.EncodingFilter</filter-class>   
  4. <init-param>   
  5.   <param-name>encoding</param-name>   
  6.   <param-value>UTF-8</param-value>   
  7. </init-param>   
  8. </filter>   
  9.   
  10. <filter-mapping>   
  11. <filter-name>encodingFilter</filter-name>   
  12. <servlet-name>action</servlet-name>   
  13. </filter-mapping>  


まぁこれはStruts用なのでservlet-nameはactionになっていますが、
それぞれの名称にあわせてください。

このクラスに

  1. /**  
  2.  * Tomcatコード変換フィルター  
  3.  */   
  4. publicclass EncodingFilter implements Filter {   
  5.   
  6.   String encName;   
  7.   
  8.   /**  
  9.    * 初期化処理 
  10.   
  11.    * エンコード名を取得  
  12.    */   
  13.   publicvoid init(FilterConfig config) throws ServletException {   
  14.     // TODO 自動生成されたメソッド・スタブ   
  15.     encName = config.getInitParameter("encoding");   
  16.   }   
  17.   
  18.   /**  
  19.    * 実行処理  
  20.    */   
  21.   publicvoid doFilter(ServletRequest request,   
  22.                        ServletResponse response,   
  23.                        FilterChain chain)    
  24.                       throws IOException, ServletException {   
  25.     request.setCharacterEncoding(encName);   
  26.     chain.doFilter(request, response);   
  27.   }   
  28. }  


としておけばOKです。
initでコード名を取ってきていますが、
実装に依存させても大丈夫です。

0 件のコメント: