Strutsの使いどころ

| コメント(0) | トラックバック(0)

先日より、Spring + Struts + Hibernateの3つ巴作戦を敢行中なのですが、このうちの Struts君 にイマイチ疑惑が。

何かといいますと、ごく普通に表示のみしたいページ(でもDBアクセスしたい)の場合、JSPだけを使うことになるのでしょうが、DBアクセスした結果を表示したい場合にはどうするんでしょ?
JSPにビジネスロジックに相当する部分は、(たとえDB呼び出しであっても)記述したくないでしょ。
その場合、表示をするだけの部分にもかかわらず、xx.doっていう拡張子になってカッコ悪い。。。

あと、ディレクトリインデックスはどうするんでしょ?

    /index.do

とかになるのかなぁ・・・?
カッコ悪すぎる!!!!
ヤダヤダ、絶対にやだ!!!
#みなさん、どうしてます?


これらの問題点回避、および SpringFramework を捨てたくない僕としましては、生Servletを利用することに決めました。
Struts君には、何でもかんでもやってもらうのではなくて、なんらかのデータを送信したいときだけ登場していただくようにします。
#これって、極めて普通の考え方だ。。。

SpringFrameworkは、WebApplicationContextUtils経由でWebApplicationContextを呼び出して、Bean取得、という手法を採用。
ビジネスロジックBeanを呼び出して、処理してもらって、結果受け取ってJSPへ転送。
極一般的なServletの流れができました。


    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        Business business = (Business) WebApplicationContextUtils
                .getWebApplicationContext(getServletContext()).getBean(
                        "business");
        business.hogehoge();
        request.getRequestDispatcher("/WEB-INF/jsp/xxx.jsp").forward(request,
                response);
    }


生Servletの利点として、GET、POSTの処理の切り分けがスッキリできることでしょうか。
SpringFramework上で、プレーンな形でのServletが扱えないのがちょっと残念。
でもWebApplicationContextUtils経由でのSpring呼び出しがほぼ同等であろうことがようやくわかりました。
#理想としては、Servletに対してパラメータを入れてくれた状態でdoGetとかdoPostを呼び出してくれればなぁ。。。<こちらのフレームワーク、そのうち作るかも。

あとは、そのServletに対して自由にurl-patternを設定すれば、そのURLでアクセスできるようになるという感じですな。
この辺も、拡張子を制限されるStrutsなどと比べて自由に設定できていい感じ。


ディレクトリインデックス問題は、例えば、IndexServletを作って、url-patternを "/index.html" で設定。
こうすることで、コンテナがIndexServletを起動してくれます。
この辺も、制御が移らないと(Struts用のurl-patternでアクセスされないと)何もできないStrutsと比べて、コンテナ側が把握してくれるので良い♪


この境地に行き着くまでに、2週間くらいかかりましたが、その分Strutsの内部動作であったりとか、Springの内部動作であったりとかを勉強できたので、良しとしましょう。

トラックバック(0)

トラックバックURL: http://happy-camper.st/mt/mt-tb.cgi/229

コメントする

2012年1月

1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        

月別 アーカイブ

CLOCK

あわせて読みたい

あわせて読みたい

ブログ通信簿

Yahoo!天気情報

AdSense

フィードメーター

RSS feed meter for http://ueshin.happy-camper.st/

トラックフィード

Creative Commons License
このブログはクリエイティブ・コモンズでライセンスされています。
Powered by Movable Type 4.2-ja