- 締切済み
コントローラの役割はJSPにはやらせないですよね?
コントローラの役割を、HttpServletだけでなくjspにやらせる構成も 正しい思想の1つなのでしょうか?? 「コントローラ」は、 基本「依頼と、依頼結果をもとにした次の依頼」をする。 という風に役割を捉えていました。 例えば Aに処理依頼をしたあと、 処理が成功したから今度はBに処理依頼をして、 その結果データが 1件以上だったらCに依頼をして、 0件だったら次はDに処理を依頼する。 のような。 そして、それはHttpServletのところにやらせるものなのかと捉えています。 (※間違っているのかもですが。。) しかし、 書こうと思えば、サーブレットを撤廃して、 画面遷移は、x.jsp ⇒ y.jsp ⇒ z.jsp と、サーブレットを介さずにチェーンを作ることも可能だと思います。 (1)そういう仕組もわりと一般的なのでしょうか? (2)jspになんでもやらせすぎると、それぞれのソースが、 ◆A:プレゼンテーション層としての処理なのか?(イテレータでの描画とか) ◆B:ファンクション層の処理なのか?(例えば入力チェック処理など) ◆C:コントローラ層の処理なのか? (各結果を元に、次にどこの処理にどういうデリゲートするのか等処理) がパッと分かりにくく、カオスになりやすいと思っています。 そんな風になるくらいだったら、 コントローラはサーブレットにさせた方が良いと思うのですが、あえて全てJSPにさせるメリットもあったりするのでしょうか? ◆確認 画面遷移は、コントローラの役割だと思っていたのですが、 もしかしたらそこが間違っているのでしょうか? (WEB系の開発かどうかでも違うのかもですが。) .
- みんなの回答 (14)
- 専門家の回答
みんなの回答
- amanojaku1
- ベストアンサー率54% (265/488)
知らぬ間にManagedBeanが登場していたようですが、それも既に「ManagedBeanは次のJSFバージョンで無くなる予定だ」そうです(^_^;) JSF(JavaServer Faces)関連 https://www.sangyo-rock.com/tech/index.php?JSF%28JavaServer%20Faces%29%B4%D8%CF%A2 >JSFはMVCにおけるVとCの機能を提供する >View→JSFのタグライブラリで拡張されたJSPを用いてWebインターフェイスを記述 >Control→Managed Beanと設定ファイルによってコントローラを実装 >Model→EJB Java Management Extensions https://ja.wikipedia.org/wiki/Java_Management_Extensions >Java EE 6仕様では、managed beanはJavaクラスで実装されたBeanであるとしており、beanクラスと呼ばれる。他の何らかのJava EE 技術仕様(たとえばJavaServer Faces技術仕様)でmanaged beanであると定義されたトップレベルJavaクラス、あるいは次の条件をすべて満たすトップレベルJavaクラスであれば、それはmanaged beanである。 JavaServer Faces入門 http://dream.mods.jp/wp/tag/jsf/ >JavaEE7からはCDIがデフォルトになっており、そのためNetBeansIDE8.xでは「ManagedBeanは次のJSFバージョンで無くなる予定だ」というメッセージが出ます。
- amanojaku1
- ベストアンサー率54% (265/488)
知らぬ間にJSP(JavaServer Page)の進化形として「JSF2」(JavaServer Faces 2)が登場していたようです(^_^;) よってサーバー・サイドJavaには「Servlet(Java Servlet)、JSP(JavaServer Page)、JSF(JavaServer Faces)、Enterprise JavaBeans」の4種類有ると言うことになります。 JavaServer Faces https://ja.wikipedia.org/wiki/JavaServer_Faces
お礼
勉強してみます~。 ありがとうございます
- amanojaku1
- ベストアンサー率54% (265/488)
ちなみにJSPは下記のようにServletに変換されるらしいです(断定はできませんが、毎回と言う事ではなく、(作成・変更されてから)最初の1回だけだろうと思われますが)。 JSPの本質はServletと言うことになります。 ざっくりJava JSP/サーブレット https://qiita.com/kazukichi/items/4325b64450f93f04e316 >JSPはJavaサーバーがJSPのコードを読み込み、それをサーブレットのソースコードに変換。 >HTMLのタグなど、すべてprintlnで書きだすように変換される。 >そして、生成されたサーブレットのソースコードをコンパイルし、サーブレットを生成してそれを呼び出す。 下記の「実は、JSPとサーブレットは技術的には同じもの」とは、そう言う意味だったようです。 初めてのWebアプリケーション・サーバ http://www.atmarkit.co.jp/fjava/rensai/was05/was05_1.html >実は、JSPとサーブレットは技術的には同じもので、違いはその記述方法にあります。 つまり、JSPは わざわざデザイナーのために作られた言語仕様と言うことでしょう。
お礼
なるほどです!
- amanojaku1
- ベストアンサー率54% (265/488)
複数の人数で開発する場合に場合に、「Model、View、Controller」に分けます。 Model(Enterprise JavaBeans)はデータベースが得意な人が担当します。 View(JavaServer Page)はデザイナーが担当します。 Controller(Servlet)はデータベースが不得意な人が担当します。 個人でプログラミングする場合は、そこまで厳密に分ける必要は有りません(もちろん分けても良いでしょうが、「JavaServer Page」だけでプログラムしても良いでしょうし、「Servlet」だけでプログラムしても良いでしょう)。 JavaによるWebアプリケーション入門 http://www.wakhok.ac.jp/~tomoharu/web2004/text/index_c10.html ざっくりJava JSP/サーブレット https://qiita.com/kazukichi/items/4325b64450f93f04e316 初めてのWebアプリケーション・サーバ http://www.atmarkit.co.jp/fjava/rensai/was05/was05_1.html >サーブレットは最初のHTTPリクエストによって初期化され、それ以降はメモリ上に常駐し、マルチスレッドでサービス処理のみを実行するようになります。そして、HTTPリクエストが来なくなると消滅処理が実行され、メモリ上から消滅します。 >実は、JSPとサーブレットは技術的には同じもので、違いはその記述方法にあります。 ServletとJSP、Beanのうまい連携方法を教えてください http://www.atmarkit.co.jp/fjava/javafaq/jsp/jsp05.html
お礼
良いページ、ありがとうございます!
- 1
- 2
お礼
managed beanは気にしないことにしますー