• ベストアンサー

ServletとJSP

サーバサイドの本を読んでて思ったのですが、どういうときにServletとJSPを使い分けるのですか?ServletでできることはJSPでもできると本に書いていましたが、でもどっちも大切なのですよね? 使い分け方について教えていただければ幸いです!

  • aika25
  • お礼率49% (168/340)
  • Java
  • 回答数4
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
  • sasadora
  • ベストアンサー率68% (59/86)
回答No.4

JSPかServletのどちらかしか使わないのでなく、 両方使います。(もちろん、片方だけでもいいですが) 使い分けは自由でいいんですが、 一般的には、画面の表示の部分をJSPを使い、 画面遷移などの管理をServletで行い、 実際の処理はBeanやEJBで行います。 例をあげると、1つのサーブレットで、複数のBeanやEJBを駆使して 処理を行い、行った処理を複数のJSPで各画面を表示するといった感じです。 Servletは画面レイアウトに関することは行わずに、 どのJSPを使うか、どのBeanを使って処理を行うかという管理を行うだけです。 JSPのみとか、JSP+Servletとか、JSP+Servlet+Beanとか その規模に応じて色々な組み合わせが考えられます。

aika25
質問者

お礼

例がとてもわかりやすかったです! ありがとうございました!

その他の回答 (3)

回答No.3

他の方々と同じ考えですが、 JSP = HTML+JAVAなので、 ぶっちゃけた話HTMLファイルの拡張子を.jspに変えるだけでJSPファイルとして動きます。 なぜJSPが便利かというと、 ServletでHTMLを表示させたことがあればわかるのですが、 out.println("<html>"); みたいな感じで書かなければならず非常にめんどくさいのです。 これがさらに変数などが混ざってくると out.println("<input type=\"text\" value=\""+ str +"\""); のようになり非常にわかりにくくなります。 また、JSPだと、HTMLファイルを使いまわせるので、 HTMLの部分を専用ソフトで作れば、非常に効率よく作ることができます。 ServletとJSPを使い分けるメリットはこれだけではないですが、 こういう例を出すとわかりやすいのではないかと思い書いてみました。

aika25
質問者

補足

回答ありがとうございます。 違いはよくわかりましたが、実際になにか作るときに、 ここはJSPを使おう、ここはサーブレットだ、という 判断はどうやってするのですか?

  • onchange
  • ベストアンサー率20% (5/24)
回答No.2

MVCモデルと深いつながりがあるみたいですね。 M(Model) JavaBeans、EJB V(View) JSP C(Controller) Servlet @ITの専門家の方によれば、 「Controller(画面遷移やロジックの制御)の部分と、 View(画面表示やUI)の部分」を「分離して開発することができる」ため、「独立性の保持」や「メンテナンス性の向上」につながるなどの解説がされています。

参考URL:
http://www.atmarkit.co.jp/fjava/javafaq/jsp/jsp03.html
aika25
質問者

お礼

MVCモデル、勉強にになりました! ありがとうございます!

  • bugmaru
  • ベストアンサー率38% (76/195)
回答No.1

ソフトウェア設計上の観点からServletとJSPを使い分けます。 JSPは主にWEB画面の表示、制御の用途、Servletはビジネスロジックと分離 することで、開発生産性、保守性、再利用性が高くなります。

aika25
質問者

お礼

ソフトウェア設計上の観点から使い分けるというのは、 まだ私には難しいです・・。 でもとても勉強になりました。 ありがとうございます!

関連するQ&A

  • jspからServletを呼び、元のjspページに戻るにはどうしたらよいですか?

    ・jspページにあるボタンを押すとServletに値を渡す。 ・Servletで処理をする。 ・処理の結果を元のjspページに表示する。 というプログラムを作りたいと考えています。 jspページ→Servletで処理をする、という所までは出来たのですが その後元のページに戻すというところで困っています。 jspページは複数(十数ページ)あり、Servletは1つです。 a.jsp→Servlet→a.jsp b.jsp→Servlet→b.jsp このように、どのjspページから呼ばれても、元のjspページに 戻したいのですが、どのようにすれば実現できるでしょうか?

    • ベストアンサー
    • Java
  • jsp + servlet + Beans

    なぜ、jsp + servlet + Beansというような使い方をするのでしょうか? jsp + Beansでは、表示用にjsp、複雑な処理はBeansという感じにすることの意味はわかります。 同様に、jsp + servletもわかります。 servletで行う処理と、Beansで行う処理はどこで線を引けば良いのでしょうか? よろしくお願いします。

    • ベストアンサー
    • Java
  • WTP,JSP,Servlet

    WTPを使って開発をしています。 設定まではうまくいきました。 一応環境をお知らせします。 ・WindowsVista ・WTP ・Tomcat6.0 ・Java6.0 ○実現したい事 JSP画面のフォームから送信ボタンでServletを呼ぶ。 ○困っていること JSP画面からServletが呼べない。 どうも <form method="post" action="com.Servlet"> のactionの指定が間違っているようです。 ○ソース環境 JSP : ルート/WebContent/JSP画面 Servlet : ルート/src/com/Servlet.java class : ルート/build/classes/com/Servlet.class ○エラー HTTPステータス 404 - /ルート/com.Servlet Actionの指定をいろいろと試したのですがダメでした。 Sevletの代わりにJSP画面と同じフォルダ内の他のJSPファイルを指定したらうまくいってます。 情報が足りなかったらすいません。 どうぞよろしくお願いします。

    • ベストアンサー
    • Java
  • jsp から servlet に

    パラメータをJSPからServlet に渡す所で、どうしても、null になってしまします‥。 主要な部分だけ書きます。 --jsp-- <jsp:useBean id="beanId" class="Bean" scope="request" /> <form method="POST" action="servlet"> <input type="submit" value="送信"> <input type="text" size="10" name="name"> --servlet-- import Bean; Bean bean = (Bean)request.getAttribute( "beanId" ); // ↑ここが、nullになってしまう。 --Bean-- public String getName() { return name; } public void setName( String name ) { this.name = name; } 考え方が違ってるかも知れないのですが‥。 よろしくお願いします。

    • ベストアンサー
    • Java
  • JSPとservletについて質問です。

    よろしくお願いします。 jsp→servlet→jsp の順で入力画面→getPatameterで値をゲットして一度 setAttributeでその値をforwardで次のjspにやろうと したいのですがどうしてもservletのところで java.lang.NoSuchMethodErrorが出てしまいます。 その行を見てみるとforwardの場所出ているようです。 そこで、最後のjspをservletにしてやってみると今度はエラー出ずに、表示されるのですがすべての値がnullになってしまいます。 二番目のservletの場所で試しに表示してみると表示されるので渡す時にうまく渡っていないみたいです。 因みにdoGetメソッドを使用していて、一番最後のservletのところのアドレスを見てみるとちゃんと値を 渡しているみたいです。 もうかれこれ5日間程ずっとここでつまっていてもうどうしたらいいのか分かりません。 どなたかアドバイスをお願いします。

    • ベストアンサー
    • Java
  • JSPとServletの連携

    JSPからServletを呼ぶ方法がわかりません。 例えばログインの一連の動きとしては、 一番初めにログイン画面があって、 それからユーザIDとパスワードが一致するか判断するためにservletを呼んでクラスで処理して、 一致したらメニュー画面、一致しなかったらもう一度ログイン画面に遷移するんですよね? 一番初めにJSPからservletを呼ぶにはどこでファイル名を指定したらいいのでしょうか?

    • ベストアンサー
    • Java
  • Servlet/JSPのアクセス制限

    Apache 2.2.x + Tomcat 5.5.xでサーバをたてています。 そこに、とあるサーブレット、ないしはJSPのファイルがあるとします。  www.somewhere.com/apps/servlet_or_jsp これを、通常は、同一サイト内にあるhtmlファイルのフォームから呼び出しています。  www.somewhere.com/foo.html   <form action="apps/servlet_or_jsp" ...> ここで、別サイトにあるhtmlファイルのフォームから、上記のファイルを呼び出そうとしてみます。  www.somewhereelse.com/bar.html   <form action="www.somewhere.com/apps/servlet_or_jsp" ...> すると、件のファイルを実行できてしまうのですが、これを外部サイトから実行できないようにするにはどうすれば良いのでしょうか? もしかしたら、とてつもなくくだらないことなのかもしれませんが、入門書を見たりWebで検索してみても答えが見つからなかったので、質問させてください。

  • JSP&Servletについて

    いつもお世話になっております。 JSP&Servletについての質問です。 ある画面からパラメーターを入力してServletに渡し、 その計算結果をResult.jspの画面に返すというツールを作成しているのですが、なぜか漢字が含まれていると文字化けしてしまいます。 ServletのほうでsetContentTypeメソッドを使っていないからでしょうか? でもResult.jspのほうで以下のようにしているのでいけると思うのですが、、 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <META http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <META http-equiv="Content-Style-Type" content="text/css"> <TITLE>Result</TITLE> </HEAD> <BODY> <H1>Result</H1> <% String result = (String)request.getAttribute("result"); if (result != null){ %> <%= result %> <% } %> </BODY> </HTML> たとえば結果として 2002年と返したい場合 2002?と返ってきてしまいます。 お願いします。

    • ベストアンサー
    • Java
  • JSPからServletへの値の引渡し

    JSPからServletへパラメータを渡そうとしています。 JSP同士のやり取りのようにrequest.getParameter でやろうとするとNullPointerExceptionが出てしまいます。 ひょっとして私って何も分かってないのかも…。 JSPで、 <input type=hidden name="nickname" value="pinky"> として渡すべき値を設定しました。 そして、PostでServletを呼び出します。 呼び出されたServlet側で、この"nickname"を受け取りたいのです。 必要な情報があれば仰って下さい。補足致します。 よろしくお願いします。

    • ベストアンサー
    • Java
  • ServletからJSPに遷移させた後もServletに制御を戻したいんですが

    Java初心者です。宜しくお願いします。 現在、ServletからJSPに対してIncludeまたはForward した後にServlet側にて処理を継続させる方法が ないか調べています。 Forwardは×かなというところ まではわかったのですがIncludeで行った場合 Servlet → JSPに遷移させた後に呼び出し元の Servletに制御を戻す事は可能でしょうか。 また、一般的な方法がありましたらご教授お願いします。 宜しくお願いします。

    • ベストアンサー
    • Java

専門家に質問してみよう