トップページphp
982コメント329KB

フレームワークStrutsをいじくり倒す人の為のスレ

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん03/04/28 08:14ID:Ub0n1fGR
 流行っているのか、流行っていないのか謎の Struts を語るスレです。
http://www.ingrid.org/jajakarta/struts/
http://jakarta.apache.org/struts/
0510nobodyさん04/09/12 10:16:59ID:???
>>509
ActionFormがrequestスコープの場合はダメ。
毎回のリクエスト受信時にActionFormのインスタンスは新たに生成され、
初期化処理で扱うActionFormのインスタンスと送信後に扱うActionFormのインスタンスは別になるから。
0511nobodyさん04/09/12 20:53:02ID:???
何か問題ある?
送信先で同じActionFormを使ってやりゃいいだけじゃん。
0512nobodyさん04/09/12 21:14:53ID:???
>>511
>>509のやり方では送信先のActionFormのインスタンスの中のListプロパティの中が空っぽのままだろ?
051349204/09/13 09:40:19ID:???
>>512
そうなんです。
>>509の方法だと、Listがnullになってしまうんです。
だから、property='<%= "_dataList[" + i + "].key1" %>'の書き方だと、
_dataList[0].key1という名前になり、それをActionSetvletか何かで、
_dataList.get(0).put("key1","hogehoge")というようなメソッドを呼んでると思うのですが、
_dataListがnullだからNullPointerExceptionが出るのだと思います。
051449204/09/13 10:35:16ID:???
みなさん、色々とアドバイスをいただき、
ありがとうございました。
結局、現在はActionFormに以下のソースを追加しました。
private String[] key1 = null;
private String[] key2 = null;
public String[] getKey1() {
 return key1;
}
public void setKey1(String[] k) {
 this.key1 = k;
}
public String[] getKey2() {
 return key2;
}
public void setKey2(String[] k) {
 this.key2 = k;
}

画面表示時は、以下の様にしてListの内容を出力し、
<logic:iterate id="list" name="hogeForm" property="_dataList">
<html:text name="list" property="key1" />
<html:text name="list" property="key2" />
</logic:iterate>
ActionFormにセット時はString配列にセットする様にして
処理しています。

でも、このやり方は邪道だと思っています。
もし他に良い方法がありましたらご教授下さい。
0515nobodyさん04/09/13 22:16:56ID:uejohbjj
Actionクラスの中でConnectionを取得してDBアクセスしてるコードが沢山あるんですけど、
何か弊害ありますか?
0516nobodyさん04/09/13 22:28:03ID:???
>>515
ビジネスロジックをActionクラスに書くな
0517nobodyさん04/09/13 22:31:27ID:uejohbjj
なにか弊害ありますか?
0518nobodyさん04/09/13 23:11:38ID:???
>>515
ビジネスロジックを使い回しできない
0519nobodyさん04/09/13 23:40:40ID:???
515じゃないけど、それって一般的なコードでの
モジュール化をするかしないかの違いでしかないの?
もうちょっと説得力のある理由があるのかとおもった。

そのAction固有のロジックで複雑でもなければとりあえずそこに書いといて、
必要になったときにリファクタリングで括りだす方針でも問題ないような。
Actionはシングルトンだから書けないロジックもあるのはわかるけど。
0520nobodyさん04/09/14 08:03:53ID:???
まあ、好きにすれば?
0521nobodyさん04/09/14 21:28:50ID:???
そのビジネスロジックを使い回したくなってから、わざわざリファクタリングするのか?
MVCの利点が理解できなきゃこれも理解できないだろうけど。
0522nobodyさん04/09/14 21:46:02ID:???
まあ、この辺でも読んでおけ
http://struts.apache.org/userGuide/building_controller.html#action_design_guide
0523nobodyさん04/09/14 22:30:17ID:???
>>521
Action をモデルとみなしてはいけない理由を教えてください。
0524nobodyさん04/09/14 22:41:16ID:DrU+5VXT
先輩がActionクラスに入るはじめのところでコネクションを取得して、
そのあとActionから抜けるまで使いまわすようなフレームワーク作ってるんですけど
どうしたらいいですか?
Actionクラスのメソッドの引数にconnとかがあります!
0525nobodyさん04/09/14 22:47:21ID:???
>>524
読解不能
0526nobodyさん04/09/14 22:52:17ID:DrU+5VXT
先輩みっけ
0527nobodyさん04/09/14 23:27:05ID:???
>>524
Action の最初と最後をトランザクション境界にしてるんだろ。
違うのか? それはそれでありだと思うが。
ただ、Action クラスを継承して作ってんだったら、その先輩はうんこかな?
RequestProcessor を拡張し、コネクションは ThreadLocal から取得する
ようにしたほうが良い。Action のインタフェースも変える必要はない。

もちろん、この Action をモデルとして考えた場合の再利用性は低くなる。
が、プロジェクト内での再利用性は十分だし、開発効率も高い。
0528nobodyさん04/09/16 00:01:38ID:???
メテオはやめてお
0529nobodyさん04/09/17 00:11:06ID:UID/DeJQ
Actionで取得したconnectionをAction抜けた後のfilterでクローズしてみようかと思ってるんだけど
そういう構成ってどう思いますか?
0530nobodyさん04/09/17 00:46:12ID:???
>>529
「Action抜けた後のfilter」って何?
0531nobodyさん04/09/17 00:50:37ID:UID/DeJQ
filterクラスってあるじゃん、知らないの?
*.doに仕掛ければ*.doアドレスのやつは全部そのfilter掛かるんだよ。
0532nobodyさん04/09/17 21:28:32ID:???
>>531
俺はありだと思うよ。n階層モデルにおもっきり逆行してるが。
0533nobodyさん04/09/17 23:01:21ID:???
>>531
俺もありだと思うよ。
これから退職届けだして、それを引き継いだやつを地獄に落とすんだろ。
0534nobodyさん04/09/18 00:44:57ID:???
俺はアリ?だと思うよ
アリ?こりゃおっかしいなぁ〜

寒いわボケ しね
0535nobodyさん04/09/18 00:59:53ID:???
モハメド・アリ
0536nobodyさん04/09/18 01:00:21ID:???
アリさんマークの引っ越し社
0537nobodyさん04/09/22 04:52:07ID:???
>>529
むしろfilterでコネクション取得して、切断。
Hibernateだと、「Open session in view」ってなってるから、さしずめ「Open connetion in view」だろうか。
0538nobodyさん04/09/22 04:55:09ID:???
>>527
Spring StrutsやらS2Struts使って、AOPでやればもっとよいかも。
0539nobodyさん04/10/08 11:41:11ID:???
Struts初心者の者です。
現象として、ApplicationResourcesに設定してあるメッセージを取得できません。

struts-config.xmlには、
<message-resources parameter="res.ApplicationResources"/>
と設定して、ApplicationResourcesファイルの階層も間違っていないのですが。

どうやら、ローカルサーバーのApplicationResourcesを見ずに、ビルドした
ローカルの階層を見ているようで、こちらに設定するとメッセージは取得出来ます。

Tomcat 5.0
Struts1.1
を使用しています。

何か他に設定が必要なのでしょうか?
どなたかお教えいただけないでしょうか? m(_ _)m
0540nobodyさん04/10/08 19:54:12ID:???
>どうやら、ローカルサーバーのApplicationResourcesを見ずに、ビルドした
>ローカルの階層を見ているようで、こちらに設定するとメッセージは取得出来ます。

よくワカンネ
0541nobodyさん04/10/08 20:24:16ID:???
srcじゃなくてclassesフォルダのファイル見てるってこと?
それだとそれで正しい挙動だと思う。
0542nobodyさん04/10/10 23:48:18ID:d05ou0eX
上司にStrutsが現在における最高のMVCモデルフレームワーク(Webアプリにおいて)だと言われ、本を渡されたんですが本当ですか?
0543nobodyさん04/10/11 00:26:05ID:???
>>542
賛否両論だが仕事でJavaでwebやるならとりあえず覚えておけ。
Java-webフレームワークの中では最高に普及していることは間違いない。
0544nobodyさん04/10/11 00:27:51ID:???
モノとしてはTapestryやらWebWork2の方がよさげだね。
0545nobodyさん04/10/11 09:30:05ID:???
>>544
俺もそう思うけど、仕事で使うなら普及してるのが一番だしね。
しょうがないね。
0546nobodyさん04/10/11 12:49:36ID:???
SpringやらSeasar2と一緒に使えば、StrutsでもWebWork2の利点みたいなことはできるわけだからねぇ。
あんまり末端の層でブアツイフレームワークは必要ない気がする。
0547nobodyさん04/10/11 14:55:13ID:???
何が最高だか聞いてみたら?
普及度? シンプルさ? 軽量さ? 機能? 脳内知識?

2位と3位のフレームワークも上げて欲しい。
0548nobodyさん04/10/11 18:24:22ID:???
Struts+Seasar2とかHibernateとかでもうしばらく頑張る。
その後JSFに以降。
0549nobodyさん04/10/11 18:28:05ID:???
Struts-facesでいいんじゃねぇ?
055054204/10/11 22:46:32ID:1ye9esf4
ええ?そうなんですか?いろいろあるんですね〜。ありがとうございます。でもどうせ勉強するなら最高の組み合わせを考えてるんですけど、結論出ませんかね?自分としては仕事で使うので普及率で決めたいんですが
0551nobodyさん04/10/12 03:07:49ID:???
普及率で決めるならSeasar2は使えないな。
0552nobodyさん04/10/12 21:26:32ID:???
「普及度」の「最高」だったら、struts+hibernateかな? 商用のWebLogicとかWebSpなんとかの方かな?
0553nobodyさん04/10/12 21:45:34ID:???
Struts + Hibernate + Spring だろうね。
0554nobodyさん04/10/12 22:53:10ID:???
その組み合わせっていいの?
0555nobodyさん04/10/13 16:12:45ID:???
Strutsを使って開発する場合、セッション管理ってどうやってますか?
0556nobodyさん04/10/13 16:41:55ID:???
>>555
デフォでフォーム名のセッション変数作られまくりだからイヤってこと?
055755504/10/13 17:20:59ID:???
>>556
いえ、もしStrutsがセッション管理機能を持ってるんなら
そっち使いたいなぁって思っただけです。
Struts初心者なもんで。。。
0558nobodyさん04/10/13 18:40:06ID:???
>>557
セッション管理なんて、sessionにほりこむだけじゃん。
わざわざStrutsにやらせんでも。

ってか、何やらせたいん?
0559nobodyさん04/10/13 19:07:31ID:???
Servletの低レベルなセッション変数管理ではなくて、
もっとアプリ寄りの高級なセッション管理ってことかな?
そういうのなら残念ながらない。
056055504/10/13 19:17:18ID:???
>>559さんのおっしゃるとおりです。
そうですか、そういう管理機能は持ってないんですね。。。
今までどおりsession.getAttribute()でがんばります。ありがとうございました。
0561nobodyさん04/10/13 22:38:10ID:???
具体的に、なにがやりたいん?
056254204/10/15 16:31:49ID:yJKQCGu4
実は私ずっとJAVAでソフト開発してたんですが、この度Webアプリ開発なる部署に転属になりまして、質問させていただいた次第でございます。
で、いきなりstrutsの本を渡されたんですが、読んでるとJSPやサーブレットのことを知らないとまずいですね、多分当たり前な話なんでしょうが
もうびっくりして別の書籍買ってきました。JSPとサーブレットに関しての本です。すると今度はXMLやらXSLTやらDOMやら出てきましたので
それも購入して読みあさった結果「これは腰を据えて取り組まなきゃいかんのでは?上司が言うように簡単にはいかん。」と思いました。
そこで質問なんですが、Webアプリ開発担当になるためには、JSP/サーブレット→XML/XSLT/DOM→strutsというような勉強の順番でいいですかね?
私は恥ずかしながらJAVA歴1年で去年1年間とある予約システム(店頭で店員がいじるソフト)の開発しかやったことありません。
オブジェクト指向はわかりますが、ネットワークアプリの開発もしたことありません。サーブレットは簡単そうなんですが、Web関係の技術は無知です。
どうなんでしょう?それともこの異動はもしかしてリストラの前兆ですかね?入社1年目にして?ぎゃって感じです・・・
056354204/10/15 16:40:48ID:yJKQCGu4
え〜ちなみに上司や同僚は忙しいらしくて取り合ってくれません。Web開発の部署は東京にあるんで
岡山から先月引っ越してきました。なんだか前の部署(企業向けアプリ)の方がUMLの段階から
ノンキで仲良くやってたんですが、ここでは皆無口でPCに向かったまま、話し掛けると無視されます。
UMLも他の部署がしてるみたいで、ここの人はみんななんか機械やロボットのようです。
私はそんな片隅で自習です・・・他にも同じような人が3人いるんですが、みんな「??」状態です。
やばいですかね?業界のこともよくわからんですし、前の雰囲気が当たり前だと思ってたし
独学でやる気はあるんですが、どこから手をつければいいかわかんなくて・・・
0564nobodyさん04/10/15 19:09:33ID:???
>>562-563
ながい
0565nobodyさん04/10/15 19:44:28ID:???
>>564
ドゾー

Webアプリ開発担当になるためには、JSP/サーブレット→XML/XSLT/DOM→strutsというような勉強の順番でいいですか
0566nobodyさん04/10/15 19:55:18ID:???
XML関係はステップとして位置付けず必要なとき平行してやれば十分では。
それよりWebアプリ特有の設計をなんとかして学ぶ。Struts本くれたのもざっと
全体見渡せってことじゃないかと。しかしJava歴一年で「ずっとJAVAでソフト開発してきた」とは
大きく出たな。

>>565
まだ横に長い
0567nobodyさん04/10/15 21:16:44ID:???
XMLとかXSLTとかDOMは、本格的に必要になればやればいいだけ。
そうじゃなければ別にイラン。

例えばstrutsは設定ファイルがxmlなだけで、別にxmlの知識が要るわけじゃないし。

056854204/10/15 21:35:15ID:yJKQCGu4
>>564
すいません。長々と書いてしまいまして。
>しかしJava歴一年で「ずっとJAVAでソフト開発してきた」とは大きく出たな。
すいません。偉そうに言ってしまいました。「1年しか」ですね^^;
>>566 >>567
ご返答ありがとうございます。勉強方法がわかってとても安心しました。
とりあえずJSP/サーブレット→strutsという風に勉強します。
0569nobodyさん04/10/15 21:54:52ID:???
まず職場に花瓶を設置しろ。寒いチームは成功しない。
割と派手目だかすぐに枯れたりしないの花を買って生ける。
これだけでけっこう雰囲気が変わる。
しかし毎回買ってくるのは金がかかるし、ある日出勤したら倉庫に移動されてたりする。
だがこれで諦めているようではいけない。あくまでこれはイントロにすぎない。
次に持っていくのは植木鉢だ。今度は生けるのではなく本格的に植えてみよう。
前は花だった。香りもあったわけだ。それなりにインパクトがあるから皆それとなく気にかけていたはずだ。
今度は何がいいだろうか。不意をついて芝生や猫草などどうだろうか。何が生えるかな?などと
思って楽しみにしていると、もはやそれ以上何も生えない。これを気づかれないように少しずつ増やす。
そうやってある程度土壌が確保できたら本命の野菜を植える。大麻は駄目だ。葉ものが欲しければ七草程度にする。
そうするとだんだん森の動物が来るようになる。熊も来る。だんだん川も流れてくる。
こうやって大自然のなかに身をおくことで誰もが癒されてくる。誰かに優しくしたくなる。
とにかく職場の雰囲気に合わせては駄目だ。きっかけはたった一つの花でも気がつけば
ネイチャーだろ?こうなるともう自給できる。会社がなくなっても全然問題ない。そうだろ?誰か同意してくれよ、なあ。
0570nobodyさん04/10/15 22:22:35ID:???
>>569
今年はクマ多いね
0571nobodyさん04/10/15 22:57:14ID:???
その職場にかわいい女はいるのか?
いなければ殺伐とするのは当然だ
0572nobodyさん04/10/15 23:10:30ID:???
ウホッすればいいじゃん
0573nobodyさん04/10/15 23:51:47ID:???
>>570
会議にはお茶とお菓子を用意しろ、というXPの真髄に近いものがあるな
057454204/10/18 22:01:38ID:V0c+FM4A
やっぱ雰囲気って大事ですよね?女の子や花など一切ありません。
勉強のほうはお蔭様で進んでおります。
意外とスルスル頭に入るのでそんなに悩まなくても良さそうです。
みなさんありがとうございました。
あとコンテンツマネジメントシステムに興味あって
今Zopeとかも見ています。でもこれパイソンですね。
JAVAでないのかな〜・・・探してるが出てこない・・・
057554204/10/19 01:40:15ID:TaQwkqrU
見つけました。Cocoon2ってのがいいらしいようですね。
ちょっといじってみます。ではでは、失礼しました。
0576nobodyさん04/10/19 02:24:46ID:???
・・・「Java CMS」で検索すると、ごろごろ出てくるわけだが。
0577nobodyさん04/10/19 12:00:08ID:???
lenya, Jetspeed, Kvasir/Sora, Daisy, ....
0578nobodyさん04/10/19 18:48:32ID:biz4bNlU
勉強中なんですが、Actionクラスも作って、successを返したらJSPページ
にforwardするように設定したつもりが、JSPのページがまったく表示されません。
すぐ思いつく原因などがあれば教えてもらえませんか?ソースには以下のように
表示されています。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=utf-8"></HEAD>
<BODY></BODY></HTML>

エラーメッセージも出ないので何が原因なのかまったくわかりません・・・。
0579nobodyさん04/10/19 19:11:04ID:???
>>578
configは?
0580nobodyさん04/10/19 19:28:16ID:biz4bNlU
>>579
struts-config.xmlは以下のような感じです。InitUserInfoで前処理を
して、reguserinfo.jspを呼び出したいです。

<action-mappings>
<action
path="/InitRegUserInfo"
type="actions.InitRegUserInfo">
<forward name="success" path="/pages/userinfo/reguserinfo.jsp" />
</action>
</action-mappings>
0581nobodyさん04/10/19 19:31:52ID:???
>>578
> Actionクラスも作って、successを返したらJSPページ
> にforwardするように設定したつもりが、

つもりだから。
058257804/10/19 19:48:00ID:???
自己解決しました。いろいろ見てたらactionクラスの
HttpServletRequest requestとするべきところが
HttpServlet requestになってました。

これで半日悩んだおれって馬鹿だと痛感しました。これから進めそうなの
でがんばります。

それにしてもエラーメッセージが出てくれないミスってきついですね。
0583nobodyさん04/10/19 20:45:17ID:???
>>582
J2SE5使って、executeメソッドの前に@Override付けろ。
ちゃんと検出してくれる。
ただしXDocletが使えなくなる罠。
0584nobodyさん04/10/19 22:43:54ID:qwXtDXVh
>>569
すげーワラたよ。
0585uncorrelated04/10/20 11:08:39ID:OHS9yskl
笑った
0586nobodyさん04/10/20 11:10:45ID:???
じゃあ、オレも笑った。
0587nobodyさん04/10/20 14:59:22ID:???
だったら、オレも笑った。
0588nobodyさん04/10/20 15:08:03ID:???
でも、オレは笑った。
0589nobodyさん04/10/20 15:18:51ID:???
にもかかわらず、オレも笑った。
0590nobodyさん04/10/20 17:23:55ID:???
しかも、オレまで笑った
0591nobodyさん04/10/20 19:36:11ID:???
なかんずく、オレは笑った。
0592nobodyさん04/10/20 19:55:10ID:???
すべからく、オレと笑った。
0593nobodyさん04/10/20 22:49:06ID:???
嵐のように笑った。
0594nobodyさん04/10/20 23:31:44ID:???
そしてちょっとだけ泣いた。
0595nobodyさん04/10/20 23:37:24ID:???
ストラットが180ええぇぇぇっぇえええっぇえんんn!!!!!!
http://www.amazon.co.jp/exec/obidos/tg/detail/offer-listing/-/B00005GL98/used/ref=olp_tab_used/250-8633275-5102657
0596nobodyさん04/10/21 00:32:08ID:???
>>594
明日もがんばろうと思った。
0597nobodyさん04/10/21 00:32:47ID:???
ネタスレ化ΣΣ(゚д゚lll)
0598nobodyさん04/10/21 11:18:57ID:???
FormBeanをその都度作るバージョンのStrutsだとdoFilter()みたいなメソッドの中でEncoding処理を
行っていましたが、
FormBeanをいちいちコーディングしなくてもいいバージョンのStruts(1.1以降のバージョン?)で
文字列のエンコーディングとかはstruts-config.xmlの中で設定とかはできるのでしょうか?
0599nobodyさん04/10/21 13:15:55ID:???
>>598
そんなときは、笑って悲しみをふっとばせ!
060059804/10/21 13:53:19ID:???
訂正
×:設定とかはできるのでしょうか?
○:設定できるのでしょうか?
0601nobodyさん04/10/21 19:25:59ID:???
そんなもん、StrutsのしくみではなくServlet2.3のフィルターでやれ。
それと、FormBeanはいちいち作るべき。
EclipseやNetBeansその他のツールでセッター・ゲッターは自動生成できる
それに比べればxmlで書くほうがめんどうで、メリットもない。
0602nobodyさん04/10/21 22:59:31ID:???
>>601
>それに比べればxmlで書くほうがめんどうで、メリットもない。

そうでもないでしょ
setter&getterは確かに自動生成できるかもしれんが
XML設定だけでformBeanが管理できるstruts1.1の方が断然管理しやすい
0603nobodyさん04/10/21 23:02:46ID:???
>>598
エンコーディングはTomcatについてるSetCharacterEncodingFilter.javaを使うのが普通かも(違うかも)
使い方は>>601の言うとおりweb.xmlにfilterの設定を追加して、すべてのリクエストにマッチさせればOKかな。
サンプルはウェブに転がってると思う(Tomcatにも付いてる)
0604nobodyさん04/10/21 23:04:25ID:???
ActionFormは私も必ずクラスを作る。
DynaActionFormはTypeSafeじゃないから、そのツケがそのうち回ってくると思う。
0605nobodyさん04/10/21 23:06:35ID:???
Struts-config.xmlはXDocletに任せる
0606nobodyさん04/10/21 23:06:40ID:???
>>601
>それと、FormBeanはいちいち作るべき。
>EclipseやNetBeansその他のツールでセッター・ゲッターは自動生成できる
>それに比べればxmlで書くほうがめんどうで、メリットもない。
考え方が古いな。
まあ、それで本当にDynaBean使うより工数が減るのなら、逆に大したもんだ。
0607nobodyさん04/10/21 23:08:15ID:???
>>604
そういうポリシーがあって、あえてFormBean作るのなら問題はないけどね。
>>601みたいな「俺はこっちの方が慣れてるんだ」的な理由ではどうもね。
0608nobodyさん04/10/21 23:24:45ID:???
>>606
工数減ると思うよ。
Dyna使うとプロパティ名やプロパティの型がコンパイル時にチェックできないから
テストやデバッグで余分な工数がかかるのは容易に想像できる。
DynaだとXDocletでのvalidator.xmlの自動生成にも対応できないし。
考え方が古いのは606じゃないの?Struts1.1b2の頃(約2年前)には
606みたいなこと言う人はたくさんいたけど。
0609nobodyさん04/10/21 23:35:17ID:???
コーダの人から見たら FormBean なんてステップ数稼ぎにちょうどいいんじゃないの?
どうも無駄なコードを沢山書いているように見えてしょうがない。
■ このスレッドは過去ログ倉庫に格納されています