トップページ⇒tech
1001コメント329KB

△△つづいて漏れにStrutsの良さを教えてくだっさい

■ このスレッドは過去ログ倉庫に格納されています
00011 ◆lqgT6FBSpw NGNG
つづけてどうぞ。
JSTLがあればいらんじゃん、とかJSFでおわったな、とか偏見あふれる意見もどうぞ。

前スレ
http://pc2.2ch.net/test/read.cgi/tech/1048030962/
0153152NGNG
JSPではこんな感じ
<jsp:useBean id="xBean" class="BXXX_01" scope="session"/>
<tr>
<td><%=xBean.getParam(501)%></td><td><%=xBean.getParam(502)%></td>
</tr>
0154デフォルトの名無しさんNGNG
>>151
> 表示内容はほとんどSQLで処理して
危険ですね。
0155デフォルトの名無しさんNGNG
考え直すだけ未来があるな。ちょと安心
0156デフォルトの名無しさんNGNG
他人のソースをいろいろ読む大切さを痛感・・・
0157デフォルトの名無しさんNGNG
>>152
絶句
0158デフォルトの名無しさんNGNG
はしご高が文字化けします。
初期表示では化けていないのですが、
<html:errors>から
画面遷移すると
?で表示されます。
ご存知の方いたらご教授お願いします。
0159デフォルトの名無しさんNGNG
>>158
文字コードをUTF-8にしる。
0160122NGNG
>>152
こんな感じです。一応MVCモデルでモデルクラスでSQLの結果をStringもしくは
String配列にセットしてから、
xBean.setStringArray("HOGEGENRE", hogeGenre);
xBean.setStringArray("HOGENAME", hogeName);
でJSPで
<% for (int i=0;i<Integer.parseInt(xBean.getString("HOGEGENRECOUNT",i));i++) { %>
<tr><td><%=xBean.getString("HOGEGENRE",i)%></td></tr>
<% for (int j=0;j<Integer.parseInt(xBean.getString("HOGENAMECOUNT",i));j++) { %>
<tr><td><%=xBean.getString("HOGENAME",i,j)%></td></tr>
<% } %>
<% } %>
という具合に取り出します。
0161136NGNG
冷静に考えれ。入力フォームページのたびにクラス一つ作るんだろ?
めんどくさいだろだろ。

リクエストを直で扱う方法こそ最強。
0162デフォルトの名無しさんNGNG
Strutsで作られたシステムをメンテナンスすれと言われたら泣くよ。

サーバサイドでJava使うこと自体、かなり無意味無価値なのは、
最早明らか。技術分からない経営陣が勝手に技術基盤選んで、
それに騙されてる中途半端なプログラマが沢山いる。そろそろ気づけ。
0163デフォルトの名無しさんNGNG
>>162
大規模Webで代替手段って何があるかな?
あおりではなく、普通に知らないので教えて欲しい。
0164デフォルトの名無しさんNGNG
>>160
とりあえず直感で話すと、メンテナンスしたくはないな
160のコードだけ見ても、xBean.getString("HOGEGENRECOUNT",i)が何を返すのか
直感的にまったくわからない。特に上の行、なんでループ変数iで毎回読み込んでるんだ?

このようにそういう設計のミス(だと俺は思う)によるコードは、可読性を著しく落とすし、
バグの発生率も上げる、気がする
0165デフォルトの名無しさんNGNG
>>162
Strutsじゃなくて、どんなフレームワークならOKですか?
それともフレームワークを使わないシステムをメンテナンスしたいということですか?

Javaだからだめですか?
COBOLならOKですか?
C#でドットネットですか? PHPですか? PerlでCGIですか?
ASPでVBScriptですか?
0166デフォルトの名無しさんNGNG
>>163

まず、アプリサーバとインターフェースとしてのウェブサーバをごちゃごちゃにしちゃいかん。この時点でPHPは消える。
Perlはもう古いだろ。
ASPだのC#だのは知らない。これはいいかもしれないし悪いかもしれない。
漏れがいいと思えるのを例としていうと、Rubyだな。
drbを使えばサーバサイドアプリが作れる。
データとhtmlのバインディングはERBという技術もあるし、
Amritaを使うとフォームの値とプログラムデータをシンプルにマッピングできる。
HTTPのリクエストはそのまま扱えばよい。フレームワーク必要なし。
0167デフォルトの名無しさんNGNG
>>166
drbがdrubyのことであるとしたら、どうやらリクエストごとにスレッドが起動するみたいなんだけど。
もしそうなら大規模ではとても使えないと思う。違ったら訂正よろしく。

それに、Rubyでも出来るけどJavaでも出来るよね。全否定するからには何かあるんじゃないの?
0168デフォルトの名無しさんNGNG
>>167
スレッドじゃなくて、リクエストごとにプロセスが立ち上がる、の間違い
0169デフォルトの名無しさんNGNG
>>168
なお悪いじゃん。。。
0170デフォルトの名無しさんNGNG
結局みんながstrutsを採用する理由と言うかメリットって何でしょうか?
何かしら光る物があるからそれなりに使われているのだと思うのですが
教えてください
0171デフォルトの名無しさんNGNG
自作してると結局Strutsみたいになる。
かといって、Strutsの仕様を見てると冗長な気がちとする。
Actionオブジェクトがスレッドセーフになればいいと思うんだけどね。
後フォームの処理が微妙。(どれでやっても微妙だとは思う)
0172デフォルトの名無しさんNGNG
>>167

スレッド大量に動くためのカーネルを作って、動かすとかしたらどうか。
サーチエンジンとか利用者とにかく多いという場合の意味での大規模なら、modruby側で全部リクエストを処理できるような、またちょっとした仕掛けが要ると思うけどね。
利用者がある程度限られてるけど、しかし業務ロジックが複雑になりがちという意味での大規模ならアプリサーバとウェブサーバ分ける価値がある。
そんなもの必要無いほど単純なサービス(掲示板とかデータ入力、検索するだけとか)なら、PHPのように作っていいんじゃないかね。
0173デフォルトの名無しさんNGNG
>>171

アプリケーションの性質に合ったリクエストの処理があると思う。
だから、アプリケーション毎に適切なフレームワークを少しづつ構築していくのがいいんじゃないか。
Struts ありきは無駄なだけだ。
0174デフォルトの名無しさんNGNG
>>173
それ、逆行してない?
仕様の共通化、設計の共通化がフレームワークを使う意義だと思うのだけれど。
0175デフォルトの名無しさんNGNG
アプリケーション毎に適切なフレームワークを少しづつ構築するためのフレームワークが必要だな。
0176デフォルトの名無しさんNGNG
mod_rubyとかdrubyいってるやつは実際につかったことのない素人にしか思えない。
残念ながら、rubyはまだまだエンタープライズな利用に耐えるだけのもんじゃない。
0177デフォルトの名無しさんNGNG
>>172
プロセスが立ち上がってしまう時点で大きなボトルネックになりそう。
apacheのモジュールとして組み込むと、細かい指示が出来なくなるし。
(出来たとしてもそれはCのソースコードを直接いじることになる)

大規模であればJavaで出来るし、ノウハウもライブラリも充実しているから、
やはりmodrubyを使ったほうがいい、というのはやはり間違っているといえると思う。

小さいものに関してPHPを使えというのはそのとおりだと思う。
正直利用者が1万人程度のサービスであれば、ASPとAccessで十分出来るしね。
そこでstrutsを用いることを否定はしないけど。牛刀を用いて…というほどではないし。

>>171
たとえばスレッドセーフになれば、当然パフォーマンスが落ちるわけで、
シンプルにしたいと思えばある種のトレードオフが生まれるのかもしれない。
そういう場合は自分でstrutsをスレッドセーフに継承して使ってやればいいけど、
スレッドセーフに最初からなっていたらそういうことが出来ないから正しいと思う。

フォームの処理はJSFなんてものが出てきたが、あれは微妙というか駄作の香り。

>>174
適材適所でしょう。すでによく出来たフレームワークがあるとはいえ、
何に対しても使えるわけではないし。
それにstrutsを使っても、それをベースに何らかのフレームワークを作る必要は
必ず出てくると思う。strutsは業務プロセスまでカバーしてないからね。
0178デフォルトの名無しさんNGNG
>>174

単にリクエスト処理するのに何がフレームワークだといいたい。

>>176

どこらへんが?

>>177

drubyを使うのは単なる常駐プログラム。
リクエスト毎にプロセスは立ち上がらないよ

小さいものってどういう意味?

使う人数が多い意味での大規模と、ロジックが複雑になるであろうとい
う意味での(ソースコードの)大規模化は違う。

漏れが言うのはロジックが複雑になるほう。
そのときにはPHPなんて使えない。
0179デフォルトの名無しさんNGNG
178にとって、フレームワークとはなんですか?
0180デフォルトの名無しさんNGNG
>>178
おじちゃん、おじちゃん。何を主張したいんだい?
独り言なら夢板でやっとくれ。

> 漏れが言うのはロジックが複雑になるほう。
> そのときにはPHPなんて使えない。
「PHP は」じゃなくて「スクリプト言語は」の間違いじゃないのかね。
Ruby もダメぽ。
0181デフォルトの名無しさんNGNG
>>171
WebWorkの場合はActionインターフェースを実装したクラスは、
リクエスト毎に生成されるらしいから、その辺ちょっと有利かも。
0182デフォルトの名無しさんNGNG
>>180

どこがどのようにだめなのかと聞きたい。

>>181

少なくとも、フォームをオブジェクトにマッピングするフレームワークなんてのは、
面倒で無意味ってこった。なにがやりたいのか。リクエストオブジェクトを渡して
くれるだけで十分だ。だから Servlet がいいフレームワークと言えるな。

作業効率を高めるためにフレームワークがある。Strutsのダメなところは無意味な
クラスがゴロゴロできてコードを読む手間が増え、開発効率が落ちる(それに、ク
ラスローディングのコストが高くなり、遅くなるんじゃないか。)

Struts作った香具師の会社じゃそういうふうにしようってしたかもしれんが、そんな
クソな規約を世間に言ってみたところで、無視されるだけだろ、、、と思っていたら、
jakartaブランドなのかはしらんが、謎なことに広まってる。この謎の理由を漏れは
知りたい。
0183ヽ(´ー`)ノNGNG
> どこがどのようにだめなのかと聞きたい。
こっちが聞きたいな。
Struts を使って開発効率が落ちるなんて始めて聞いたよ。

> 無意味なクラスがゴロゴロできてコードを読む手間が増え、開発効率が落ちる
キチンと使えてないだけじゃん。
馬鹿でも使える銀の弾丸はありませんぜ。
0184176NGNG
まず、178がエンタープライズっていったときに
大規模システムに必要な要件が思い浮ばないのがやばい。

例えば「マスタリングEJB」によると、それには
* RPC
* 負荷分散
* 透過的フェイルオーバー
* バックエンドの統合
* トランザクション
* クラスタリング
* 動的再配置
* クリーンシャットダウン
* ログ作成および検査
* システム管理
* スレッド処理
* メッセージ指向ミドルウェア
* オブジェクトライフサイクル
* リソースプーリング
* セキュリティ
* キャッシュ
などなどがあると指摘されている。

んで、このうちRubyにある実用的な実装って何よ?
そもそもdRubyなんてクラスタリングもできないじゃん。

0185デフォルトの名無しさんNGNG
> どこがどのようにだめなのかと聞きたい。
スクリプト言語のどこがどのようにだめなのかがわからない奴に何言っても理解不能と思われ
0186デフォルトの名無しさんNGNG
>>185
evalもないような言語にいう゛ぁられたくないやいっヽ(`Д´)ノ
0187デフォルトの名無しさんNGNG
>>186 HotSpot。
0188デフォルトの名無しさんNGNG
君たち、漫才おもろいで。

PHPもそうだが、スクリプト言語といった時点で大規模には向かないという印象がある。
違うぞ向いているぞというなら別にperlでも十分なわけだし。
0189デフォルトの名無しさんNGNG
エキスパートばかり集められるなら、それこそevalの塊 Lisp でやりたい。
しかし、そんなことはなくて、人の質はばらばらなので静的な制約の強いJavaがいいな。
0190デフォルトの名無しさんNGNG
>>184

クラスタリングできるじゃん!!

>>188

印象かよ!!
0191デフォルトの名無しさんNGNG
>>190
あれだけある要件のうち、一つだけですかい?

> 印象かよ!!
周知の事実でしょ。
0192デフォルトの名無しさんNGNG
大規模っていうのは、技術の話よりもっと重大な問題がある。

そんなことより、Struts のいいところを語ってくれ。
0193デフォルトの名無しさんNGNG
http://japan.pinkserver.com/mariko/2.html
0194デフォルトの名無しさんNGNG
>>191

いや、わざわざ挙げてもらってありがたいけど、
EJBだろうがRubyだろうが手間も必要なノウハウも
大して変わらんと思うよ。
0195デフォルトの名無しさんNGNG
>>194
176=184=186ですのでおまちがいなく。

ところで、EJBってご存じですか?

RubyでEJB相当のことが同じ手間でできるのでしたら、
ぜひ利用したいので、その方法を教えてくださいませ(プゲラッチョ
0196デフォルトの名無しさんNGNG
いままでマジレスしていたが、ただのJavaをしらない素人だったんだね。
ま、食わず嫌いというか保守的というか、そういう考え方が必要になる時代も
いずれは来るかもしれないね。その頃あなたは使えないエンジニアだろうけど。
0197デフォルトの名無しさんNGNG
Rubyで1億超えるような案件があったとして、
保守してくれるベンダはあるかな?
0198デフォルトの名無しさんNGNG
>>197
ネットワーク応用通信研究所
0199デフォルトの名無しさんNGNG
>>195
>>196

Javaプログラマの株下げるような書き込みはやめれ
0200デフォルトの名無しさんNGNG
>>195

具体的にEJBのどの機能について?
0201デフォルトの名無しさんNGNG
>>199
知ったかはやめれ… 知らないことは知らないというべき
0202デフォルトの名無しさんNGNG
>>201

わかった。あんまりいいたくなかったがEJBは無意味に複雑で遅くてクソだわ
0203しもじもNGNG
RubyもWebアプリの世界ではまだまだ分が悪いな・・・
有名な構築例としてはtDiaryくらいしかないし。
まっ適材適所ってことで
0204デフォルトの名無しさんNGNG
>>202
そのセリフだけでEJBについてわかっていないのが良くわかるな(w

EJBって何を指しているんだが。使ったことないくせによく言うよ。。。
0205デフォルトの名無しさんNGNG
EJBは実は制作効率悪い。それを有り難がる技術選択の出来ない部長と
中途半端な知識を持つプログラマ、こういうプライドの高いセミプロが格好の
カモなんだよね。そろそろ気づけ。
0206デフォルトの名無しさんNGNG
>>205
荒れているときには、特にソースを出すようにして。
せめて、どの部分が具体的に製作効率が悪いと思うのか、論拠と共に。

独り善がりな意見なら誰だって書ける。荒れる要因になるだけ。
202の人が荒らしたのも、結局は主張するばかりで内容が伴わなかったからだから。
0207デフォルトの名無しさんNGNG
>そろそろ気付け

アホ?
0208デフォルトの名無しさんNGNG
>EJBは実は制作効率悪い。
使ったことがないことが丸わかり。

>それを有り難がる技術選択の出来ない部長と
>中途半端な知識を持つプログラマ、
>こういうプライドの高いセミプロが格好のカモなんだよね。
自分が使えないから悔し紛れに書いてることがバレバレ。
一番プライドが高いのは自分。煽られて必死

>そろそろ気づけ。
おまえが必死なことはみんな気付いている(プゲラ
0209デフォルトの名無しさんNGNG
(´-`).。o(…正直、根拠もソースもない独り言は夢板でやって欲しいなぁ…)
02101 ◆lqgT6FBSpw NGNG
ここは漏れにStrutsの良さを教えるスッドレですよ。
0211デフォルトの名無しさんNGNG
Rubyでサーバサイドやっている場合は別として
JavaでWebアプリの場合、Struts以外にどんなフレームワークを使っていますか?

うちでは、昔は自社製フレームワークを使っていましたが、
最近ではStrutsかTurbineを使っています。

StrutsはvalidationのコードをActionFormに閉じ込めておくことができるのと
validationでエラーを検出した場合にユーザの入力を失わずに、
入力フォームを再度表示することが簡単なところにメリットを感じています。
0212デフォルトの名無しさんNGNG
Rubyってよくわからんのだが、EJBのトランザクション管理と同等の機能あるの?
あれを自分で実装することなんて想像もしたくないのだが。
0213デフォルトの名無しさんNGNG
Strutsで開発効率が落ちるとか言ってるやつはEclipseを触った事が無いんだろ。
Rubyと同じ気分で、EmacsだけでStrutsと格闘しようとしたらしんどいのは当然。

それから、スクリプト言語だからすなわち駄目という訳でもない。
Yahoo! ShoppingのコードはLispで書かれている(少なくとも2001年までは)。
0214デフォルトの名無しさんNGNG
>>213
さらにWSADならばプラグインもいらずに…  クソ高いけど
0215デフォルトの名無しさんNGNG
Rubyのスレないの? そっちでやったら?

とりあえず今までの議論をまとめると、Rubyと言いたいだけということでいい?
0216デフォルトの名無しさんNGNG
Javaなんてウンコ
0217デフォルトの名無しさんNGNG
議論パターン
http://homepage1.nifty.com/fujiwo/develop/oo/dscsnptn.html

不毛な議論をしないためにも読んで(読ませて)おきたい
0218デフォルトの名無しさんNGNG
>>216
キター
0219デフォルトの名無しさんNGNG
というほどでもない
0220デフォルトの名無しさんNGNG
> EmacsだけでStrutsと格闘しようとしたらしんどいのは当然。
Emacs で作業したって Ruby より Struts の方が効率いいよ。
0221デフォルトの名無しさんNGNG
皆さんはツール使ってるの?
action-mappingとか編集してくれるよーな奴。

こいつら次第でStrutsの使い勝手って大きく変わると思うのだけど・・・
0222デフォルトの名無しさんNGNG
>>221
WSADけっこういいよ。
ツールの使い心地はなんだかんだでエディタで決まる。
0223デフォルトの名無しさんNGNG
>>222
そんな金ないよー。俺じゃなくてプロジェクトだけど。
0224デフォルトの名無しさんNGNG
WSADがJSF対応するそうだが、これはちょっと「I B M 必 死 だ な」の予感。
JSF対応って書きたいだけだろ、と。

0225 NGNG
>>221
Improve_Struts Editor for Eclipse を使ってる。

struts-config.xml に記述した web ページの遷移をグラフィカルに表示してくれます。
でも、編集は struts-config.xml ファイルを直接編集しなければなりません。

これで十分です。
0226デフォルトの名無しさんNGNG
>>221
とりあえずstruts console
EclipseにもNetBeansにも組み込める
0227デフォルトの名無しさんNGNG
金が無いんならStruts StudioのCommunity Ed.という手もある。
SwingアプリだからUIはダサいけど機能は充分だよ。
有料版ならEclipseベースだし。
0228  NGNG
Struts でセキュアなwebアプリをつくるにはどうすればいいの?

0229デフォルトの名無しさんNGNG
>>228
Strutsじゃなければわかるの?
0230デフォルトの名無しさんNGNG
>>228
Strutsだとどういう問題があるんだ?
0231228NGNG
Strutsで、Formの入力などを暗号化したいのです。
0232デフォルトの名無しさんNGNG
>>231
それは別にStrutsの話じゃないでしょ
httpsとかの話じゃないの?
0233デフォルトの名無しさんNGNG
>>221
てか、開発者ならさそのくらいのテキストファイル構築ソフトぐらい
自分でチョイチョイッと作ってみようって気にならないもんか?
ソースコードを色分けでHTMLファイルにしちゃうツールとか
Base64エンコード&デコードプログラムぐらいみんな自作で持ってんだろ?
0234デフォルトの名無しさんNGNG
>>233
すでにいいものがあるものを作るのは、作ること自体が目的じゃない限り、あほらしい。
0235デフォルトの名無しさんNGNG
>>233
誰も知らない俺様ツールを一人で使うより、
みんなが知っているいいものがあればそっちを使いたい。
234に同意。なんであるのにわざわざ自分で作らなきゃならんのよ?
0236228NGNG
>>232
Strutsで、httpsやるにはどうすればいいの?
0237デフォルトの名無しさんNGNG
>>236
おいおい。。
サーバの機能じゃないのかそれは・・・
Apacheでも試してみなさい
0238デフォルトの名無しさんNGNG
>>233
いいの作って、公開してくれ!
0239デフォルトの名無しさんNGNG
チョイチョイとね。
0240デフォルトの名無しさんNGNG
>>233、234、235
別にいいんじゃないのどっちでも・・・
例えばC言語バリバリやってるUNIXerは「俺様関数」作って成長するわけだし
同じ議論したら、考え方もJavaやってる人と逆の人がいるかもしれない
Javaみたいに痒いところに手がとどくツールが整ってる言語やってる人は
「あるものは使う」で間違ってはいないだろうし。
ただ、そのくらい(StrutsのConfig吐くぐらい)のツールなんて・・・
ましてやaction-mappingに限定すればそんな時間かからんだろ?
GUIだってサクッと作れちゃう言語だから
適当にテキストボックスに項目追加していくようなやつでも一時間ぐらいでできるだろ?
「あほらしい」とか思ってるうちに出来ちまいそうだ。
文字列操作が混雑しそうならXML関連のAPI使えばもっと楽に出来そうな予感がするが。

0241デフォルトの名無しさんNGNG
>>237
サーバがhttpsを使えても、Strutsでは使えないよ。

Struts SSL Switching Extension を使えば別だけど。
http://www.janit.com/TechnoInf/Java/Struts1.1b3/faqs/ssl.html

>>228さんもこういうのが知りたかったのでは。
0242デフォルトの名無しさんNGNG
まあ、はっきりいってそのぐらいサクッと出来ないようじゃ
お客様からの緊急のバグクレームにも戸惑ってしまうだろう
電話受けて1時間以内にかたずけられないようじゃホントの意味での
プログラマじゃない
0243デフォルトの名無しさんNGNG
ZDNet:SSLは「ウイルスの最後の隠れ家の1つ」と指摘する独WebWasher
http://www.zdnet.co.jp/enterprise/0309/22/epn08.html
0244デフォルトの名無しさんNGNG
>>240
でっちあげるのに時間はかからないが、仕様どおり正しく動くようにするのには、結構時間がかかると思うぞ。
「プログラムを書く」ということの怖さを知らない人の意見だな。
メンテナンスを考えたことがない人か。

同じ要求を満たすなら、プログラムは短ければ短いほどいい。極限はプログラムを書かないことだ。
0245デフォルトの名無しさんNGNG
>>244
おいおい、ちょっとまてよ
ストラッツの高々コンフィグファイルごときで
そこまで考えてやるのか?
間違ってれば勝手にエラー出して止まるだろうに・・・
そういう力技のプログラミングも必要だよ
0246デフォルトの名無しさんNGNG
自分で
書く
書かない
の差は大きい
0247デフォルトの名無しさんNGNG
>>245
だから、すでにいいツールがあるのに、力技で作る必要はない。
作るのが目的じゃない限り。
0248247NGNG
というかstrutsを使う価値も同じだと思うのだが。
0249デフォルトの名無しさんNGNG
strutsで、Shift_JISを使うと、フォームへのアクセッサを使用した時に
文字化けします。

request.setCharacterEncoding("Windows-31J");
をアクションクラスで、宣言するだけでは駄目なのでしょうか?
ご存知でしたら、教えていただけませんか?
0250デフォルトの名無しさんNGNG
>>249
アクションクラスではもう遅い。フォームにセットされる前にしなくては。
Servletフィルタ使うか、RequestProcessor拡張汁。
0251デフォルトの名無しさんNGNG
>>245
個人的には「ただでさえ楽したいからStruts使ってるのに、
一々ツール作ってられるか!!」という感じだな。

そもそも、ロクにエラー処理もしないようなツールを作って
プロジェクトで使う気ですか?
そんなもん使わされる同僚が不憫だよ。
それとも、プロジェクトの参加者各自に俺様ツールを作らせるんか?
0252デフォルトの名無しさんNGNG
作らなくていいプログラムを力技で作るプログラマとは一緒に仕事したくない。
■ このスレッドは過去ログ倉庫に格納されています