[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 03/18 15:43 / Filesize : 258 KB / Number-of Response : 938
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

△△もっとStrutsの良さを教えてくださいSession5



1 名前:デフォルトの名無しさん [2006/12/30(土) 18:05:08 ]
Apache Strutsフレームワークについて語るスレ

前スレ
△△まだまだStrutsの良さを教えてくださいSession4
pc8.2ch.net/test/read.cgi/tech/1109465052/

792 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 18:39:32 ]
>>791
答えではないけれど、
Struts2ではsession.invalidate()は避けてほしいらしい。
struts.apache.org/2.x/docs/how-do-we-get-invalidate-the-session.html

ちなみに、Struts1+Tiles利用時にsession.invalidate()→レスポンス吐く前に
sessionを新規作成しようとしても、うまく動かない現象は起こる。

理由は、セッションを破棄すると、そのロケール情報もなくなってしまって
ロケールによる自動振り分けが失敗する。

ロケールなしの時の設定をしていても動かず、
セッション破棄→新セッション作成後にロケールを追加すると動いたので
そういうのが原因だろうかね。

793 名前:デフォルトの名無しさん [2008/06/15(日) 00:58:09 ]
sessionをプレゼンテーション層的観点で皮相的にとらえると上手くいかない。
自分もstruts2とacegisecurity(spring security)を組み合わせたカスタマイズで苦労した。


794 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 07:53:02 ]
HTTP Status 503 - サーブレット action は現在利用できません

--------------------------------------------------------------------------------

type Status report

message サーブレット action は現在利用できません

description The requested service (サーブレット action は現在利用できません) is not currently available.


--------------------------------------------------------------------------------

Apache Tomcat/4.1.24


というエラーが出るのですが、原因としてはどのようなことが考えられるでしょうか?
tomcat 4.1.24
jre 1.50
struts 1.22

です。ご教授いただければありがたいです。

795 名前:デフォルトの名無しさん [2008/06/22(日) 14:16:47 ]
あげときます

796 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 15:30:42 ]
よろしくお願いします。

Struts2で、iteratorタグを使用しています。

<s:form>
<s:iterator value="hogelist">
  <s:property value="no">
<s:textfield name="hogelist.get(%{no}).hoge" value="%{hoge}" />
</s:iterator>

<s:submit action="hogeaction" value="送信" />
</s:form>

上記のようにに作っていて、初期表示でデータを表示させることはできています。
送信ボタンを押してActionを呼び出したら、
hogelistの中にテキストフィールドで入力した値が入っていることを望んでいるのですが、
データを取得することができません。

nameの書き方が悪いのでしょうか?それともこういった使い方はできないのでしょうか?
どうかご教授ください。



797 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 15:37:40 ]
えー、マジTomcat4?今時許されない

798 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 15:49:56 ]
なんかの保守じゃねえの?

799 名前:796 mailto:sage [2008/06/22(日) 17:30:06 ]
>>796

name="hogelist.hoge"でいいんだぜ

800 名前:796 mailto:sage [2008/06/22(日) 17:47:08 ]
>>796
ごめん、嘘ついた。
データは取得できるけど、名前が重複して変になる。



801 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 16:42:05 ]
>>794
エラー画面だされても意味がわからんので、リクエストしてるURLとエラーが出てるログファイルから判断しろ。
話はそれからだ。

>>796
<s:iterator value="hogelist" status="idx">
と、イテレーションのループ変数を宣言、

<s:textfield name="hogelist[idx]" />
でいいんじゃないのかね。

ただ、そのままだとValidatorを使ったときに困ると思う。

802 名前:796 mailto:sage [2008/06/24(火) 09:45:20 ]
>>801
ありがとうございます。泣く泣く固定の変数使ってやってました。
statusを使用するんですね。

<s:form>
 <s:iterator value="hogelist" status="idx">
 <s:textfield name="hogelist[%{#idx.index}].hoge" value="%{hoge}" />
</s:iterator>

 <s:submit action="hogeaction" value="送信" />
</s:form>

これでhogelistにデータを入れることができました。
Validatorは今のところ使用していないので、スルーの方向で。

スッキリ解決しました。お世話になりました!

803 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 16:27:56 ]
>>801
有難う御座います。また出直します。

804 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 18:34:46 ]
strutsにも飽きてきた。

strutsに代わるフレームワークってないの?
個人的にはwicket辺りに注目してるんだけどあんまり流行ってない?


805 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 19:03:04 ]
>>804
作っちゃおうぜ

806 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 20:20:56 ]
飽きたらカスタマイズか新作なんかね、wicketは日本で人気っぽいけど。
または自動生成ツールを作るとか、RIA側に手を出すか。

ちなみに、Struts2.2と2.5出るのって本気なのかね。

807 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 20:32:23 ]
>>804
dolteng入れてTeeda使うと笑えるよ

808 名前:デフォルトの名無しさん [2008/06/27(金) 01:50:54 ]
>>806
2.2と2.5でどうなるの?

809 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 21:08:28 ]
journal.mycom.co.jp/news/2008/06/05/020/index.html
らしい。つか、Guice入ってるような気がするんだが。。

810 名前:デフォルトの名無しさん [2008/06/28(土) 02:12:13 ]
>>809
springと離婚するのか?



811 名前:デフォルトの名無しさん [2008/06/28(土) 02:15:57 ]
AJAX対応とスピードアップってことだな、2.2は

812 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 10:57:13 ]
2.0だとdojoプラグイン(でも0.4)が既にバンドルされている。
dojo1.0に対応するのか、それとも他も使えるといいんだが…

2.2以降が出るのを待つかなぁ。

813 名前:794 mailto:sage [2008/06/28(土) 14:17:11 ]
リクエストしているURLは
localhost:8080/example/chap02/login.do?id=&password=
です。
www1.axfc.net/uploader/Img/so/14922.jpg
にアップロードした画面からリクエストされます。

ログファイルはC:\tomcat\logsにありますが、どれを挙げれば
よろしいでしょうか?

独学で聞ける人もいないので、このスレが頼りです。ご返信
いただければ幸いです。

814 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 15:13:00 ]
特にヘンな設定していなければ、
ログファイルは、catalina.yyyy-mm-dd.out

Struts系の設定ファイルはきちんと書かれているか
- web.xmlにstrutsの定義があるか
- struts-config.xml
<form-beans>と<action-mapping>がきちんと設定されているか

基本的すぎる内容なので自分で調べまくる方がいいとは思うが。

815 名前:デフォルトの名無しさん [2008/06/28(土) 15:13:27 ]
ageときます

816 名前:デフォルトの名無しさん [2008/06/28(土) 15:24:28 ]
よろしくお願いします。

struts2を勉強しています。

propertiesファイルにUnicodeエスケープ形式で
メッセージを書くのが面倒なのです。
ツールやプラグインを使用していますが、

XML形式で書くと、日本語をツールなしに使えると伺いました。
書き方等教えていただけないでしょうか。よろしくお願いします。

817 名前:794 [2008/06/28(土) 15:28:51 ]
レス有難う御座います。

ログファイルは、C:\tomcat\logsに
・ localhost_log.2008-06-28.txt
・ localhost_admin_log.2008-06-28.txt
・ localhost_examples_log.2008-06-28.txt

がありますが、このうちどれでしょうか?

web.xmlも確認しましたが、特に自分では変なところは見つかりませんでした。
下記のとおりです。

<?xml version="1.0" encoding="Shift_JIS"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "jakarta.apache.org/struts/dtds/struts-config_1_2.dtd">
<struts-config>
<form-beans>
<form-bean name="chap02_loginForm" type="chap02.LoginForm"/>
</form-beans>
<global-exceptions>
</global-exceptions>
<global-forwards>
</global-forwards>
<action-mappings>
<action path="/chap02/login"
type="chap02.LoginAction"
name="chap02_loginForm"
scope="request" >
<forward name="success" path="/WEB-INF/jsp/chap02/success.jsp"/>
</action>
</action-mappings>
</struts-config>

818 名前:794 [2008/06/28(土) 15:30:36 ]
間違えました。↑はstruts-config.xmlでした。
web.xmlは下記のとおりです。

<?xml version="1.0" encoding="Shift_JIS"?>
<web-app xmlns="java.sun.com/xml/ns/j2ee"
xmlns:xsi="www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="java.sun.com/xml/ns/j2ee
java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4">

<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>


</web-app>

何かご指摘いただければ幸いです。よろしくお願いします。

819 名前:794 [2008/06/28(土) 16:43:41 ]
struts.jarなどをeclipseの「プロジェクト」→「プロパティ」→「JAVAのビルド・パス」
→「ライブラリ」タブでインポート(とでも言うのでしょうか?)していたのを、直接
アプリケーションのWEB-INF\lib配下にコピペしたらエラーメッセージが変わりました。
下記のとおりです。

HTTP Status 404 - パス {0} に対するリクエストは無効です

--------------------------------------------------------------------------------

type Status report

message パス {0} に対するリクエストは無効です

description The requested resource (パス {0} に対するリクエストは無効です) is not available.


--------------------------------------------------------------------------------

Apache Tomcat/4.1.24

820 名前:794 [2008/06/28(土) 16:57:28 ]
うまくいきました!

原因ですが、やはりWEB-INF\libに直接コピペしたのがよかったようです。
上記のエラーからは、struts-config.xmlのミスで、やっとうまくいきました!!!

本当に有難う御座いました!
またお世話になることがあると思いますが、その際はどうかよろしくお願いします!!



821 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 17:09:02 ]
>>819
遷移先のパスは<forward name="success" path="/jsp/chap02/success.jsp"/>でいいんじゃないのか?


822 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 17:09:50 ]
おっと、自己解決してたw

823 名前:794 [2008/06/28(土) 17:10:25 ]
>>821

はい、そこを直したら無事動きました!!ありがとうございました!!!!

824 名前:794 [2008/06/28(土) 22:14:06 ]
さきほどは皆様、ありがとうございました!
次のステップに進んだのですが、またエラーに引っかかりました。

MappingDispatchActionを使って、データベースへの入力をひとつの
アクションで済まそうとし(正確には、使っている本にMapping
DispatchActionを使うように書いている)たら、下記のエラーが出ました。
ご教授いただければ幸いです。どうぞよろしくお願いいたします。
HTTP Status 500 -

--------------------------------------------------------------------------------

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: クラス database.DBActionForm のbeanを生成する際の例外: {1}
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:254)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
at filter.EncodingFileter.doFilter(EncodingFileter.java:30)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:213)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
エラーメッセージが長いので、途中で切れます

825 名前:デフォルトの名無しさん [2008/06/29(日) 01:13:45 ]
初心者スレかと思た
面倒見の良い人がいて良かったな

826 名前:794 [2008/06/29(日) 07:15:25 ]
>>825
そうですね、本当にありがたいです!!!

827 名前:デフォルトの名無しさん mailto:sage [2008/06/29(日) 12:06:05 ]
>>824
・struts-config.xml に正しくActionクラス、Beanクラス等を定義できているか
・JSP内のパスは、struts-config.xmlに定義した名前になっているか

828 名前:デフォルトの名無しさん mailto:sage [2008/06/29(日) 12:37:03 ]
MappingDispatchActionをぐぐると思いっきり出てくるんだが。
MappingDispatchActionを使う場合の必須事項はちゃんとやってるんだろうな…

829 名前:デフォルトの名無しさん mailto:sage [2008/06/29(日) 13:04:52 ]
>>816
Eclipseプラグインのプロパティエディタ使えば、プロパティファイルをマルチバイトでそのまま編集できるぞ。

逆に
>XML形式で書くと、日本語をツールなしに使えると伺いました。
の出所を知りたい。

830 名前:794 [2008/06/29(日) 13:18:03 ]
>>827
>>828

ありがとうございます!また試行錯誤してみます!



831 名前:816 mailto:sage [2008/06/29(日) 15:44:07 ]
>>829
知り合いがどこかで見たことがあるという、とても曖昧なソースです。。

以前eclipseプラグインをいれようとしましたが、相性が悪かったのか
プラグインが認識できず、スタンドアロン版を使用していました。

PCも変わったので、eclipseプラグインを再度入れてみたら
すんなり入れることができました。お騒がせしました。

832 名前:デフォルトの名無しさん mailto:sage [2008/06/29(日) 16:28:54 ]
Properties#loadFromXML
を使えばってことでしょ。
struts2では、xml形式かどうかなんか判断してないと思うので使えないと思うけど。


833 名前:794 [2008/06/30(月) 01:08:09 ]
さきほど、エラーが通りました!むちゃくちゃうれしいです!
皆様、本当に有難う御座います!

834 名前:デフォルトの名無しさん [2008/06/30(月) 01:19:54 ]
>>833
偉いね

835 名前:デフォルトの名無しさん mailto:sage [2008/06/30(月) 16:04:57 ]
偉くねーよ。
お礼の前に「なにを直したら動くようになったのか」を
書かないと情報量0じゃねーか。

836 名前:794 [2008/06/30(月) 17:54:24 ]
>>835
すみませんでした。
一からすべて書き直したら、エラーが通りました。どこが悪かったのかは
わからないままでした。

837 名前:デフォルトの名無しさん mailto:sage [2008/07/01(火) 05:13:57 ]
struts2のアクションのPackageについて解説したURLご存じの方居ませんか?

struts.xmlで
<package name="admin" namespace="/" extends="visitor">
という宣言をして、/com/xxx/action/admin/の配下にアクションクラスを
置いたら、ParentPackage(vlaue="admin")を指定していないアクションまで
このPackageが適用されているようでハマりました。
ログイン前のページはこのPackage適用したくないのですが、
ParentPackage(value="visitor")と宣言していても
adminパッケージを利用するようです。

開発者はクラス名やパッケージ名から自動的に判断するのが便利だとでも思っているのでしょうか。
正直なにがおきているのかわかりにくくてウザいです。
せめて明示的にParentPackage指定したときくらい
それに従って欲しい


838 名前:デフォルトの名無しさん mailto:sage [2008/07/01(火) 10:27:39 ]
>>837
struts.xmlのpackage name=visitorの部分晒してみ?

839 名前:デフォルトの名無しさん mailto:sage [2008/07/01(火) 16:20:13 ]
こんな感じだけど、visitorがなんか関係あんの?adminじゃなくて?
<package name="visitor" namespace="/" extends="ベース">
 <interceptors>
  <interceptor宣言>
  <interceptor-stack name="visitorStack">
   <interceptor-ref さっき宣言した奴 />
   <interceptor-ref ベーススタック />
  </interceptor-stack>
 </interceptors>
 <default-interceptor-ref name="visitorStack" />
</package>

840 名前:デフォルトの名無しさん mailto:sage [2008/07/01(火) 16:30:41 ]
前にも質問したのですが、struts2のformタグで生成されるタグを
xhtmlではなくhtmlにする設定は無いのでしょうか?
template/*.ftlを一式全部つくらないと無理でしょうか。




841 名前:デフォルトの名無しさん mailto:sage [2008/07/01(火) 22:15:36 ]
>>837
それぞれのActionに
@Namespace("/")
て書けば期待したような動きになると思う

842 名前:デフォルトの名無しさん mailto:sage [2008/07/02(水) 00:45:58 ]
>>837
継承元となるpackage要素には、次の決まりがあるみたい。
・abstract="true"をつける
・abstractのパッケージは、ネームスペースを持ってはいけない。
→他のパッケージ要素たちも、きちんとネームスペースを割り当ててあげないと誤動作する現象がある。

>>840
それって、theme=simpleでもダメなんだっけ。

843 名前:デフォルトの名無しさん mailto:sage [2008/07/02(水) 03:03:26 ]
>>842
今simple
xhtmlみたけど、内部でsimpleのftlをincludeして拡張
してるだけっぽい。
simple/submit.ftlの中を見たらケツの方に「/>」と直書きしてあるっぽい

ftl作り直すとしたらクラスパスにtemplateってフォルダ作って
そこにtheme名でフォルダ作ったら勝手に認識してくれるのかな。
まさかカスタムしたやつをstruts-xxx.jarに埋めるわけにもいかないし。

というわけでinput(accessKeyの件),fmtに続いて
ボディの無いタグもすべてstruts2のものは使わないことにした。
絶対に非struts2のタグで統一した方が便利。

844 名前:デフォルトの名無しさん mailto:sage [2008/07/02(水) 08:04:16 ]
>>843
イエス。
で、その中にtheme.properties置いて、parent=(継承テンプレート名)でいける。
使いにくい!と感じたら、ポリシーもって「使わないもの宣言」するのもありかね。

まぁ、あくまであの初期テンプレートたちはサンプル実装らしいが…

845 名前:デフォルトの名無しさん mailto:sage [2008/07/02(水) 17:17:17 ]
Struts2のアクションのテストケースって、どういう風に書くのが一般的?

846 名前:843 mailto:sage [2008/07/02(水) 20:16:36 ]
不具合報告者の日本語がおかしくて、ログインボタンが無いっていうから
てっきりsubmitボタンだけ表示されないのかと思ってxhtmlが
駄目なのかと判断したんだけど、どうも全然違うURLを開いていたようだ。
とりあえず今のところ<input ... />となっていても不具合のある携帯は
なさそう。でもなあ、DOCTYPEでHTML宣言してるのにxhtmlが混じってるのは
気持ち悪いっていうか、お客に出すシステムとしては恥ずかしいなあ。

847 名前:デフォルトの名無しさん mailto:sage [2008/07/02(水) 21:14:08 ]
4月にIT企業に入社したものの、配属先が見つからずにモソモソと自習している物です。
JVM 1.6.0_05-b13 Tomcat5.5 Struts2.011 Eclipse3.3でサンプルを作りながら慣れようと思い、会社で勉強しています。
ttp://www15.plala.or.jp/k_maeba/struts2/のサイトを参考にしながら進めているのですが、ゼロコンフィグを試したところで詰まってしまいました。

Tomcat Managerで実行中であることを確認して選択すると404エラー(The requested resource (アクション名) is not available.)が返ってきます。
フィルタマッピングがまずいのか、バリデーションした結果のinputのjspを作っていないのが悪いのかよくわからなくなってしまいました。
以下配備ログです。
2008/07/01 13:59:52 org.apache.catalina.startup.HostConfig deployWAR
情報: Webアプリケーションアーカイブ ManageUser1.war を配備します
2008/07/01 13:59:53 com.opensymphony.xwork2.config.providers.XmlConfigurationProvider register
情報: Parsing configuration file [struts-default.xml]
2008/07/01 13:59:54 com.opensymphony.xwork2.config.providers.XmlConfigurationProvider register
情報: Parsing configuration file [struts-plugin.xml]
2008/07/01 13:59:54 com.opensymphony.xwork2.config.providers.XmlConfigurationProvider register
情報: Parsing configuration file [struts.xml]
2008/07/01 13:59:54 org.apache.struts2.config.Settings getLocale
警告: Settings: Could not parse struts.locale setting, substituting default VM locale
2008/07/01 13:59:55 com.opensymphony.xwork2.util.ResolverUtil findInPackage
情報: Scanning for classes in [/C:/apache-tomcat-5.5.26/webapps/ManageUser1/WEB-INF/classes/pkg/sample/] matching criteria: org.apache.struts2.config.ClasspathConfigurationProvider$1@1f287e8
2008/07/01 13:59:55 com.opensymphony.xwork2.util.ObjectTypeDeterminerFactory <clinit>
情報: Setting DefaultObjectTypeDeterminer as default ...

struts.xmlとweb.xmlの内容は参考にしたサイトそのままなので
/user1/struts.xml.txt
/user1/web.xml.txt
と同一です。何か設定が必要なのでしょうか?

848 名前:デフォルトの名無しさん [2008/07/03(木) 00:57:24 ]
>>847
初心者は既に動いてるサンプルプログラムをダウンロードしていろいろ試した方が良いと思うよ。
まずは知ることから始めなさい、だ。

849 名前:847 mailto:sage [2008/07/03(木) 06:35:21 ]
>>848
Struts付属のサンプルプログラムをポチポチといじってみたのですが良くわからず、
もっと基礎的な部分からやってみたほうがいいのかと上記サイトに行き着いた次第です。

サイトでは使用するソースをダウンロードできるのですが、
そこからプロジェクトを丸々落としてきても404なので首を捻っていた次第です。

もう少し付属のサンプルのxmlファイルとにらめっこしてみます。

850 名前:デフォルトの名無しさん mailto:sage [2008/07/03(木) 23:44:14 ]
>>847
struts.xml.txtでどきどきしてしまった俺がいる。
拡張子はtxtじゃないよな…?

そうだなぁ…日本語でサンプル公開してる所ではmaven2利用してるものも結構ある。
あとは>>848の通り、Struts2以外で覚えるの多いかなー。超頑張れ。

ウチもサンプルとか公開してるので、ぐぐった履歴とかもついでに集計してるんだけど
結構みんな色んなので悩んでるね。
多いのはValidator(Validation)、Annotation、ModelDriven、Uploadとか。



851 名前:デフォルトの名無しさん mailto:sage [2008/07/04(金) 22:47:59 ]
いあいあ、それは大丈夫です。.xml.txtになっているのはサイトのアドレスがそうなっているからでして。

来週からプロジェクトに参加することになったのでstruts2とは暫しお別れです。
まぁプロジェクトではたぶんstruts+spring+もう一個DB系のフレームワーク?でやるらしいんで
これからよろしくねstruts1。

struts1のことで判らなくなったらまたお世話になります。

852 名前:794 [2008/07/04(金) 23:08:38 ]
現在、struts1.29でWEBアプリを作っています。 JSPで入力画面を作り、入力して送信ボタンを押すと、入力した
内容がデータベースに反映されるようになっています。そこまでは いいのですが、データベースに反映された内容が文字化けして
しまっています。 考えられる対策はすべてしようと思い、以下の対策をしました。
1 filter

web.xmlに以下の記述をしました。
<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"java.sun.com/dtd/web-app_2_3.dtd">

<web-app>

<filter>
<filter-name>EncodeFilter</filter-name>
<filter-class>SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>EncodeFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>


<servlet>
(以下略)



853 名前:794 [2008/07/04(金) 23:10:04 ]
続きです。

2 MYSQL側のエンコーディング設定

MYSQL側のエンコーディング設定を色々といじって、下記のような
状態にしました。

mysql> show variables like "char%";
+--------------------------+---------------------------------------------------------+
| Variable_name | Value |
+--------------------------+---------------------------------------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | utf8 |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | C:\\Program Files\\MySQL\\MySQL Server 5.0\\share\\charsets\\ |
+--------------------------+---------------------------------------------------------+



854 名前:794 [2008/07/04(金) 23:11:59 ]
同じく続きです

mysql> status;
--------------
mysql Ver 14.12 Distrib 5.0.27, for Win32 (ia32)

Connection id: 1
Current database: input
Current user: root@localhost
SSL: Not in use
Using delimiter: ;
Server version: 5.0.27-community-nt
Protocol version: 10
Connection: localhost via TCP/IP
Server characterset: utf8
Db characterset: utf8
Client characterset: utf8
Conn. characterset: utf8
TCP port: 3306
Uptime: 4 hours 59 min 41 sec

mysql> show create database input;
+----------+----------------------------------------------------------------+
| Database | Create Database |
+----------+----------------------------------------------------------------+
| input | CREATE DATABASE `input` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+----------+----------------------------------------------------------------+



855 名前:794 [2008/07/04(金) 23:12:41 ]
長々と申し訳ないです。これがラストです。

mysql> show create table input;
+-------+-------------------------------
----------------------------------------
| Table | Create Table

+-------+-------------------------------
----------------------------------------
| input | CREATE TABLE `input` (
`id` int(11) NOT NULL auto_increment,
`title` text,
`movie_url` text,
`material_url` text,
`explanation` text,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+-------+-------------------------------

考えられる対策はすべてしても、なお文字化けしています。なお、 「あ」「い」「う」「え」とそれぞれの項目に入力すると以下の
ようになります。

| 縺・ | 繧」 | 繧ヲ | 蠕・ |

どんなことでも結構ですので、ご教授いただければ幸いです。 どうぞよろしくお願いいたします。

開発環境  OS;WINDOWS VISTA SP1
IDE;ECLIPSE 3.32
DB;MYSQL5.0
JRE;jre1.6.0_06
struts;1.29


856 名前:デフォルトの名無しさん mailto:sage [2008/07/05(土) 01:09:09 ]
JSPがUTF-8じゃないとか

857 名前:デフォルトの名無しさん mailto:sage [2008/07/05(土) 01:31:53 ]
切り分けるためにDBに入れる前にアクションで
ログ吐いた方がいい
SetEncodingFilterでUTF指定してるなら俺も>>856に一票

858 名前:デフォルトの名無しさん mailto:sage [2008/07/05(土) 01:46:07 ]
FORMをGETで送っていて、Tomcatのserver.xmlの設定をしてないとか

859 名前:794 [2008/07/05(土) 04:04:06 ]
>>856-858
皆様、レス有難う御座います。

JSPはUTF-8に設定してあります。
<%@page contentType="text/html; charset=utf-8"%>
とページの一番上に指定してあります。

>>切り分けるためにDBに入れる前にアクションでログ吐いた方がいい

初心者で申し訳ないのですが、詳しく教えて頂けないでしょうか?

現時点では、フォームの画面で入力し、SUBMITボタンを押すとフォワード
で「入力完了」とだけ表示されるJSPに移動する状態です。そして、SUBMITボタンを押した
時点でDBに反映されます。それを、フォームの画面で入力し、SUBMIT
ボタンを押すと入力した内容がJSPに表示され、入力した内容を
確認させてからもういちどSUBMITボタンを押すことでDBに反映させる
ようにする、ということでしょうか?


>>FORMをGETで送っていて、Tomcatのserver.xmlの設定をしてないとか

初心者で申し訳ないのですが、詳しく教えて頂けないでしょうか?

FORMにGETとPOSTがあるのは知っていますが、どうやって見分ける
(もしくは使い分ける)のかはまだ分からない状態です。今回のWEB
アプリは本に載っているのを参考に作ったので、まだソースで理解し
きれてない部分があるのも事実です。大変申し訳ないですが、詳しく
教えて頂けないでしょうか?

860 名前:デフォルトの名無しさん mailto:sage [2008/07/05(土) 04:40:05 ]
SET NAMES UTF8 な予感



861 名前:デフォルトの名無しさん [2008/07/05(土) 05:24:36 ]
今回は、レベル低過ぎだな

862 名前:794 [2008/07/05(土) 10:03:40 ]
>>860
SET NAMES UTF8 というコマンドは知りませんでした!ありがとうございます!

>>861
低レベルで申し訳ないです・・・ orz

863 名前:デフォルトの名無しさん mailto:sage [2008/07/05(土) 12:08:58 ]
>>859
初心者なら、まずはSystem.out.printlnでFORMから受け取った文字を出してみることだね
StrutsのAction上で、ActionFormにセットされたパラメータを出力してみる
そこが文字化けしていたら、FliterかTomcatの問題の可能性
そこが文字化けしていなかったら、DB登録時に文字化けしている可能性が高い

FORMのGET・POSTを見分けるには、
出力されたHTMLのformタグに、method="POST"みたいなのが書いてあるか
チェックするといい。method属性が書いてなければ、デフォルトでGETになる
Strutsのhtml:formタグを使っているなら、デフォルトでmethod="POST"になっている筈

使っているのがTomcat5以降で、もしGETを使っていたら
server.xmlのConnectorに URIEncoding="UTF-8"
を追加してやる必要がある

864 名前:デフォルトの名無しさん mailto:sage [2008/07/05(土) 12:24:55 ]
だいたいmysql文字化けのほとんどは>>860だな。
set names するのがイヤならjdbcのurlは

jdbc:mysql://ほげほげ&useUnicode=true&characterEncoding=utf8
でよいな

865 名前:デフォルトの名無しさん mailto:sage [2008/07/05(土) 12:33:47 ]
[mysqld]
default-character-set=utf8
skip-character-set-client-handshake

これでSET NAMESは要らなくなる
794のstatus見る限り、ここはクリア出来ているように見える

866 名前:デフォルトの名無しさん mailto:sage [2008/07/05(土) 12:58:44 ]
まぁ、JSPがUTF-8なら大丈夫だと思うけど、
その送信元ページにメタ要らなかったっけ。

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

あとは皆の言ってくれた通り、
Actionなどでログ吐いてみて、どこで化けてるかを切り分ければいいんじゃないかね。

867 名前:デフォルトの名無しさん mailto:sage [2008/07/05(土) 13:03:37 ]
あ、あとWin版のMySQL5.0だと、
UTF-8設定はインストール時にがっつりやってしまってくれるので
悩まなくなったかな。

余談だけどStruts2だとEncodingFilterなんか設定しないから
昔の苦労なんかしなくなった感じだよなぁ。。
「ウェーブダッシュが化けます」とかさ…

今もたまに頼まれるんだけど

868 名前:デフォルトの名無しさん mailto:sage [2008/07/05(土) 13:49:44 ]
まぁそれでも文字化けするのがmysqlなんだけどな

869 名前:デフォルトの名無しさん mailto:sage [2008/07/05(土) 15:11:53 ]
男は黙ってpostgres

870 名前:デフォルトの名無しさん mailto:sage [2008/07/05(土) 16:49:02 ]
ポスグレって、Oracle互換にするんだっけ。



871 名前:794 [2008/07/05(土) 19:57:42 ]
おお、みなさん、たくさんのレス有難う御座います!!
いろいろ試行錯誤してみますね!

また来ます!!!

872 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 01:21:54 ]
>>871
おー、頑張れ。
おまいさんの今やってることは皆通ってきた道で、
同じように同じようなところでつまづいて、
でも切り抜けた連中ばかりがここにいる。

まずは自分で稼働できるようになれば、二度と忘れることはないだろう。
似たようなトラブルがあったとしても、切り抜けるヒントにもなる。

動くようになって、それで終わるのでもいいが、動いたら動いたで
「なんで動かなくなったんだろう?」を調べることが大事。

873 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 01:26:17 ]
>>872
つーか、mysqlのトラブルは経験値というより、
時間の無駄タイプが多かったからのぅ・・・

874 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 02:44:17 ]
というかmysql4.1のときは本当に解決手段なかったからなぁ
4.1.6だったっけ?あのあたりからマルチバイトがまともに動かなくなって
直るまでには1年以上放置

その間にWindowsネイティブ対応したPostgreSQL8にもっていかれたという感が強い

875 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 06:17:49 ]
すれ違いな話題を引っ張ってすまん。
前は日本ではmysqlとpostgresのシェアが半々くらい、
海外ではmysqlの方が断然多いと聞いていた。
実際オープンソースプロジェクトで標準DBがmysqlの物が
一番多いようにみえる。postgresも次点くらいに多いけど。

20年ほど前、LinuxとFreeBSDのシェアが日本では半々だけど
海外ではLinuxが圧倒的に多かった。結局LinuxがUNIX互換OSの
デファクトになった。DBではpostgresが逆転するかもってこと?
だと嬉しいんだけどなあ

876 名前:794 [2008/07/06(日) 10:05:46 ]
>>872

本当にありがとうございます!このスレ、いい方ばかりです。

まずは今、まずは今アクションフォームから受け取った文字を出してみる
ことを頑張っています。


877 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 12:02:57 ]
結局Strutsで作るってなると、オープンソースのDB使うこと多いから
あながちスレ違いでもなさそうだけどね。

先月どっかのセミナー聴講したときに、ポスグレのおっさんが言ってたけど
未だにMySQLの方がシェア高く、ポスグレは次点だけど、新製品でどんどんシェア伸ばす予定だそうな。

>>873-874
そうだったねぇ…5.0になってようやくマシになった感じ。
まぁ、MySQLのGUIツールの方が優秀に見えるけど
マルチバイトを入力するとハングするのはいただけない。

878 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 13:40:43 ]
>>877
> 結局Strutsで作るってなると、オープンソースのDB使うこと多いから

え・・・?

879 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 14:33:06 ]
>>877
> 結局Strutsで作るってなると、オープンソースのDB使うこと多い
うーん。おれもこの考えには同調できないな。

struts(J2EE)を利用できるという時点で、共用レンサバユーザとか
LAMP層顧客は除外されるから、Oracleだったり、DB2だったり
という機会が増える。寧ろSIerがOracleパートナーだったりすると尚更だな。
ただ>>877が言いたかったのは、OSSなstrutsを選択する時点で
MySQLやPostgresを使おうとするプロダクトに当たる可能性が増えるが、
既存システムを有償DBで構築してしまうとわざわざそれを変えようと
することも少ないと稚拙な経験から思う。

880 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 14:49:44 ]
>>877
>新製品でどんどんシェア伸ばす予定だそうな。

それは予定っつーか願望でしょw
キャッシュ割り当ての設定とかSQLの癖とか
ダンプ・リストアスクリプトの組み方とか両方覚えるのかったるいから
ポスグレにデファクトまで登り詰めて欲しいんだけど



881 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 15:12:02 ]
PostgreSQLってもうOracleの性能、品質ともに超えてるんでしょ?

882 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 15:15:47 ]
>>878
OracleやDB2って、ウチではそんなに使わないから、ってこと。
あとは>>879の言ってくれた通り、SIerがOracleパートナだとOracle一択になる。
すまんね。

883 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 15:27:46 ]
>>877
>まぁ、MySQLのGUIツールの方が優秀に見えるけど
>マルチバイトを入力するとハングするのはいただけない。
あの出来で金取るとかいってんだぜ?失笑だよ
バグの為に金払うかっての

884 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 15:59:01 ]
>>881
どんな妄想

885 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 16:41:24 ]
MySQLがGPLだから通常の業務で使おうとすると金がかかるというのが面倒かな
昔はpostgreSQLだけのためにLinuxいれてたところおおかったね

886 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 20:45:53 ]
もう夏休みだっけ?

887 名前:デフォルトの名無しさん mailto:sage [2008/07/07(月) 18:57:42 ]
このスレに夏休み取れる奴がいるのか…?

888 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 02:15:21 ]
881と885は・・・

889 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 10:39:15 ]
MySQLがGPLで請負だと金かかるのは常識かと

890 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 11:02:23 ]
そなの?
GPLなら顧客に対してソースを開示すればいいだけ、
いやなら商用ライセンスにできるししたところで数万円だから
開発全体のバジェットから見たら誤差だと思ってたんだけど、
どうも前者の前提が違うみたいだね。わかるように説明してもらえないか?



891 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 12:43:32 ]
やるならその通りだけど、単に手間が面倒ってだけじゃね?
事務仕事とか経理処理とかそういうの。

で、金払いや事務仕事を実際にする人から
「どうせ同じOSSのDBなんだし、どっちでも同じでしょ」
と言われて、簡単な方に流れるというのはある。

892 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 13:26:26 ]
いや、GPLで請負だと「金がかかる」って言ってることから
そういうちょっとした手間の話じゃないだろう。
請負ならGPLじゃなくソース渡すこともあるしな。
ASPサービスなら渡さないけど。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<258KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef