- PR -

Strutsを使わないMVC方法を教えてください。

投稿者投稿内容
ひろ
会議室デビュー日: 2005/03/08
投稿数: 13
お住まい・勤務地: 京都
投稿日時: 2005-04-26 00:39
現在「Strutsを使わずにMVCを実現する」と言う難題に手間取っています。

どうもweb.xmlでマッピングなどを定義するらしいのですが・・・
検索してみてもStruts関連のページばっかりで困っています。

「http://localhost:8080/Test/servlet/index.do」
「http://localhost:8080/Test/servlet/bbs.do」
上記の2つのファイルでも「ActionController.java」に遷移するのは、
下記のweb.xmlで良いのでしょうか?
<web-app>
・・・(略)・・・
<servlet>
<servlet-name>Action</servlet-name>
<servlet-class>ActionContoroller</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Actionr</servlet-name>
<url-pattern>/*.do</url-pattern>
</servlet-mapping>
</web-app>

web.xmlがこれで良いのかも分からない状況です。

どなたかサンプルのあるページが有れば紹介して欲しいです。

Strutsを使わずにMVCを実現するというのは、自作でStrutsと同じ機能を実現すると言うことらしいのですが、全く分かりません(涙

初心者で書き込み方も失礼な部分があるかもしれませんが易しく教えて貰えると嬉しいです。
よろしくお願いします。

[ メッセージ編集済み 編集者: ひろ 編集日時 2005-04-26 00:47 ]
るぱん
ぬし
会議室デビュー日: 2003/08/01
投稿数: 1370
投稿日時: 2005-04-26 00:48
るぱんです。

なぜ【現在「Strutsを使わずにMVCを実現する」と言う難題】に直面したのか
教えていただけますでしょうか?
ひろ
会議室デビュー日: 2005/03/08
投稿数: 13
お住まい・勤務地: 京都
投稿日時: 2005-04-26 00:55
=====================================================================
るぱんです。

なぜ【現在「Strutsを使わずにMVCを実現する」と言う難題】に直面したのか
教えていただけますでしょうか?
=====================================================================

初めからStrutsを使わないことによってControllerの概要を理解させたいと言う事です。
今ある技術を使うのは簡単だけれども、過去を知っているからこそStrutsの便利さが分かると言われました。
そんなこんなで「Strutsを使わずに実現する」という方針が出されました。
ibara
常連さん
会議室デビュー日: 2002/11/15
投稿数: 26
投稿日時: 2005-04-26 01:43
こんにちは。
新人研修の課題とかでしょうか。

気持ちは分からなくはないですが、そこでweb.xmlは飛躍しすぎというかなんというか・・・。
1つ手前に戻って、「Strutsを使わずに、MVCでもない」実装をするとどういうものになるかは分かりますか?その不便さに直面して初めてありがたみが分かると思います。

[ メッセージ編集済み 編集者: ibara 編集日時 2005-04-26 01:44 ]
aa
ぬし
会議室デビュー日: 2004/01/08
投稿数: 299
投稿日時: 2005-04-26 06:17
引用:
現在「Strutsを使わずにMVCを実現する」と言う難題に
--
Strutsを使わずにMVCを実現するというのは、自作でStrutsと同じ機能を実現すると言うことらしいのですが、全く分かりません(涙


あなたの理解が間違っていると思います。
質問文でStruts,Strutsと連呼してますけど、Strutsなどのフレームワークを使わずして、自分で独自でStrutsと同程度の機能を持つフレームワーク、もしくはアプリを1から作ってみろっていうだけでしょ?
引用:
どうもweb.xmlでマッピングなどを定義するらしいのですが・・・
検索してみてもStruts関連のページばっかりで困っています。


web.xmlの書き方を調べようと思っていれば、Struts関連のページばかりなんて出てくる事はありえません。
あなたが、何を調べなければいけないのか、理解できていない証拠です。

Strutsはいったん忘れた方がいいでしょう。
もしその課題に挑戦したいのであれば、まずは自分で1から、servletを使った
Webアプリを作ってみることをお薦めします。
まずはそれからです。

そして、とりあえず動くものができたとして、仕様に変更点がごそごそでてきたとします。
こんどはそのメンテナンスとかを頻繁に行ってください。

それまでStrutsは忘れてください。本当に忘れてください。
代わりにServletを調べてください。Servletで自分オリジナルなMVCを実装してみてください。
1つのWebアプリで5つのページがあったとして、5つのServletをつくるのではなく、それを1つのServletで受けるにはどうしたらよいのでしょうか?

(それよりまずあなたには、1つの処理を受けて1つのページを返すだけのservletを作ってみるところから始まると思います。)


表面的にStrutsにどのような機能があるのかを調べ、あなたがその機能を独自で実
装してみるとかはその後です。

それまでStrutsは忘れてください。本当に忘れてください。
(Actionも.doも忘れてください。いきなりstruts-config.xmlも用意しないように。)

コード:
<servlet> 
<servlet-name>Action</servlet-name> 
<servlet-class>ActionContoroller</servlet-class> 
</servlet> 
<servlet-mapping> 
<servlet-name>Actionr</servlet-name> 
<url-pattern>/*.do</url-pattern> 
</servlet-mapping> 


servlet-nameが一致してませんけど、サーブレットは2つ以上登録しているのでしょうか?
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2005-04-26 08:18
MVC=Strutsと勘違いしていないでしょうか?
まず、Strutsとは何をやってくれるモノなのかという事を考えてみて下さい。
Strutsモドキを作りたいのであれば、Strutsのソースが公開されているので
調べてみるといいと思いますよ。そんなに難しいソースではありません。

概ね、
1・コントローラでリクエストのパスを解析する
2・リクエスト解析結果から実行対象のアクションの
  インスタンスを管理した上で委譲する
3・リクエストの状態に応じた便利なビューを提供する
と、こんな感じです。

StrutsはMVCのV(View)とC(Controller)を担当しています。
Vが3になり、Cが1・2になります。

こういう言い方もよくないですが、特に特別なアーキテクチャを提供しているわけではなく、
あくまでもServletベースのフレームワークです。
ですので、すべて基本部分はServletの技術でまかなわれています。
ロス
常連さん
会議室デビュー日: 2005/03/25
投稿数: 26
投稿日時: 2005-04-26 09:39
まず、質問に対する回答を。。。
おそらく、皆さまがおっしゃるように、Servletを最初から勉強するのが
近道だと思いますが、、、

1.web.xml
==============================================================================
「http://localhost:8080/Test/servlet/index.do」
「http://localhost:8080/Test/servlet/bbs.do」

上記のアドレスへというのは、ちょっとすぐにはURLパターンが浮かびませんね^^;
コンテキストパスが「Test」だとして、「/servlet/*.do」でしょうか。。。
それよりは、
(1)「http://localhost:8080/Test/bbs.do」
(2)「http://localhost:8080/Test/servlet/bbs」
このどちらかにしたほうが指定が簡単だと思います。

(1)の場合。(Strutsのデフォルトと同じurl-patternです)
<web-app>
・・・(略)・・・
<servlet>
<servlet-name>Action</servlet-name>
<servlet-class>ActionContoroller</servlet-class> <-- クラスパスですが、パッケージ名はなしですか?
</servlet>
<servlet-mapping>
<servlet-name>Action</servlet-name> <-- r を削除しました。
<url-pattern>/*.do</url-pattern>
</servlet-mapping>
</web-app>

(2)の場合。(Servletの例でよく出てくるタイプです。)
<web-app>
・・・(略)・・・
<servlet>
<servlet-name>Action</servlet-name>
<servlet-class>ActionContoroller</servlet-class> <-- 同上
</servlet>
<servlet-mapping>
<servlet-name>Action</servlet-name> <-- r を削除しました。
<url-pattern>/servlet/*</url-pattern>
</servlet-mapping>
</web-app>
==============================================================================

2.サンプルページ
==============================================================================
Servletのサンプルページを。。(もっといいところもあると思いますが、、、)

・MVCに分かれていない、基本的なサーブレットを理解されていない場合。
 --> http://www.hellohiro.com/servlet.htm

ここから(上記サイトの内容を実践してみてから)、かつのりさんのアドバイスのように、
@リクエスト解析
Aアクション管理
Bビューへのディスパッチ (Viewの分離)
Cアクションからビジネスロジックの分離 (Modelの分離)
を順に行ってみてはいかがでしょう?

ちなみに、Servletは「Controller」だと考えれば(Cにすれば)、VはJSP(など)、
Mはビジネスロジックという点ではStrusと同じですよ^^
==============================================================================



*****************************************************************
初めからStrutsを使わないことによってControllerの概要を理解させたいと言う事です。
*****************************************************************

これは、よくある課題ですね。
つまり、Servletで何を行っているかを理解するために、”いろいろ調べて”なんとか
形にしてもらおうという思惑だとおもいます。
「本当に」Struts相当のものは求められていないと思いますよ(当たり前ですが^^;)。
基本を知らないと、なにかしら不具合が起こったときに困りますし、質問するにしても、
的を得ない質問になったりしますし。。。
るぱん
ぬし
会議室デビュー日: 2003/08/01
投稿数: 1370
投稿日時: 2005-04-26 09:51
るぱんです。

整理するもの
1.MVCのMとは?
2.MVCのVとは?
3.MVCのCとは?
4.webアプリとは?
5.サーブレットとは?
6.それぞれの実装方法は?

こんなところかなぁ?

<以下余談>

この辺の答えを出題者が用意できているなら
こういう課題はありですよね。

こういう質問して出題者がすぐにわかりやすい答えを出せないのであれば
こういう出題はおかしい・・・とおもうけどなぁ・・・?
まぁ、いいか?

スキルアップ/キャリアアップ(JOB@IT)