java x Ajaxの文字コード問題について - ヒビノカテ

java x Ajaxの文字コード問題について

| コメント(0) | トラックバック(0)
Technorati タグ: ,,

javaでAjaxを使用すると文字コードをUTF-8にすべてのソースをあわせないと文字化けがおきます。
jspはUTF-8で動かすのはしょうがないとしても、その裏で動くservletやデータベースの文字コードを変えないでjavaでAjaxを再現する方法です。

Ajaxは文字コードUTF-8で作成。
Java側はwindows-31Jで作成。

jspでAjaxを動く仕掛けがあります。
そのため、jspの文字コードをUTF-8で作成しないと動きません。

○jsp(UTF-8)→servlet(windows-31J)でデータを送った場合。
文字化けを起こします

○servlet(windows-31J)→jsp(UTF-8)でデータを送った場合。
文字化けを起こさない。

以上のことからjsp→servletとデータを送る間ににservletの機能のfilterを使用して文字コードUTF-8に変換して文字化けを直しました。

[コード]
package filter;
import java.io.*;
import javax.servlet.*; 

public class EncodingFilter implements Filter {
  public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
    throws IOException, ServletException {
    // エンコーディング指定
    req.setCharacterEncoding("UTF-8");
    System.out.println("Filter:" + req.getParameter("test")); 

    // 元々要求されていたリソースを呼び出します
    chain.doFilter(req, res);
  }
  public void init(FilterConfig config) throws ServletException {
  }
  public void destroy() {
  }
} 

--- 

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
 <filter>
  <filter-name>filter1</filter-name>
  <filter-class>filter.EncodingFilter</filter-class>
 </filter>
 <filter-mapping>
  <filter-name>filter1</filter-name>
  <url-pattern>/data</url-pattern>
 </filter-mapping>
 <servlet>
  <servlet-name>servlet</servlet-name>
  <servlet-class>servlet.Data</servlet-class>
 </servlet>
 <servlet-mapping>
  <servlet-name>servlet</servlet-name>
  <url-pattern>/data</url-pattern>
 </servlet-mapping>
</web-app> 

[用語]
フィルタとは?
Java Servlet API2.3から導入された新機能で、
クライアントからの要求になんらかの処理をしてサーブレット、
JSPまたはその他のリソースにその要求を渡す機能のこと。

[参考にしたサイト]
【Java & Ajax】UTF-8 でない HTML での Ajax 通信方式
http://yashawks.seesaa.net/article/31369773.html

サーブレット(フィルタ)編
http://www.hellohiro.com/filter.htm

トラックバック(0)

トラックバックURL: http://line-heart.com/blog/mt-tb.cgi/93

コメントする

2011年9月

        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30  

このブログ記事について

このページは、lineheartが2010年2月 2日 22:13に書いたブログ記事です。

ひとつ前のブログ記事は「iisとの死闘 (Windows7編)」です。

次のブログ記事は「windows7ショートカットキー」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。