△△もっとStrutsの良 ..
458:デフォルトの名無しさん
07/11/05 22:16:04
1.3.8を使っています。LookupDispatchAction を使ってみました。
クリックされたボタン名(正確には、struts-config.xml の action 定義の
parameter属性で指定した名前)に応じてメソッドを振り分けることはできるようになりました。
ただ LookupDispatchAction の場合、そのActionに飛んできたときにどのボタンもクリックせずに遷移してきた場合
(HttpRequestの中にparameter属性で指定したパラメータが含まれない場合)、
> javax.servlet.ServletException: リクエスト[/hoge]に buttonName という名前のハンドラパラメータがありません
という例外が発生してしまいます。
LookupDispatchAction、DispatchAction とソースを追っかけて行くとたしかにそう動くようになっていますが、
DispatchAction系を使う場合、かならず遷移元で何らかのボタンを押してもらわないとダメなのでしょうか?
ある画面に複数ボタンがあって、押されたボタンによって処理は振り分けたいけど、その画面に初めて遷移してくるときは
前画面からどのボタンも押されないため(リンクでクリックされるとか)、任意のメソッドを動かしたいです。
いままで(ふつうの Action のサブクラスで execute() をオーバーライドしていたとき)は、
以下のようなコードを書いて押されたボタンによって処理を振り分けていました。
execute() {
if ("update".equals(form.getButtonName("update"))){
// updateボタンを押されたときの処理
:
} else if (form.getButtonName("update") == null) {
// 遷移元から何もボタンが押されなかったので初回遷移時とみなす
:
}
:
}
こういうとき、どうすればいいでしょうか?
それともこれはこういうもので、私がDispatch系Actionの使い道をまちがえているのでしょうか?
459:デフォルトの名無しさん
07/11/05 23:15:48
unspe何とかってメソッドが呼ばれるんじゃなかったか?
460:デフォルトの名無しさん
07/11/06 00:27:48
たしかに最終的に DispatchAction#unspecified() に処理が移り、
DispatchAction#unspecified() のなかで throw new ServletException(); されてますね。
そうか、これをサブクラスでオーバーライドすればいいのか!! ピコーン(AA略
たしかにこのメソッドの javadoc コメントにも
「DispatchAction のサブクラスは、リクエストパラメータが見つからない場合の挙動を変えたければ
このメソッドをオーバーライドしなさい」
といったことが書いてありました。
ソースを追いかけていたけど、javadoc コメントは英語だったのでスルーしてました。
ちゃんと javadoc 読まないとダメですね。
>>459 さん、ヒントを与えてくださってどうもありがとうございました!!
これですっきりして眠れます。
461:デフォルトの名無しさん
07/11/06 17:00:43
struts2でアップロードしたファイルで拡張子ごとのコンテンツタイプの
早見表などが載っているサイトなどがありませんでしょうか?
462:デフォルトの名無しさん
07/11/07 00:07:07
JSF使えば1画面複数ボタンがチョーーーーーーーーー楽なのにね
463:デフォルトの名無しさん
07/11/08 00:11:55
>>461
apacheのmime.types?
464:461
07/11/08 20:29:35
ありました!ありがとう。
465:デフォルトの名無しさん
07/11/08 23:50:20
教えてください。
最近strutsを勉強しだしたんですが、現在ダウンロードできるstrutsのバージョンは1.3.x〜2.0のようです。
ところが各サイトで解説しているバージョンは1.1ばかり。売られている書籍は1.2まで。
以上が私の貧弱な検索で調べた結果なんですが、もし1.3以降の解説をしているサイト
もしくは1.2以前のアーカイブの入手方法がわかる方、ご教授いただけないでしょうか。
466:デフォルトの名無しさん
07/11/09 00:31:39
HTMLで、「あなたの年齢を入力してください」みたいな <html:text> のフィールドがあったとします。
数字での入力を期待しています。
ActionForm では、setAge(Integer age) みたいに Integer 型の属性としました。
ただしテキストボックスにはアルファベットも入力できるわけですが、数字以外を入力した場合、
NumberFormatException とか出ずに、ActionForm の age には 0 が代入されています。
未入力の場合も null ではなく、0 が代入されています。
しかしテキストボックスに未入力の場合と、0が明示的に入力された場合を区別したいです。
いろいろググって見ると、そういう場合は属性を String にするしかない(基本的にStringしか使えない)とありますが、
例: URLリンク(blog.goo.ne.jp)
そういうものなのでしょうか?
>>465
Struts 2.0 はまだ出たばかり。1.x と 2.x は別物。
1.2 以前がほしければ、
URLリンク(struts.apache.org) → Older Releases (Archive Site) → binaries/ とたどれば出てくるよ。
プロジェクト等でバージョンの指定がなければ、いまは 1.3 でよいのでは。
467:デフォルトの名無しさん
07/11/09 00:46:41
>>466
この場合はStringにするしかないですね。多分
468:465
07/11/09 00:49:56
>>466さん
ありがとうございます!助かりました。
1.3を落として、1.1の解説を読みながらやってたんですがバージョンの違いでつまずいてしまって・・・
かなりの初心者なんで、ちょっとした違いでも対応するのに時間がかかってしまう為、
古いバージョンで解説どおり動くかどうか確認したかった次第です。
469:デフォルトの名無しさん
07/11/09 00:55:57
>>466
scriptで処理する以外はStringしかないかねぇ・・・
470:466
07/11/09 01:09:56
レス下さった方、どうもありがとうございます。
5年前に 1.0.1b だったかな? を使っていたのですが、そのときの記憶がよみがえってきました。
String にするかどうか考えて見ます。
>>468
私も本を1冊買ってしまいました。(1行につなげてください)
URLリンク(www.amazon.co.jp)
-%E6%94%B9%E8%A8%82%E7%89%88-Technical-Handbook/dp/4797335491
私みたいに中途半端に昔の知識があって、新しいバージョンだと書式が変わってたり jar が変わっていると
ハマるけど、この本だと 1.2 と 1.3 のバージョンの違いも載っていてわかりやすい。
struts の初学者の場合、ほかに入門の本があったほうがいいと思うが・・・
471:465
07/11/09 01:17:02
>>470
重ねてご教示いただき、ありがとうございます。
やはり本は一冊買うべきですね。
明日にでも本屋行って見てみます。
472:デフォルトの名無しさん
07/11/09 01:24:56
ActionFormにはStringかbooleanかそれらの配列ぐらいしか定義しないと思うんだが。
473:デフォルトの名無しさん
07/11/09 02:13:35
formbeanをPOJOにして、プロパティエディタ自作するってのじゃうまくいかない?
474:466
07/11/09 02:51:27
>>472
いまやっている入力画面は(例ですが)、名前と年齢の欄があり、遷移元でDBからselectしてきてListにし、
ActionFormにセットし、jsp側で↓みたいに入力させています。
<logic:iterate id="person" name="MyForm" property="personList">
<tr>
<td><html:text name="person" property="name" indexed="true"/></td>
<td><html:text name="person" property="age" indexed="true"/></td>
</tr>
</logic:iterate>
なので ActionForm には Listのsetter/getter ぐらいしかないのですが、
これだと Struts が getPerson(int index) で Person オブジェクトをとってきて Person#setAge(Integer) する。
なるべく POJO を変更しないまま ActionForm にもってきたけど、
POJO のフィールドを Integerから変えない場合は、
ActionForm に age 等の setter/getter を用意して POJO へのラッパメソッドみたいにし、
このメソッドの中で String から Integer に変換するとか。
でも setter() のなかで NumberFormatException がでてしまうから、
ActionForm → Action に移るまでの間は、POJO は String型で保持するしかないのか・・・
(1)DB → ビジネスオブジェクト → Action の間でやり取りするPOJO(エンティティ)は、Struts の制約から離れられるけど、
(2)Action → ActionForm でやりとりするPOJOは、String ぐらいしか使えない。
エンティティ(DTO)は、(1)用と(2)用で2種類作らなければいけないってこと?
それとも Struts を使った時点で、エンティティはなんでもかんでも String と boolean ぐらいで保持すべきってこと?
>>473 さんが言っているのは、ここら辺の話ですよね。
URLリンク(hidek.jugem.cc)
475:デフォルトの名無しさん
07/11/09 08:40:58
俺はFormは全部Stringにして、validatorメソッドでチェックしてる
Javascriptのチェックだけじゃ意味無いし
476:デフォルトの名無しさん
07/11/09 09:23:32
strutsの重大な欠陥の一つ。
普通に考えりゃ、conversionよりvalidationが先だし、
実際に殆どのフレームワークがそうなってる。
477:デフォルトの名無しさん
07/11/09 10:53:42
ほとんどってどれ?
JSFはそうじゃないよ。
入力値に対する変換とドメインオブジェクトに対する変換とじゃ意味が違うのを理解してね
478:466
07/11/09 10:58:34
なるほど、どうもありがとうございます。
昨今 Struts に否定的な意見をよく聞きますが、
自分は5年前にStrutsを触っていたものの、それ以降は一次請けが作った独自フレームワークばかりだったので
あまりぴんとこなかったが、たしかにそういう意見もわかってきた。
Struts はいまいちアジャイルじゃないし、アプリ(業務要件)の本質じゃないところでハマる気がします。
(私のスキルがないだけだと思いますが)
479:デフォルトの名無しさん
07/11/09 11:47:30
そうそう。本来は本質の部分に手間をかけたいところなんだが、
Strutsだとちょっと完成度が低くて本質以外の部分に手間をとられすぎてしまう。
480:デフォルトの名無しさん
07/11/09 22:55:52
>>466
それどこのPerl?
481:デフォルトの名無しさん
07/11/11 18:08:52
struts2でアップロードした画像や動画を圧縮しつつ保存するといった事は
可能ですか?
482:デフォルトの名無しさん
07/11/11 19:35:09
失礼、この質問は忘れて
483:デフォルトの名無しさん
07/11/11 22:30:30
そもそもインフラストラクチャだから、本質(ビジネスロジック)寄りに作ってないんじゃないの。
そうじゃなきゃここまで浸透しなかっただろうね。
大手ベンダーのフレームワークは、Strutsがベースで使われてて、
その上に○○標準とか、業務的な部分をラップしてあるのを見るね。
484:デフォルトの名無しさん
07/11/12 01:45:33
混じりけなしの一般解'(フレームワーク)を求めれば求めるほど、
特殊解(アプリケーション)に落とし込むための手数がかかるようになるのは当たり前
完成度とはまた別の話だと思うが
485:デフォルトの名無しさん
07/11/12 02:37:45
フレームワークのためのフレームワークというのは、
Avalon とか Turbin じゃないかな?(よく知らないけど)
Struts はどちらかというと理論より実践を目指したものだと思うが、
今日 POHP 指向のフレームワークなどが出てきて、
Struts はめんどくさいというか便利ではないという感覚は否めない。
ただ doGet() と doPost() しかなかった時代に Struts が出てきた意義は大きいと思うし、
今でもたまに使うし、自分では Struts なんか作れないので、否定するつもりはない。
486:デフォルトの名無しさん
07/11/12 03:21:15
別に、めんどくささを解消するためのものじゃないし
Strutsは、独立して存在するモデルだとかビューの部品をつなぎ合わせるためだけの存在
つまり、めんどくさいかどうかは単に既存のコンポーネントがいくつ利用できるか、だけに依存する
更に、そこを起点として
・Strutsが、その上に乗っかるコンポーネントに対して十分に侵略的でないと言えるのか?
・そもそもフレームワークを差し替えるニーズなんてないのだから、コンポーネントに対して
侵略的であってもよいからもっと便利に使える方がいいのではないか?
などのアンチテーゼが発生し、Struts以降のフレームワーク登場に至る
487:デフォルトの名無しさん
07/11/13 02:21:50
ひとつ、サーバOSのバージョンアップに強い
ふたつ、1.x系を使い続ける限り、根幹部分の変化が少ないので、ノウハウが溜まる
(慣れた頃には別のアーキテクチャを覚えなきゃ・・・、がない)
慣れに勝る便利さなし
488:デフォルトの名無しさん
07/11/13 23:09:56
慣れだけじゃなく、自前のカスタムタグなんかも
溜まってるし。
でも、Struts飽きた。
489:デフォルトの名無しさん
07/11/13 23:27:58
で、struts作ったクレッグは今なにやってんだ?
490:デフォルトの名無しさん
07/11/14 00:01:19
URLリンク(blogs.sun.com)
jMaki on Railsやってるのかな?
491:デフォルトの名無しさん
07/11/15 10:36:24
strutsを上司に説明することになって、
実際にstruts使ってるwebアプリケーションの事例を
紹介しないといけないんだけど、どこかご存知ないでしょうか?
492:デフォルトの名無しさん
07/11/15 11:39:18
JALとか、イートレード証券のモバイルサイトとか
493:デフォルトの名無しさん
07/11/15 11:54:25
テレビ王国とか
494:デフォルトの名無しさん
07/11/15 12:05:28
>>492
ありがとうございます。
他のスレも見てたら少しあったので追加。
JAL、ANA、三井住友のオンラインバンキング、イートレード証券のモバイルサイト
クラス名がまんま分かってしまうURLが多いですね・・・
もう少しだけ、事例ありましたら教えていただきたいです。
495:デフォルトの名無しさん
07/11/15 12:14:52
>>493
ありがとうございます。リロードしてませんでした・・・
テレビ王国はStruts2なんですね。勉強になります。。
496:デフォルトの名無しさん
07/11/19 02:01:37
struts2つかって、<s:textfield ... />とか書くと、
生成されたHTMLが<tr></tr>で囲まれるんだけど、
囲んでほしくないときは、
どうすればいいの??
497:デフォルトの名無しさん
07/11/19 11:18:19
<bean:write>で文字列を出力しているのですが、改行コードを除去して
表示することは可能でしょうか?
498:デフォルトの名無しさん
07/11/19 11:43:17
496ですが、自己解決しました。
コンフィグファイルでsimpleを設定したら、でなくなりました。
499:デフォルトの名無しさん
07/11/20 09:10:05
>>497
jakartaのString taglib使うといいぜ
500:デフォルトの名無しさん
07/11/22 20:36:43
Strutsマンドクセ
501:デフォルトの名無しさん
07/11/23 00:12:42
>>500
つStruts2
502:デフォルトの名無しさん
07/11/23 00:43:35
SEマンドクセ
503:デフォルトの名無しさん
07/11/23 00:55:32
SE=SexEngineerだったら・・・
504:デフォルトの名無しさん
07/11/23 02:49:25
Sexマンドクセ
505:デフォルトの名無しさん
07/11/23 04:42:35
>>504
見栄張るな
506:デフォルトの名無しさん
07/11/23 05:31:15
Struts2てマンドクセじゃないの?
507:デフォルトの名無しさん
07/11/23 10:28:01
どんなもの使っても、変なタグ呪縛から逃れることはできない。
逆に考えると、
変なタグ使うくらいなら、
ぱっと見、何してるか分かりやすいコードをJSPに書いた方がいい。
デザイナーの事なんて、シラネ。
508:デフォルトの名無しさん
07/11/23 12:14:28
WicketやMayaaなら、タグ呪縛はないよ
509:デフォルトの名無しさん
07/11/23 12:34:37
Teedaも忘れないでください
510:デフォルトの名無しさん
07/11/29 22:12:10
<logic:equal> って or の比較はできないのでしょうか?
java における、以下のようなことをやりたいです。
int flag = myBean.getFlag();
if (flag == 1 || flag == 3) {
// 処理A
} else {
// 処理B
}
<logic:equal name="myBean" property="flag" value="1,3">
//処理A
</logic.equal>
<logic:notEqual name="myBean" property="flag" value="1,3">
//処理B
</logic:notEqual>
みたいなかんじで。
511:デフォルトの名無しさん
07/11/29 23:54:33
A+B=!A*!B
512:デフォルトの名無しさん
07/11/30 09:21:28
>>511
ちょwww
513:デフォルトの名無しさん
07/11/30 10:55:23
普通はフラグの値を見てタグのほうで判断するんじゃなくて、
判断した値(true,false)を返してやるよな。
514:510
07/11/30 11:27:55
レスどうもありがとうございます。
やはりないですよね。
>>513
MyBean に以下のようなメソッドを持たせて、
public boolean isOK() {
if (flag ==1 || flag == 3) {
return true;
} else {
return false;
}
}
JSP では
<logic:equal name="myBean" property="OK" value="true">
//処理A
</logic.equal>
という感じかな。
isXXX() メソッドって jsp から setter / getter と同じように JSP から認識されたっけ?
515:デフォルトの名無しさん
07/12/02 11:51:48
JSTLのc:ifならできんじゃないの?
JSPに書くことかなって気がするけど
516:デフォルトの名無しさん
07/12/02 19:36:26
>>514
普通に認識されるので無問題。
>>515
たぶん使えると思うが使ったことがない。
<c:if test="${myBean.flag == 1 || myBean.flag == 3}">
って感じ?
そういえば、StrutsのTaglibで変数同士の比較ってできたっけ?
517:510
07/12/03 13:43:22
>>510
> >>514
> 普通に認識されるので無問題。
ぐぐってみて、isXXX() も認識されるようなページが結構あったので
そう思っていたのですが、サンプルを書いてみるとうまく認識されませんでした。
書いた JavaBean:
package sample;
import java.io.Serializable;
public class HogeBean implements Serializable {
private boolean flag = true; // フィールド
public void setFlag(boolean flag) {
this.flag = flag;
}
public boolean isFlag() {
return flag;
}
}
jsp側:
<jsp:useBean id="hoge" class="sample.HogeBean"/>
<jsp:getProperty name="hoge" property="flag"/>
これで jsp にアクセスすると、以下のようなエラーがブラウザに表示されます。
java.lang.NoSuchMethodError: sample.HogeBean.getFlag()Z
org.apache.jsp.index_jsp._jspx_meth_html_html_0(index_jsp.java:126)
org.apache.jsp.index_jsp._jspService(index_jsp.java:63)
〜
getFlag() を探しに行っているようなのですが、isFlag() を認識されるように
するにはどうしたらいいでしょうか?
jsp を修正せずに、Sample.java で getFlag() に変えるとうまく動きます。
jdk1.5.0_13 / Tomcat 5.5.20 / Windows XP です。
518:デフォルトの名無しさん
07/12/08 06:08:53
>>517
たとえば、<bean:write>とかだとどうでしょ?
519:困っています
07/12/08 18:25:39
こんにちは。
現在STRUTSでWEBアプリを作っています。
たとえば1.5や2.2などの少数点がつくものを
bigDecimalがたの」formに格納すると15や22に
なってしまいます。
STRINGにしたらいいにたいですが、それだとまた後から
型変換しなくてはいけません。
何かいい方法ヲご存知野方がいらっしゃいましたら
教えてください、、お願いします。
520:デフォルトの名無しさん
07/12/08 18:59:35
Stringにして後から型変換する
521:デフォルトの名無しさん
07/12/09 01:09:42
String<->BigDecimalで変換や検査を行うクラスを作って、
それをFormのフィールドで持つと良いよ。
522:デフォルトの名無しさん
07/12/09 22:21:45
3点程教えて下さい。
1)ひとつのプロジェクト(war)内にStruts(ActionServlet)と
普通のサーブレットを混在させることは設計上あまり
宜しくないことでしょうか?
2)その場合、Strutsのアクションクラスから呼び出される
ビジネスロジッククラスをサーブレットから呼び出すことは
設計上あまり宜しくないことでしょうか?
3)ビューの無いアクション(ファイルのダウンロード等)は
設計上有りでしょうか?(サーブレットにすべき?)
523:デフォルトの名無しさん
07/12/09 22:46:08
1) 特に問題ないと思う。
ファイルダウンロードとか、ビューをJSP以外で実現する場合とか。
2) 特に問題ないと思う。
同じビジネスロジックを、StrutsのアクションとWebサービスの両方から呼び出すとか。
3) 特に問題ないと思う。
でも、ダウンロード用のサーブレットにフォワードするほうが見通しが良くなる気はする。
524:デフォルトの名無しさん
07/12/10 06:06:28
>>523
ありがとうございます。
参考にさせていただきます。
525:デフォルトの名無しさん
07/12/25 12:09:05
Struts2本だれか書けよ、読んでやるから。
526:デフォルトの名無しさん
07/12/25 23:10:08
情報少なすぎだよな>struts2
527:デフォルトの名無しさん
07/12/26 12:11:47
StrutsとJSFて、開発者同じ人?
528:デフォルトの名無しさん
08/01/03 17:23:14
ところで、Shaleって普及すると思う?
529:デフォルトの名無しさん
08/01/03 19:50:00
しないと思う。
530:デフォルトの名無しさん
08/01/04 11:55:27
ShaleとStruts2とXWorksって違うの?
531:デフォルトの名無しさん
08/01/06 00:42:19
struts2でJFreeChartで生成した画像を表示する方法が、
下のURLに書いてあるんだけど、
URLリンク(www.cnblogs.com)
これって画像一枚が表示されて終わりなんだけど、
JSPの中のIMGタグのようなものに表示する方法はどうやったらいいか教えてください。
532:デフォルトの名無しさん
08/01/06 00:43:02
次期Strutsの呼び声が高く注目を浴びていた Shale
しかし、Struts2 として採用されたのは WebWork2
その WebWork2で内部的に使用されているコマンドパターンフレームワークが XWork
でおk?
533:デフォルトの名無しさん
08/01/06 00:44:52
imgのsrcにそのURLを書けばいいべさ
534:デフォルトの名無しさん
08/01/06 00:48:18
>533
ありがとうございます。そんな簡単でいいんですね。
やってみます。
535:デフォルトの名無しさん
08/01/06 12:01:50
Struts2の情報が少ないて、あったけど
〜大全に、ちょっとStruts2のセクションがあったよ。
買ってないから、どんだけ詳しく解説されてるか、知らないけど。
536:デフォルトの名無しさん
08/01/07 19:02:02
>>535
デジカメで撮って uぷ するか、全部コピペしてくれ
537:デフォルトの名無しさん
08/01/11 23:49:25
Struts2の情報くれくれ
538:デフォルトの名無しさん
08/01/12 01:51:17
Struts以外のフレームワークを知らない人がStruts2をさわってみた感想。
すべてのリクエストにフィルターをかまして、ActionをPojoで生成。
インターセプターでActionに値をinjectionするって考えがすごいと思った。
これがコマンドパターンっていうの?
他のフレームワークでもこんなことしてるのあるの?
struts2のタグでAjax(dojo)をサポートしてるけど、
なんでjsファイルを配置してないのにできるの?って不思議だったが
フィルターでjarファイル内の静的リソース(js、画像)を返してた!
これならjarファイルだけでいろいろできる!
すべてのリクエストがフィルターを通る分、ややもっさりしてるけど
そのへんはハードのがんばりで問題ない気がする。。
539:デフォルトの名無しさん
08/01/12 17:46:54
>>538 でStruts1と比べて、Struts2はどうなの?
540:デフォルトの名無しさん
08/01/13 07:41:16
結局のとこ、
使える奴が、ほとんどいない。
て事なんじゃないの?
541:デフォルトの名無しさん
08/01/17 01:22:40
オンラインの日本語struts2書籍ってあるじゃん、あれってどう?
542:デフォルトの名無しさん
08/01/17 23:01:46
struts2でstruts.xmlにアクションを記述するけど、
そこにHttpヘッダーを定義する方法教えてください。
Pragma:: no-cache
とかをやりたい。
今のところアクションクラスでresponseにsetHeaderしてます。
struts.xmlに簡単に記述する方法あるのですか?
543:デフォルトの名無しさん
08/01/17 23:31:26
>>542 Interceptor書けばいいと思うよ
探したけど標準ではそういうのは無いみたいだね。
544:デフォルトの名無しさん
08/01/18 01:30:25
>>543
ありがとう。初心者なのでInterceptorってどうやればいいかわかりませんでした。
struts.propertiesのstruts.serve.static.browserCacheってのをみつけたけど、
これを設定をしたら解決するのでしょうか?
545:デフォルトの名無しさん
08/01/18 22:18:58
>>544 それが効くのは静的コンテンツのキャッシュだけみたいね
546:匿名希望
08/01/22 11:38:33
Struts1.3.8を使っています。
FormFileのgetFileSize()でアップロードされたファイルのサイズを取得
しているのですが3メガくらい以上のファイルだと
0が返ってきます。
小さいファイルだと問題なくサイズが取得できます。
どういったところを調べてみればよいでしょうか?
547:デフォルトの名無しさん
08/01/22 12:14:15
httpd.conf
548:546
08/01/22 13:11:05
すみません。
getFileSize()の前にdestroy()してました。
549:デフォルトの名無しさん
08/01/22 13:34:13
ちょw
550:デフォルトの名無しさん
08/01/22 14:44:19
スレ盛り上げようと、気使いすぎ。
551:デフォルトの名無しさん
08/01/23 13:13:15
フレームの中からバリデートを実行してhtml:errosで表示する方法を教えて下さい
552:デフォルトの名無しさん
08/01/27 21:15:37
struts2+spring2.5+hibernateを使って開発した
生産性が高いから少数精鋭でやってける
高いスキルと英語力が必須条件だけどね
javaの開発者は、これからは淘汰されてくんじゃねーの?
インド人がより有利になってく気がする
553:デフォルトの名無しさん
08/01/27 21:33:48
struts+spring+hibernateの組み合わせは数年前からあるが
現在淘汰されたのだろうか。
554:デフォルトの名無しさん
08/01/27 23:40:48
>>553
struts2とstruts1.xは別物
555:デフォルトの名無しさん
08/01/28 05:58:41
>>553
spring、hibernateが必要なシステムも少ないでしょ。
逆にコストがかさむだけ。
>>554
だから「淘汰されたのだろうか」じゃねーの?
556:デフォルトの名無しさん
08/01/28 06:27:25
>>555
どうコストがかさむん?
557:デフォルトの名無しさん
08/01/28 07:07:41
>>556
提供機能が多いほど設定記述が多く発生する。
558:デフォルトの名無しさん
08/01/28 07:14:52
どんな設定記述が?
で、設定でできなければ、コード書かないといけないんじゃないの?
559:552
08/01/28 22:53:41
struts2の設定はstruts.xmlだけ
springの設定はApplicationContext.xmlだけ
hibernateはモデルクラスのanotation
そんなに面倒では無いよ
この組合せの良い所はあらゆるエンタープライズ向けアプリケーションに対応できること
バッチ処理もどきやsoaにも対応可能、その内spring batchが出るそうだけどね
DBアクセスはジェネリックを使ったクラスを作ったら半分位はそれで用足りた。
勿論、単純なテーブルアクセスしかできないけどね
spring securityも良い感じ、使いこなせばかなり楽できる
struts2はcoolで楽チン、もうstruts1.xは過去の遺物(ガラクタ)だよ
560:デフォルトの名無しさん
08/01/29 01:06:55
>559
ほかのFWはなにを使ったことありますか?
なぜその組み合わせが良いのか説明してもらえんかな?
S2は設定ファイル無しですが?
561:デフォルトの名無しさん
08/01/29 01:54:47
> DBアクセスはジェネリックを使ったクラスを作ったら半分位はそれで用足りた。
こういう物言いをする人に何言っても無駄。
562:552
08/01/29 02:08:07
>>560
springの替りにs2でも良いと思うよ
hibernateの替りにiBatisでも良いと思う
組み合わせ方は人それぞれ
自分の場合は海外サイトから情報を得てるので、どうしても洋物になりがちなのかも
URLリンク(www.theserverside.com)
URLリンク(www.javaworld.com)
563:デフォルトの名無しさん
08/01/29 02:08:27
ジェネリック医薬品でばっちりキメてるんじゃね?
564:デフォルトの名無しさん
08/01/29 02:09:23
>>560-561
もう少しやさしくするかスルーしないか?
大人気ないぞw
565:552
08/01/29 02:11:21
>>561
実は、開発スピード重視の苦渋の選択でした
ホントはiBatisとかでノンビリ作り込みたかった
566:552
08/01/29 02:19:45
盛り上がってきましたw
まあ、ただ単にstruts2は良いよ、ってことが言いたいだけだよ
ただstruts2単体で使うってケースは考え難く
複数のフレームワークは組み合わせて使うのがベターかなって
567:デフォルトの名無しさん
08/01/29 11:27:30
Strut2の書籍を探してて、こんなのをみつけました。
URLリンク(dream.mods.jp)
購入を検討しているのですが、既に使っている方いらっしゃいましたら
感想を教えてください。
568:デフォルトの名無しさん
08/01/29 12:42:18
>552が一人で盛り上がってるだけじゃん
Struts2の何がいいか具体的に言ってくれ。
ぜんぜん伝わらない。
他のFWのことあんまり知らなさそう。
569:デフォルトの名無しさん
08/01/29 14:05:05
Struts 1.x はもううんざりだが、Struts2 は、web の記事しか読んでないけど(自分で試してないけど)
気になっている。別に >>560 みたいに煽るつもりは全然ない。
だから >>552 には思ったことをもっと書いてほしい。正しいかどうかは関係ない。
どれが Best Practice かどうかは興味があるが、プロジェクトによって状況が違うから一概には言えないし、むしろ
・どういう理由で Best Practice と思ったか
・どういう理由でクソだと思ったか
という意見が重要。
ただ >>568 のように、「何がいいか」(どういう理由か)を書いてくれないと、こちらには伝わらない。
湾岸ミッドナイトでも言ってるだろ。
結果を求めるな。
結果だけを知ろうとするな。
なぜその結果が正しいかなのではなく、どういうプロセスでその結果にたどり着いたのか。
# 自分で試す前に人の意見を聞きたがるオレも、あまりえらそうなこと言えないけどw
570:552
08/01/29 23:45:09
struts2 + spring2.5 + hibernate or iBatis のフレームワークの組合せは、
企業向けシステムのあらゆるパターンに対応可能
単なるWeb applicationだけじゃ無くて、メインフレーム・マイグレーションさえ可能だと思う
とは云え、そんな重量級システムだけじゃ無く、手軽な短期開発にも対応可能なのが良いとこさ
間違いなくデファクトになるよ
struts1.xとstruts2の違いは、自転車とオートバイくらい違う
じっくり時間をかけながら汗をかきたい人はstruts1.x
さっーっと楽したい人はstruts2を使うと良いでしょう
ネチネチ時間をかけながらSQLにビジネスロジックを実装させたい人はiBatis
多少パフォーマンスが悪くてもサクサク開発したい人はhibernateって感じでしょ
ケースに応じて選べば良いんじゃな〜い
571:デフォルトの名無しさん
08/01/30 00:11:30
空気読めないかなぁ・・・
572:デフォルトの名無しさん
08/01/30 00:57:20
自転車とオートバイ
573:デフォルトの名無しさん
08/01/30 01:03:17
Teeda + seasar2 + S2JDBC or S2Dao のフレームワークの組合せは、
企業向けシステムのあらゆるパターンに対応可能
単なるWeb applicationだけじゃ無くて、メインフレーム・マイグレーションさえ可能だと思う
とは云え、そんな重量級システムだけじゃ無く、手軽な短期開発にも対応可能なのが良いとこさ
間違いなくデファクトになるよ
struts1.xとTeedaの違いは、自転車とオートバイくらい違う
じっくり時間をかけながら汗をかきたい人はstruts1.x
さっーっと楽したい人はTeedaを使うと良いでしょう
ネチネチ時間をかけながらSQLにビジネスロジックを実装させたい人はS2Dao
多少パフォーマンスが悪くてもサクサク開発したい人はS2JDBCって感じでしょ
ケースに応じて選べば良いんじゃな〜い
正直なんも違和感を感じない。
結局なんでもいいじゃん。ってことに。
ま、Seasarは良いけど。明らかにSSHよりは開発速度は速いよね。552は世間知らず。
574:デフォルトの名無しさん
08/01/30 01:14:51
せんせーSturts2のどこが良いんですか?
ほかに比較したFWはなにがありますか?
どう違いますか?
Seasar教の自分から見たらStruts+Spring+Hibernateなんて超めんどくさいんですが〜
575:デフォルトの名無しさん
08/01/30 01:35:12
結局Struts2の何が良いのかわからないままか・・・
>>573
TeedaとS2JDBCは相性悪いって本人が言ってるよね。
576:デフォルトの名無しさん
08/01/30 07:51:08
Seasarって、沖縄人の使ってるローカル・ツールでしょ?
577:デフォルトの名無しさん
08/01/30 09:02:41
>575
ソースは?
578:デフォルトの名無しさん
08/01/30 22:52:20
>>577
URLリンク(ml.seasar.org)
579:デフォルトの名無しさん
08/01/31 00:42:24
激しくすれ違いなので申し訳ない。
>575
S2Dxoを使わなければそうかもしれんが、使えば差は無いと思うが。
580:デフォルトの名無しさん
08/01/31 07:48:47
Seasar派はspringに勝ってると勘違いしてんだろーな...
581:デフォルトの名無しさん
08/01/31 19:57:44
釣られてみるか・・・
SSH対Teeda+S2JDBC or S2DaoなのにSeaser対Springにしちゃうあたり理解して使ってないんじゃない?
582:デフォルトの名無しさん
08/01/31 20:28:57
ダイナバリデータフォームのリセットメソッドの呼び出し方を教えて下さい
583:デフォルトの名無しさん
08/01/31 20:31:43
ダイナバリデータのリセットメソッドの呼び出し方を教えて下さい
584:デフォルトの名無しさん
08/01/31 23:51:00
>>581
たぶんspring派が勝手に勝ったと勘違いしてるんだよ。
勝ち負けつけようなんてことが馬鹿馬鹿しい。
585:デフォルトの名無しさん
08/02/01 23:22:28
どれも.netにはかなわない
586:デフォルトの名無しさん
08/02/01 23:48:24
おー 新説登場 kwsk
587:デフォルトの名無しさん
08/02/02 01:17:04
>>585
低レベルの開発要員しか集められない場合は、最高の選択肢かもな
588:デフォルトの名無しさん
08/02/02 01:54:21
>>587
strutsすれでよく言えるなw
589:デフォルトの名無しさん
08/02/02 17:24:37
.Net(C#)って、扱うのはそれなりに難しいと思うぞ。
C#の言語仕様も、Java よりも優れているという意見もいっぱいある(詳細はム板の言語関係のスレで。ここでは省く)
VB を「低レベル開発要員」と位置づけるなら、Struts もその位置にだんだん当てはまってきていると思うけど。
あと、Spring.NET、Hibernate.NET、iBatis.NET なんてのもあるし。
豆○の中の人とこの前はなしていたが、いまは .NET での案件が Java と同じくらいあるんだって。
590:デフォルトの名無しさん
08/02/02 19:07:09
中規模以下案件は.NETでも充分でしょ
591:デフォルトの名無しさん
08/02/02 19:12:30
どれくらいから大規模?
592:デフォルトの名無しさん
08/02/02 19:14:19
>C#の言語仕様も、Java よりも優れているという意見
そりゃ、後発で先駆者のいいトコ取りしてるんだから当たり前って言えば当たり前なのだが、
どーも仕事でWin鯖の不安定っぷりを見せ付けられると微妙なんだよな。
593:デフォルトの名無しさん
08/02/02 19:41:06
どのへんが不安定?
594:デフォルトの名無しさん
08/02/02 20:11:18
不安定はWin鯖のせいなの?
595:592
08/02/03 00:08:38
安定度の比較対象として同部署で管理しているiSeriesと言う鯖があるが、
これに比べればネットワークは不安定だわ、負荷が高い時のレスポンスやらな・・・。
購入時の価格がちがうので比較は無意味なんだろうけど、
障害発生時の対応・対策を見ていると「安物買いの銭失い」と言う印象が強いので。
596:デフォルトの名無しさん
08/02/03 00:14:27
iSeriesと比べちゃうの?w
597:デフォルトの名無しさん
08/02/03 00:16:26
ちょw
598:592@一応はiSeriesメインのエンジニア
08/02/03 00:28:36
いや、この間Win鯖の障害に繰り出されサ。
なんつーか、エラーハンドリングというかモニター機能の貧弱さになけてきたり、
自己診断機能のいい加減サに辟易したり、対応策に「とりあえずリブート汁」とかサ・・・。
タスクマネージャーを目視して「ここが○○になったらこのウインドウのココをメモして」とか
ずいぶんと前時代な対応させられたりしてサ。
で後日の対策会議とかでエロい人が5・6人あつまってあーだこーだと。
なんじゃコリャと思いましたです。
おそらくはWin鯖でも本当は自動化とか柔軟な運用・保守・管理が出来る様な気がするし、
扱う人間のレベルによって安定度も変わってくるんだろうけど、
今はITドカタな時代で優秀なエンジニア少ないんだから、せめて機械はiSeriesみたいな
「ヴァカが扱ってもなかなか壊れない鯖」とか買ってくれとおもうのよ。w
599:デフォルトの名無しさん
08/02/03 00:41:49
まあ、俺が作ったアプリケーションならWin鯖でも
超安定だぜ。5年くらい余裕でノンストップだ。
600:デフォルトの名無しさん
08/02/03 02:03:14
Windowsが不安定と言われるのは、無駄にサーバに接触できる環境が多いからじゃないかな
以前リモート・デスクトップで繋いだら、始めてブルースクリーンに遭遇したよ・・・
601:デフォルトの名無しさん
08/02/03 04:35:00
>>598
それはなんちゃって一応はiSeriesメインのエンジニアのお前がWMI知らないだけで馬鹿
602:デフォルトの名無しさん
08/02/03 04:37:26
>>598
iSeriesは特定のモデルでコンデンサあぽん続出ですよ
不安定なのはOSのせいじゃなくてハードのせいだから
603:デフォルトの名無しさん
08/02/03 07:18:34
Win鯖は不特定モデルでまんべんなく不安定だろ。w
ただ、引き合いにiSeries出すのは卑怯だ罠。
今は絶滅したジャンル(?)で唯一のオフコン機だし。
しかしiSeriesとタメはれる安定性のWin鯖のハードってあんの?
あるなら会社の基幹業務からiSeriesは消えてなくなっているはずだが。
604:デフォルトの名無しさん
08/02/03 09:16:46
ES7000とかはどう?
地元の地銀では使っているよ。
605:デフォルトの名無しさん
08/02/03 11:48:34
うちにもiSeriesが4台あるんだけど(同じモデルじゃなくてピンキリで色々)
NIC不良とかCPU不良とか4台ともハード的に不具合出てるぞw
606:デフォルトの名無しさん
08/02/03 13:12:27
おいおまえら激しくすれ違い
607:デフォルトの名無しさん
08/02/10 23:29:42
保守age
608:デフォルトの名無しさん
08/02/13 09:48:25
struts2でおすすめの書籍ありますか?
609:デフォルトの名無しさん
08/02/13 10:09:28
オヌヌメサイトも
610:デフォルトの名無しさん
08/02/13 12:20:48
>>608
『Starting Struts 2』Ian Roughley,Lulu.Com,2007/6/30
(入門書だが。)
>>609
URLリンク(struts.apache.org)
のDocumentationあたり
どっちもたいして難しい英文では書かれていない。
611:デフォルトの名無しさん
08/02/13 21:47:04
struts2でstruts.xmlを使わずにアノテーションだけでInterceptorって実現できるもんですかね?
会員サイトでログインチェックをすべてのメソッドに書くのは格好悪いし、
かといってstruts.xmlには何も書かない方針だし、どうしたらいいんでしょうか。
612:デフォルトの名無しさん
08/02/14 09:17:42
Filter
613:デフォルトの名無しさん
08/02/14 09:54:06
>>612
thx!
でも具体的にどういう実装するのがいいのかわからんorz
614:デフォルトの名無しさん
08/02/14 21:40:10
javax.servlet.Filterの具体クラスをweb.xmlに登録すればいい。
doFilterのServletRequestをHttpServletRequestを取得、
request.getSession(false)でHttpSessionを取得、後はお好きにどうぞ。
ログインといえば、JAAS使ってる人ってどのくらいいるんだろう。
次の案件で長いお付き合いになるパッケージ製品作るから採用するけど。
615:デフォルトの名無しさん
08/02/14 22:19:27
>>614
こんなフィルタ作ってみたんだけどダサいかな?突っ込みキボンヌ。エロイ人。
public class SessionFilter extends FilterDispatcher {
@Override
public void doFilter(ServletRequest req, ServletResponse res,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest httpReq = (HttpServletRequest) req;
String userId = (String) httpReq.getSession().getAttribute("userId");
if (StringUtils.isEmpty(userId)) {
if (!httpReq.getServletPath().equals("/login.action")
&& !httpReq.getServletPath().equals("/login!input.action")) {
((HttpServletResponse) res).sendRedirect("login!input.action");
return;
}
}
super.doFilter(req, res, chain);
}
}
616:デフォルトの名無しさん
08/02/14 22:33:58
>>614
Acegi security 使えばどうよ
今はspring security だけどさ
617:デフォルトの名無しさん
08/02/14 22:39:10
>>615
大体そんな感じでいいと思うけど、セッション乗っ取り攻撃には気をつけなされ。
>>616
貴重な情報 thx、調べてみるよん。
618:デフォルトの名無しさん
08/02/15 13:04:25
>>609
オヌヌメかどうかわからんけど、まだ触り始めたばかりなら、以下を読むといいかも
(DLする前に読むものか)
URLリンク(journal.mycom.co.jp)
619:デフォルトの名無しさん
08/02/19 00:05:30
>>615
さすがにlogin.actionだけを文字列チェックして回避ってのはダサくね?
ビジター画面増えたら困るし。まあそこは設定ファイルに外だしするとしてもだ。
今思いついただけなんだけど、jspへの遷移をアノテーション等で実現する場合、
struts.xmlにはビジターとメンバーのpackageだけ記述しておいて、各Actionクラスでは
@ParentPackageで所属するパッケージを指定する。
メンバーパッケージではセッションチェックのインターセプターを定義する。
っていうのがstruts2流なんじゃないかな。
うちがやった時はそこまで頭まわらなかったので、こんな感じにしてたけど
BaseAction ..... getRequest()とか実装しとく
|
+-------------+
LoginAction BaseMeberAction ... セッションチェック
|
+----+-----+
MenuAction ... ...
620:デフォルトの名無しさん
08/02/19 00:10:29
でもってインターセプターの定義は呼び出される順序とか大事だから、
struts.xmlにはインターセプターの定義がずらずらと並んで
Zero-configからはどんどん離れていくと。
ヤレヤレだぜ
621:デフォルトの名無しさん
08/02/19 00:22:18
>>619
>ビジター画面増えたら困るし。まあそこは設定ファイルに外だしするとしてもだ。
具体的にどうやって実現するのがベターかね?
>>620
extendすれば多少は抑えられるかと。
完全なゼロコンフィグはむりぽいけど。
622:デフォルトの名無しさん
08/02/19 01:47:24
>>621
俺はweb.xmlにごちゃごちゃ書くのが嫌いなので
別途設定ファイルを用意して
<root>
<action>
<visitor>login.action</visitor>
<visitor>login!input.action</visitor>
</action>
</root>
こうなってるのを読み込む方がソースに直書きよりははるかにいいと思う。
xml読み込むライブラリとかは普段使ってる奴があるでしょ。
web.xmlに書くなら長くなっちゃうから、カンマ区切りで並べて書いちゃうかも。
で拾ってきてsplit(",")する。
packageそのものはextendできるけど、インターセプターの一部だけ拡張って
どうやるの?インターセプターは順序が大事だから、パッケージで一個でも
独自にするなら定義全部書かないといけないと思ってた。
623:デフォルトの名無しさん
08/02/19 07:06:01
struts.xml書かないでアノテーション使う奴理解できねえ
画面遷移定義が偏在化して管理が大変そう
624:デフォルトの名無しさん
08/02/19 08:19:26
>>623 俺もそう思う、画面遷移を定義ファイルに集中化して見通しをよくしたはずじゃなかったのかよ?
又ソースに埋め込んでどうするつもりだ?
ゼロコンフィグ 魅力なし
625:デフォルトの名無しさん
08/02/19 09:29:45
で、次は一つのファイルが肥大化するとか、
プロジェクトメンバー全員で一つのファイルをメンテウザスとか
Struts1.xの頃の不満を繰り返す・・・
おまいら学習能力まるで無しだなw
626:デフォルトの名無しさん
08/02/19 09:49:10
画面遷移の定義ってあまりころころ変わるものじゃないから
集中管理してもメリット少ないよね。
627:デフォルトの名無しさん
08/02/19 10:03:10
>>622
<interceptors>
<!-- LoginInterceptorを定義 -->
<interceptor name="login"
class="example.interceptor.LoginInterceptor" />
<!-- LoginInterceptorとStruts標準のdefaultStackを足し合わせた新しい「defaultLoginStack」を定義 -->
<interceptor-stack name="defaultLoginStack">
<interceptor-ref name="login" />
<interceptor-ref name="defaultStack" />
</interceptor-stack>
</interceptors>
628:デフォルトの名無しさん
08/02/19 11:54:45
>>625
それなら分割すれば済む話だろ。いったいいつの話をしているんだ?
629:デフォルトの名無しさん
08/02/19 12:15:29
>>628
そういう意味じゃなくてXMLに集中させるメリット少ないなって意味。
一度XMLに書いてそれっきり変えないようなものはソースに書いてもいいんじゃねーのと。
開発中や運用中に頻繁に変えるならXMLでもいいと思うけど。
画面遷移ってそんなに頻繁に変更するか?
630:デフォルトの名無しさん
08/02/19 21:08:40
変更の度合いよりも、
どうせプログラムも変更しなきゃ動かなくなるんだから
XMLあるだけジャマじゃね
ってことじゃないのか。
631:デフォルトの名無しさん
08/02/19 22:04:12
>>629
何を言ってるんだ??
この画面のシステムをメンテしているときに、別の画面に切り替えておくとか、
運用の切り替えはファイルの方が圧倒的に有利だろ
運用状態を切り替えるのに、いちいちコンパイルするのかよ
632:デフォルトの名無しさん
08/02/19 22:17:36
strutsってホットデプロイできるの?
633:デフォルトの名無しさん
08/02/19 23:43:49
レス読んで日本語が難しいって事がわかったw
まぁうちは今のレベルの人員(運用も含め)じゃ集中管理の方がメリット高いな
634:デフォルトの名無しさん
08/02/19 23:45:21
>>627
interceptor-refにはインターセプター単体でもスタックでも指定できるのね。
なるほど。デフォルトのparamとvalidatorの間に入れたい、みたいな場合も
全部書かないでいけるの?
635:デフォルトの名無しさん
08/02/19 23:56:28
>>629
一度きりで変更しないならxmlでもアノテーションでもどっちでもいいと思うけど。
むしろ変更があるからこそ、作業対象が分散しないようにアノテーションがいい。
>>631
運用状態を切り替えるのにstruts.xml修正して再起動するの?
tomcat自体は立ち上げておく必要があるのなら
管理画面から動的に切り替えられるようにしとかないと怖くない?
webサーバーの台数増えたらめんどいし。
636:デフォルトの名無しさん
08/02/20 01:26:26
再起動する必要ないよ
tomcatは知らないけど、WebLogicはアプリケーションごとにデプロイできる
まぁこれとは別にHTTPサーバがあったりすると、切り替え中はそっちで抑止かけるなりすればいいし
637:デフォルトの名無しさん
08/02/20 01:33:11
>>636
tomcatもホットデプロイはできるけど
static領域とか初期化し直しになるじゃん。
初期化するからstruts.xmlも再読込されるんだけど。
classに変更があるとセッションも保持されないし。
アプリの再起動って意味で書いたんだけど。
ユーザーからのアクセスがほとんど無い時間帯がある
システムならそれでもいいけど
638:デフォルトの名無しさん
08/02/20 01:52:08
WARでデプロイしてるなら
コンパイルし直すのもWAR作り直すのも手間は変わらないんじゃないか?
639:デフォルトの名無しさん
08/02/20 02:21:44
>>636
新人君よ。アプリケーションサーバを複数台用意して1台づつ止めてデプロイしなおすということもあるんだよ。
tomcatもweblogicもホットデプロイというより、自動デプロイという表現の方がええと思うぞ
640:デフォルトの名無しさん
08/02/20 03:47:38
ダイナミックなモジュールのロード・アンロードでSpring OSGi に期待してるんだけど、SpringDMってそういうもんだよね?
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
4346日前に更新/258 KB
担当:undef