- - PR -
strutsのJSP遷移画面で文字化けしています
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2006-12-25 15:51
それは、Eclipse等の開発環境上の構成でしょうか?
実際にはコンパイル済みのクラスファイル(*.classファイル)を WEB-INF/classes以下に配置する必要があります。 また、示された図からは、SetCharacterEncodingFilterクラスは teraパッケージに属しているように見えます。 もしそうなら、web.xmlの<filter>要素は下記のようになります。 ソースコードにpackage宣言はありませんか? <filter> <filter-name>SetCharacterEncodingFilter</filter-name> <filter-class>tera.SetCharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>Shift_JIS</param-value> </init-param> </filter> |
|
投稿日時: 2006-12-25 15:54
皆さん、すみません。
http://www.javaroad.jp/opensource/js_struts10.htm ここのサイトを見本にやっていたのですが、 TomcatにSetCharacterEncodingFilterのクラスがあるので、 strutsのプロジェクトにはSetCharacterEncodingFilterのクラスは配置しなくていいのですね。読み違えてすみません。 web.xmlにのみ記述追加すればよいようです。 現在、以下の記述にしています。 【web.xml】 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/j2ee/dtds/web-app_2_3.dtd"> <web-app> <filter> <filter-name>EncodeFilter</filter-name> <filter-class>filters.SetCharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>Shift_JIS</param-value> </init-param> </filter> <filter-mapping> <filter-name>EncodeFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> .... </web-app> しかし、依然としてメニュー画面からどのJSPにも遷移しません。 <url-pattern>の記述の仕方が違うと考えられるのですが、 試しに、 <url-pattern>/tera/RegistInput.do</url-pattern> と直接URLを指定しても、RegistInput.jspに遷移しなくなってしまいました。 [ メッセージ編集済み 編集者: 社内竜王 編集日時 2006-12-25 15:55 ] |
|
投稿日時: 2006-12-25 16:03
>TomcatにSetCharacterEncodingFilterのクラスがあるので、
>strutsのプロジェクトにはSetCharacterEncodingFilterのクラスは配置しなくていいのですね。読み違えてすみません。 違います。そのクラスはTomcatのサンプルアプリケーションに含まれていますが、 使う場合には自分でアプリケーションに追加してあげる必要があります。 web.xmlにフィルタの登録があるのにも関わらず アプリケーション中に該当するクラスが存在しないために アプリケーションの初期化に失敗していると思われます。 url-patternの指定は/*で合っていると思いますよ。 [ メッセージ編集済み 編集者: T2 編集日時 2006-12-25 16:04 ] [ メッセージ編集済み 編集者: T2 編集日時 2006-12-25 16:05 ] |
|
投稿日時: 2006-12-25 16:32
T2さん色々有難うございます。
teraパッケージにSetCharacterEncodingFilter.javaを格納して、 web.xmlを以下の記述にした所、JSPは表示するようになりました。 tera(プロジェクト) |-----tera/WEB-INF/src .........|-------tera ......................|------SetCharacterEncodingFilter.java 【web.xml】 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/j2ee/dtds/web-app_2_3.dtd"> <web-app> <filter> <filter-name>EncodeFilter</filter-name> <filter-class>tera.SetCharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>Shift_JIS</param-value> </init-param> </filter> <filter-mapping> <filter-name>EncodeFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> .... </web-app> しかし、依然として文字化けは直りませんでした。 Eclipseのエンコードは、 「編集」の「エンコード」の「その他」で 「Shift_JIS」を指定しています。 struts1.1ですが、まさかFuilter機能は使えないのでしょうか? [ メッセージ編集済み 編集者: 社内竜王 編集日時 2006-12-25 16:35 ] |
|
投稿日時: 2006-12-25 16:39
ファイル自体のエンコードは?
|
|
投稿日時: 2006-12-25 16:44
mioさんの書き込み (2006-12-25 16:39) より:
ファイル自体のエンコードは? Shift_JISです。 【入力確認画面用JSP】 <%@ page language="java" contentType="text/html; charset=Shift_JIS" pageEncoding="Shift_JIS"%> <%@ taglib uri="/tags/struts-html"prefix="html"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <title>登録確認画面</title> </head> <body bgcolor="C2C222"> <html:form action="/Regist"> <% request.setCharacterEncoding("Shift_JIS"); %> ユーザーID:<%= request.getParameter("id") %><br> パスワード:<%= request.getParameter("pw") %><br> 名前:<%= request.getParameter("name") %><br> <br> これでよろしいですか? <br> <br> <input type="hidden" name="id" value="<%= request.getParameter("id") %>"> <input type="hidden" name="pw" value="<%= request.getParameter("pw") %>"> <input type="hidden" name="name" value="<%= request.getParameter("name") %>"> <input type = "submit" name = "submit" value = "完了" ><br> <br> <html:link href="registInput.jsp">戻る</html:link> </html:form> </body> </html> |
|
投稿日時: 2006-12-25 19:15
皆さん、色々有難うございました。
文字化け対策は成功致しまして、文字化けはなくなりました。 皆様にご協力戴いた結果を報告いたしたいと思います。 @【環境】 Windows2000(SP4) Tomcat4.1.27 j2sdk1.4.2 Eclipse2.1.1 struts1.1 A 【web.xml】 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/j2ee/dtds/web-app_2_3.dtd"> <web-app> <filter> <filter-name>EncodeFilter</filter-name> <filter-class>tera.SetCharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>Shift_JIS</param-value> </init-param> </filter> <filter-mapping> <filter-name>EncodeFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> .... </web-app> B実配置図 tera(プロジェクト) |-----tera/WEB-INF/src .........|-------tera .....................|------SetCharacterEncodingFilter.java CJSPのエンコード指定部をSHIFT-JISからShift_JISに変更。 DEclipseのエンコードは、 「編集」の「エンコード」の「その他」で 「MS932」を指定。 Efilter機能を設定したら、 アクションForm.javaのencode機能は削除する。 以上で文字化けは解消されました。 皆様ご協力有難うございました。 [ メッセージ編集済み 編集者: 社内竜王 編集日時 2006-12-25 19:17 ] [ メッセージ編集済み 編集者: 社内竜王 編集日時 2006-12-25 19:18 ] |
|
投稿日時: 2006-12-26 17:45
ちなみに、アクションFormは以下になります。
package tera; import org.apache.struts.action.ActionForm; public class RegistForm extends ActionForm { private String pw; private String id; private String name; public void setName(String name) { this.name = encode(name); .........encode を取る事 } public void setPw(String pw) { this.pw = pw; } public void setId(String id) { this.id = id; } public String getPw() { return this.pw; } public String getName() { return this.name; } public String getId() { return this.id; } private String encode(String value) { ........... encode メソッドは削除する事 try { value = new String(value.getBytes("ISO-8859-1"), "Shift_JIS"); } catch(Exception e) { e.printStackTrace(); } return value; } } 参考にして下さい。 [ メッセージ編集済み 編集者: 社内竜王 編集日時 2006-12-26 17:46 ] [ メッセージ編集済み 編集者: 社内竜王 編集日時 2006-12-26 17:47 ] |