△△もっとStruts2の良さを教えてくださいSsssion6

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2008/08/01(金) 05:27:03
Apache Strutsフレームワークについて語るスレ

前スレ
△△もっとStrutsの良さを教えてくださいSession5
http://pc11.2ch.net/test/read.cgi/tech/1167469508/
2009/07/30(木) 06:16:10
1レコード200バイト(全角100文字分)のデータがあっても1万件で200KBにしか
ならないから、社内専用業務アプリとかでレコード件数が想定できるなら
爆弾でも無いんじゃないかな。

外部公開するシステムでそんな作りになってたら「趣味の延長でしかコード
書いたことないんだなあ」って思うけど
2009/07/30(木) 06:17:37
>>308
あ、2MBだね。それでもBMP画像1枚分くらいだから同時接続クライアントが
10数人とかいうレベルなら無問題
310デフォルトの名無しさん
垢版 |
2009/07/30(木) 07:28:07
つ セッションタイムアウト
2009/07/30(木) 10:08:31
>>307
ページ切り替え前提で、基本的なとこだけ
元データが数千万件と言う場合も有るので、取得最大件数を指定できるようにする
セッションに持つのは、取得最大件数分のプライマリキーまたはそれに該当するデータのみ
で、表示するページのデータのみ、セッションに持ったデータを元に取得
1ページあたりの件数も10〜100あたりで絞る
2009/07/30(木) 10:54:28
>>311
なるほど!
大変参考になりました、ありがとうございます!m(_ _)m
2009/07/30(木) 21:25:09
>>301
ものによる。
件数等を見ていろいろといじる。

というのはリクエストのたびのデータベースアクセスも負荷が大きくなりやすいから。
それに万単位でデータを取るということはまずないはず。

LIMITとかOffsetだけ使うようなシンプルなやつだと楽だけど、
実際のところ表示したデータの戦闘と終端のキーを持つことも多い。

セッションをサーブレットにおかずにEJB等にもっていって
そちらで管理してもらうというのもまぁやる。
メモリが圧迫すれば自動的に吐き出すから、何回もブラウザ起動しなおして
セッションタイムアウトまで圧迫するということはない。
2009/07/31(金) 00:49:20
セッションにオブジェクトを入れまくって長寿命のオブジェクトを増やすと、
Full GCの頻度が増える気がするんだが、その辺は大丈夫なのか。
2009/07/31(金) 01:10:34
使用するメモリ量と想定するユーザー数の把握が出来てるなら大丈夫。
検索結果はスナップショットで維持されるべきということなら通常は>>311の方法をとる。
連続性を意識したい場合は>>313のように。

手軽だけど顧客受けがよくないのがOFFSET、LIMITで単純に区切る方法。
次へ次へとページングしても前のページでデータが消されたりしていると
表示されないデータが出てきたりして問題が発生するからOFFSET系は業務系ではまず使わない。

完全にStatefulならEJBを併用しないとつらい。
2009/07/31(金) 12:54:16
>>313
>セッションをサーブレットにおかずにEJB等にもっていって
>そちらで管理してもらうというのもまぁやる。
>メモリが圧迫すれば自動的に吐き出すから、何回もブラウザ起動しなおして
>セッションタイムアウトまで圧迫するということはない。

分かってなくて申し訳ないんですが、この部分をもう少しお教え頂けない
でしょうか?

外部に置くというのはなんとなく分かったんですが、アプリケーション
サーバと別に置くという事は、HttpSessionBindingListener みたいな
ものでセッション切れを検知して、外部のサーバーなりに、こいつの
情報は消せ!みたいな事をする必要があるって事ですか?

もし何らかのコンポーネント化されている様でしたら名前を教えて
頂きたいのですが。

あと、「メモリが圧迫すれば自動的に吐き出す」ここの意味もちょっと
よく分かりませんでした。

教えてクンで申し訳ないですが、何卒よろしくお願いします。
2009/07/31(金) 14:58:25
> OFFSET系は業務系ではまず使わない。

案件の性質によるだろ
なんでもかんでも重厚に書けばいいってもんじゃない
2009/07/31(金) 18:06:05
うちの案件ではページングもさせてもらえん。
div入れ子で全件表示
2009/08/01(土) 06:22:24
>>315
>次へ次へとページングしても前のページでデータが消されたりしていると
>表示されないデータが出てきたりして問題が発生するからOFFSET系は業務系ではまず使わない。

むしろ消されてるデータが表示されることの方が問題なので
OFFSET LIMITを使うべき
2009/08/01(土) 07:26:22
>>314
FullGCの頻度が増えるかっていうより、単純にそれだけメモリを
確保しっぱなしになるっていう話だからメモリが足りてればいいんじゃないかな。

つーかリクエストスコープで済む物をセッションに入れることは
基本的に推奨されない。スコープは短く、不必要なオブジェクトは解放、これ常識。

前にWebサーバーでSSLしてるせいでロードバランサーが割り振りできない案件が
あって(携帯対応なのでCookie非対応機を考慮しないと行けない)、結局その時は
セッション情報をDBに入れてアクセスの度に呼び出してたんだけど、セッションデータを
少なくしておいてよかったと思ったよ。

そのLBの下ではすでに別の携帯用のサービスが動いていたからあんま考慮してなかったんだが、
本番開始してからそのサービスは前から時々セッション切れを起こすって聞いて、
インフラに確認したらLBではIPアドレスによる振り分けしかしてないってんであわてて対処した。
321319
垢版 |
2009/08/01(土) 07:33:02
>>>315
>>次へ次へとページングしても前のページでデータが消されたりしていると
>>表示されないデータが出てきたりして問題が発生するからOFFSET系は業務系ではまず使わない。
>
> むしろ消されてるデータが表示されることの方が問題なので
> OFFSET LIMITを使うべき

ああ勘違いしてた。,1〜10,を表示後、11〜20を表示しようとして7が消されてると、
12〜21が表示されてしまって11が表示されない、という事がいいたかったのか。
それってページングでは当たり前というかむしろそうあるべきと思うんだがどうなの?
最初に取得したのを信じるとレコードが挿入されても反映されないわけだし。

数百万件なんていうレコードがあるテーブルでは言わずもがなでSELECT時からページングだし、
挙動が同じ方がわかりやすくね?
2009/08/01(土) 10:16:37
>>321
数百万件ではなく数十件でもページングがあれば発生する
業務系で今まではスクロールで実装されていたのを単純にオフセット使うと問題になる

ある特定時点でのデータを順番に見ていくというのは非常によくあること
2009/08/01(土) 18:47:04
だから無効なデータを表示したり、新規のデータを表示しないのは不味いという話。
データベースは最新の情報しか持たない。履歴は他にちゃんと仕組みを考えるべき。
いちいち作業用のデータベース作りまくるコボラー思考なんじゃないの?
2009/08/01(土) 22:40:42
>>320
>メモリが足りてればいいんじゃないかな

メモリを足したところで、Scavenge GCを生き延びてOld領域に追い出されたオブジェクトが減るわけではない。
そういったオブジェクトが広大なOld領域を少しずつ食いつぶし、
いずれ発生するFull GCの際には大きな足かせとなる。
メモリを足せばFull GCの回数は減るが、
いざFull GCが起きたときの処理は、メモリサイズに応じて重くなる。

まあ、スコープは短く、というのには激しく同意する。
2009/08/01(土) 23:57:50
>>323
毎回リクエストのたびにオフセット使うのはダメだよというだけの話でしょ?
上の話でもキーのみ取得とか現在表示しているページの先頭と最後のキーを保存するとか
そういう対処が普通は必要になるでしょ?というお話でしょ。

>>324
コンカレントGCである程度解決すると思う。
G1GCが安定すればそれでいいやという気も。
2009/08/02(日) 01:35:45
セッションで持つ必要性があるか OFFSET / LIMIT 使うかは
結局のところ何のためにページングしたいかによるんじゃないか?
やりたいことによっちゃページングなぞしないで全件表示が一番よい場合もあるだろうし
2009/08/02(日) 08:55:26
>>326
それもよくいわれるね。
スクロールにしてくれと。
2009/08/02(日) 16:35:48
何万件も有ると遅いって文句言いそうwww
329デフォルトの名無しさん
垢版 |
2009/08/03(月) 18:04:29
エラー表示をテキストエリアに出したいのですが、
<s:actionError>のタグを使うと、
テキストエリア内に<ul><li>ってタグが一緒に表示されるのですが、
これはどのようにすれば消すことができるのでしょうか?
2009/08/03(月) 19:26:31
ActionErrorTagクラスを見る限り、どうもハードコーディングされてるっぽいな

独自に出力するのなら。やりかたは2つある。


1. 自分でfreemarkerのテンプレートを用意する。そして、
<s:actionerrors theme="oreore" templateDir="fm" template="oreore-actionerror.ftl" />
みたいな感じで書けば動くはず。詳しくはドキュメントを見てくれ。
このやり方はなにかと面倒だから、俺はオススメしない。


2. 自分でactionerrorを出力するJSPを書く。

<s:if test="!#action.actionErrors.isEmpty()">
<s:iterator var="err" value="#action.actionErrors">
<s:property value="#err" /><br />
</s:iterator>
</s:if>

とでも書いて外部JSP化し、includeすればいい。俺ならこっちでやる。
2009/08/03(月) 23:25:54
ちょっと確認したいんだが、JSPの画面でボタンを押す
→DBの中身をSQLで取ってきてそれを配列に格納する
→配列の内容を最初のJSP画面でテーブル表示するというのは
<logic:iterate>とJavascriptを使うのだろうけど、
配列の内容をテキストボックスに入れた状態で表示して
なおかつチェックボックスも一緒に表示したい時って

<logic:iterate id="AA">
<html:checkbox name="AA" property="AA-BB" value="1" onClick等... />と
<html:text name="AA" property="AA-CC" value="AA-CC" /></logic:iterate>
とかでいいの?
<bean:write id="AAA" property="???" />だとテキストボックス表示できないし。
2009/08/03(月) 23:50:00
struts2スレだから、struts2という前提だけどsタグ以外は使わないよ普通
2009/08/04(火) 14:22:15
>>331
なにをしたいのか意味がわからないんだけど。

同じ名前のパラメータをチェックボックスとテキストエリアで送りたい?
そんなことしたら、サーバが受け取るパラメータは

AA = { "1", "hoge" }

みたいになるぞ。
334デフォルトの名無しさん
垢版 |
2009/08/05(水) 19:22:27
StrutsとXILISHは語呂が似てるよな?おまえら、ソウ思うだろ?
335デフォルトの名無しさん
垢版 |
2009/08/05(水) 19:25:34
     俺はCプログラマだけど、
XILSSHみるとStrutsにみえる。
2009/08/06(木) 03:20:22
俺はロッテのガムが好きだけど
XILSSHみるとキシリッシュと呼んでしまう
2009/08/14(金) 10:49:41
>>332
> struts2スレだから、struts2という前提だけどsタグ以外は使わないよ普通

カスタムタグ作るとき毎回struts2の流儀で作ってる?
めんどくさくない?
2009/08/14(金) 15:51:18
そうか?

2つクラスを用意する必要があるけど、本来1つのクラスに書くべき内容を
2つに分けただけなんだし、労力はそんなにかわらんだろ
2009/08/14(金) 18:33:19
一つで書くべき内容を二つにわけるのは、めんどくさいだろ。
2009/08/15(土) 07:22:57
struts2とJSFはどっちが将来性あるの?
2009/08/15(土) 13:04:07
神のみぞ汁
2009/08/16(日) 06:01:58
世界はJSFに向かってるけど、国内は依然struts1のままで止まってる感じ。
struts2が出来るエンジニアが居ないのか、struts2での開発を契約したがらない営業が多いのか。
2009/08/17(月) 11:59:05
>>338
似たようなプロパティ用意してどっちもアクセッサつけたり、
そもそも普通のTagSupportの派生にしたときみたいに
つくりが単純じゃないのがなんかいただけないっつーか
後で新人に保守させるときちゃんと理解してくれるだろうかっつーか。
2009/08/17(月) 22:17:49
新人に保守させるのは結構危険だと思うけどな。
2009/08/17(月) 23:31:30
新人に合わせるなら、最初から新人が組めば良くないか。
人件費高い経験者不要。
2009/08/18(火) 02:40:43
後で誰が保守するかわからんからなるべくわかりやすく
しとくのは大事ー大事ー
2009/08/18(火) 14:51:42
>>345
使い捨てのシステムならまだしも、
新人が保守性の高いコードを書けるようになるメソッドを熟知しているんですね!
ぜひ教えてください><
2009/08/19(水) 11:55:47
骨格しっかりつくって真似させて、末端のコードは
誰が書いても似たような構成になるようにシンプルに保つ。
これしかない
2009/08/19(水) 12:11:40
本買って休み中に勉強しようかと思ったけど今一つ良いのがなさそうだな
IN ACTIONは英語苦手だし
2009/08/19(水) 12:51:43
>>348

>>345を良く読め
2009/08/19(水) 15:18:25
>新人が組めば良くないか。

あとで結局コストがかかるの術〜
352デフォルトの名無しさん
垢版 |
2009/08/19(水) 23:02:54
新人でも自称○年でも大して変わんねーよ
2009/08/20(木) 18:53:05
「自称」ならな。
2009/08/22(土) 02:43:41
似通った画面がいくつかあってhiddenで項目値を受け渡しする、各々の画面で
ValidatorFormのvalidateで入力チェックする時ってアクションフォーム継承しちゃだめですか?
各々のアクションフォームに同じ定義書くのはメンテしにくそうで避けたいんだけどstruts1.3でエラーになるんです。
下記みたいに継承してます。

ValidatorForm

+アクションフォームA
  |
  +アクションフォームB
    |
    +アクションフォームC
2009/08/22(土) 23:36:53
新人が理解出来ない時点で保守なんて無理。
新人が最初から組めば保守出来るじゃねーか。
結論:単価高いベテランPGは不要。
2009/08/23(日) 10:41:17
では>>354のケースではどのように組めば新人が理解出来そうだと>>355は考えます?
2009/08/23(日) 11:02:58
ちなみに新人と書いてニートと読む。
2009/08/23(日) 11:45:17
ニートが理解出来そうな組み方か…
難しそうな課題だな
2009/08/23(日) 16:57:48
>>356
相手しないほうがいいよ
2009/08/24(月) 04:44:40
新人が理解出来る組み方も難しいのは変わらないでしょ。
2009/08/24(月) 07:04:02
(それは新人が理解出来る組み方の案なのか?)
2009/08/24(月) 07:13:51
strutsの話題しようぜ
363354
垢版 |
2009/08/24(月) 20:14:46
ValidatorFormの孫継承で上手くいきました。
Iterator項目からの入力を間違えてました。
364デフォルトの名無しさん
垢版 |
2009/09/06(日) 22:04:54
strutsを勉強したいが、いいサイトか本がないでしょうか?
今strutsによるwebアプリケーションスーパーサンプル
とサイトで勉強しております。
2009/09/07(月) 08:03:17
ネット調べればいくらでもあるだろ・・
2009/09/07(月) 11:32:54
ちゃんと勉強するなら網羅されてる書籍を一冊こなすのも悪くない。
実際、案件っぽいのを組んで経験してみるのが一番。
2009/09/07(月) 11:52:46
掲示板でも作ってみればいいさ
368デフォルトの名無しさん
垢版 |
2009/09/07(月) 19:26:11
ちゃんと勉強するなら網羅されてる書籍を一冊こなすのも悪くない。
その本を教えてください。
掲示板作りたいんですが、まだそのレベルでは....
369368
垢版 |
2009/09/07(月) 19:31:54
ネット調べればいくらでもあるだろ・・
ネット見て勉強しています。
javaの道など。
なにかこれはためになるサイトがあれば教えてください。
みなさんの方が先輩なので、よろしくお願いします。
2009/09/07(月) 19:46:46
引用記号も使わずに書いてるから、支離滅裂な文章になってるな
371368
垢版 |
2009/09/07(月) 22:15:24
もっと理解したいので、支離滅裂な文章になってしまいましたが
サイトや本よろしくお願いします。
2009/09/08(火) 05:26:38
マジレスすると、Struts1系ならRequestProcessor周りのソース見たほうが勉強にはなる。
Strutsってなんてしょぼいフレームワークなんだ・・と思えるようになる。
373368
垢版 |
2009/09/08(火) 19:45:20
phpのほうが得意で、webアプリケーションでもうひとつ
作れるようになりたいと思い、JSPやservletなど勉強してstrutsに移行
しようと思ったのですが、勉強しなくてもいいのかな?
2009/09/08(火) 19:49:38
しらねーよw
375368
垢版 |
2009/09/08(火) 19:59:55
勉強したいんだけど
376368
垢版 |
2009/09/08(火) 20:03:11
できるようになりたいんで教えてください。
>>372さんへ
ググってしらべました。
今ひとつ理解ができませんでした。
2009/09/08(火) 20:49:05
せっかちすぎだろ
ぐぐったサイトを片っ端からじっくり読めよ
一回で理解できないなら何度でも読めよ
若いんだから(たぶん、中学生くらい?)楽しようとすな
2009/09/08(火) 22:01:43
JSP/Servlet以前にJavaを理解しているかどうかにもよる

まだ理解していないとしたら、Strutsまでいく段階ではないね
JSPだけならPHPとそうかわらないんだからJSPだけで掲示板作るのもよいかと
2009/09/09(水) 05:25:08
>>376
なんで2分や3分ソース読んだだけで「わかりませんでした」なんだよw
つうかJava自体しらなそうだな。Servlet以前の問題だろ。
380368
垢版 |
2009/09/09(水) 21:23:30
今日も読んでいるよ。
ありがとうございました。
2009/09/13(日) 03:37:41
宿題スレでも解いてればスキル上がるだろ。

http://pc12.2ch.net/test/read.cgi/tech/1248012902/
★★ Java の宿題ここで答えます Part 68 ★★
2009/09/16(水) 21:26:44
今日画面遷移がなぜかできなくてまいった。

エラーが出てるわけでもなく、なんなら遷移先のjspもちゃんとできてるのに遷移してくれない(jspに返ってこない?)。
Actionにもちゃんと飛んでた。
ちなみにwindow.openで別画面を開いておいた状態なら遷移先の画面を開くことが出来る(jspに返ってくる)。

原因が全然わかりませんorz
しかも見た目的に何も反応がないみたいになってて気味が悪いw
同じような現象にあった人いますか?


2009/09/16(水) 22:49:03
今後はS2Strutsを使って開発することになった。何が違うか簡単に教えてもらえないだろうか。

Strutsの経験はあるんだけど、ようはseaser2とstrutsが混ざったようなものなの?
これから勉強するなら、seasar2の勉強すればよい?
2009/09/17(木) 00:14:34
>>383
DIコンテナ自体知らなければseasar2の勉強した方がいい。
あとはほとんどサンプルを動かしながら考える。でStruts知ってれば十分。
2009/09/18(金) 01:55:55
pojoって他に依存しないセッターゲッターメソッドを持ったクラス。
っていう風に無理矢理納得してたんだけど、実際どういうものなんだろう。

聞かれたんだけど、たいしたこといえなかった・・・。
2009/09/18(金) 11:06:31
>>382
IE8のバグだ
2009/09/18(金) 14:30:57
>>385
セッターゲッターは関係ないだろう
それはJavaBeans仕様の規約の一部だという意味以外はない



「依存してるコードが少ないほど把握/拡張がしやすい」程度の意味しかないよ
2009/09/18(金) 14:52:35
EJBはマジでゴミだったな
あんなものを考えたやつはインテリ風場か
2009/09/18(金) 15:42:56
DAOはEJBなんかよりVeloSurfってのがいいよ
2009/09/18(金) 16:05:16
>>388
EJB 2.1までの使いにくさの反省からDIコンテナになったEJB 3.0
さらに扱いやすくなったEJB 3.1
となったのはよかった。

今ではSpringとかのほうがEJBより複雑で大きいものになってしまった。
各種DIコンテナもシンプルにするという動きになるといいな。
2009/09/18(金) 18:19:47
>>389

なにこれ?view層でDBアクセスための物?

だとしたら狂気の沙汰だな
2009/09/19(土) 01:19:55
>>391
> なにこれ?view層でDBアクセスための物?

どこにそんなこと書いてあるんだよ
2009/09/19(土) 02:23:00
>>390
そのうち、EJB重い、複雑 なんて言ってる連中は時代遅れ


なんて日がくるやも
2009/09/19(土) 10:22:32
生産性の悪さに見合ったお金もらえるならいいんだけどね
2009/09/19(土) 13:13:25
JavaにはPerlのDBIに相当するライブラリないの?
2009/09/19(土) 13:36:56
JDBCでいいんじゃね?
ドライバとインターフェースの分離がメインだと思うから
2009/09/19(土) 22:24:15
>>395
Apache Commons DbUtils
http://commons.apache.org/dbutils/

上に書かれてるVeloSurfも秀逸
2009/09/20(日) 08:35:44
jspに比べればejbのメリット有った支那。
jspで十分ならphpのほうが単価安く済ませられる。
2009/09/20(日) 17:23:59
>>392
Velocityの補助ライブラリという位置付けなんだから
view層での使用がメインになるのでは?
2009/09/20(日) 23:32:54
>>399
本体はこれだよ。単体でも使えるようにできてる。

This class is the Velosurf main entry class if you do not use the toolbox.xml mechanism.
http://velosurf.sourceforge.net/api/velosurf/Velosurf.html
2009/09/23(水) 23:09:20
こうだな
Velosurf velosurf = new Velosurf(new File("velosurf.xml"));
402デフォルトの名無しさん
垢版 |
2009/09/25(金) 07:47:04
strutsを勉強しようと思うんだが、いい本ある?
後struts2の本はいつでるんだ?
403デフォルトの名無しさん
垢版 |
2009/09/25(金) 22:12:21
もう出てる
http://www.amazon.com/exec/obidos/tg/detail/-/1847193390
404デフォルトの名無しさん
垢版 |
2009/09/25(金) 22:16:13
日本語がいいのだが
405デフォルトの名無しさん
垢版 |
2009/09/26(土) 06:51:39
strutsでシステムを組むことになってしもうた。
しかも一度も組んだことがない。
みんな組んだことがない。
狂気のさただ。
phpができればstrutsもできると思っていやがる。
できねーよ。
とりあえず、参考文献はなにを買えばいいのだ?
サイトを教えてください。
つーかこういうのって一人でつくるものではないと思うのだが。
ほんとどうしよう?
2009/09/26(土) 08:59:38
>>405
まず、javaわかるのかよ。
2009/09/26(土) 09:53:16
JSP&ServletができればStrutsはできるけどな
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況