• 締切済み

サーブレットは広義・狭義があるのか?

「サーブレット」という言葉は、 文脈によって以下のそれぞれを指しますでしょうか? wikiなど「定義」としては一応あるわけですが、 その場の空気で、 (1)HttpServletを継承したコントローラ層部分 (2)サーバにletさせている部分(モデルとコントローラの両方) (3)サーバにletさせている部分(view(jsp)からモデルに処理をletさせているという場合に、jspがプレゼンテーション層以外も含んでしまい、サーバにletさせている部分=コントローラ+モデル+ビュー(すべて)) の何を指しているか、事実上変わるということであってますでしょうか? wikiなど「定義」としてはあるわけですが。。

みんなの回答

回答No.6

知らぬ間に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バージョンで無くなる予定だ」というメッセージが出ます。

全文を見る
すると、全ての回答が全文表示されます。
回答No.5

>ちなみに、サーバー・サイドJavaには「Servlet(Java Servlet)、JSP(JavaServer Page)、Enterprise JavaBeans」の3種類が有ります。 知らぬ間に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

全文を見る
すると、全ての回答が全文表示されます。
回答No.4

ちなみに、サーバー・サイドJavaには「Servlet(Java Servlet)、JSP(JavaServer Page)、Enterprise JavaBeans」の3種類が有ります。

全文を見る
すると、全ての回答が全文表示されます。
回答No.3

>回答No.2 amanojaku1 >JSPは わざわざデザイナーのために作られた言語仕様と言うことでしょう。 複数の人数で開発する場合に場合に、「Model、View、Controller」に分けます。 Enterprise JavaBeans(Model)はデータベースが得意な人が担当します。 JavaServer Page(View)はデザイナーが担当します。 Servlet(Controller)はデータベースが不得意な人が担当します。 個人でプログラミングする場合は、そこまで厳密に分ける必要は有りません(もちろん分けても良いでしょうが、「JavaServer Page」だけでプログラミングしても良いでしょうし、「Servlet」だけでプログラミングしても良いでしょう)。

全文を見る
すると、全ての回答が全文表示されます。
回答No.2

>回答No.1 amanojaku1 下記の「実は、JSPとサーブレットは技術的には同じもの」とは、JSPはServletに変換されるので、JSPの本質はServletだと言うことを言ってるのだと思われます。 「違いはその記述方法にあります」とはJSPは わざわざデザイナーのために作られた言語仕様と言うことでしょう。 初めてのWebアプリケーション・サーバ http://www.atmarkit.co.jp/fjava/rensai/was05/was05_1.html >実は、JSPとサーブレットは技術的には同じもので、違いはその記述方法にあります。

全文を見る
すると、全ての回答が全文表示されます。
回答No.1

基本的にHttpServletを継承したプログラムをServletと言います。 プログラム内に「View」を含んでいてもHttpServletを継承したプログラムをServletと言います。 HttpServletはプログラムがServletだと明示している証(あかし)だと思って下さい。 ただしJSPは下記のようにServletに変換されるらしいです(断定はできませんが、毎回と言う事ではなく、(作成・変更されてから)最初の1回だけだろうと思われますが)。 JSPの本質はServletと言うことになりますが、JSPをServletなどと言ったりすると、逆に話が混乱するので、そんな事は言ったりしないと思いますが。 ざっくりJava JSP/サーブレット https://qiita.com/kazukichi/items/4325b64450f93f04e316 >JSPはJavaサーバーがJSPのコードを読み込み、それをサーブレットのソースコードに変換。 >HTMLのタグなど、すべてprintlnで書きだすように変換される。 >そして、生成されたサーブレットのソースコードをコンパイルし、サーブレットを生成してそれを呼び出す。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • HttpServletとjsp負荷はどっちが高い?

    ◆全く同じ処理をさせたとき、サーバーの負荷は変わるのでしょうか? Aの処理のあと、Bの処理をして、その後Cの処理をさせるとき、 (1)HttpServletを継承したクラスから呼ぶか? (2)jspで呼ぶか? でサーバ負荷は変わるのでしょうか? ファッション層の処理を、 案1◆コントローラ層部分が呼んで、結果を踏まえて処理制御して、、  という形にするか? ファッション層の処理を、 案2◆View層部分に呼ばせるか? で、パフォーマンス観点で、どう判断すれば良いかわからず困っています。 ※もし良ければ「構成」の観点でも、何か「こうあるべき」的なものがあると、それもご教授頂けますと幸いです。 .

  • コントローラの役割は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系の開発かどうかでも違うのかもですが。) .

  • 静的ページからのサーブレット起動について

    今、JSPとサーブレットの勉強を行っております。 サーブレット側でデータを取得して JSP側で表示を行いたいと思っているのですが フォームアクション等を行わずに、JSP⇒サーブレット⇒JSPと 実施する事は可能でしょうか? URLアクセス ⇒ JSPからサーブレットの処理を呼び出し ⇒ サーブレットから クラスを利用してデータを取得 ⇒ JSPへデータを渡して表示   というように、URLアクセスのみで一連の処理を行いたいです。 サーブレットからJSPにセッション経由でデータを渡して表示する事や JSPからクラスを利用する方法では成功していますが できるだけMVCモデルに準拠した方法で行いたく思っており かつ、コントローラとしてサーブレットを使ってみたくて このような事に挑戦しております。 可能かどうかだけでもわかると非常に有難いですので ご存知の方、どうかよろしくお願い致します。

    • ベストアンサー
    • Java
  • JSP/サーブレットについて

    JSP/サーブレットのMVCモデル風にJSP、サーブレットと、Beanを作成したばあい、サーバーに各プログラム?をどう配置し、プログラム内でのお互いの具体な指定の仕方がぴんときません。 指定の仕方とはたとえばサーブレットからJSPを呼ぶときgetServletContext().getRequestDispatcher("xxxxx/aaaaaa.jsp").forward(......); とコーディングするとおもいますが、この場合のxxxxxと実際にサーバーに配置する場合の関連です。 サーブレットは...../WEB-INF/classesに置くとか、Beanは...../WEB-INF/classes/パッケージ名に配置するのはわかります。JSPは通常どこにおくのでしょうか?たとえばC:\Tomcat\webapps\examplesなのか C:\Tomcat\webapps\examples\jspなのか? その場合プログラムないではどう指定するのが一般的なのでしょうか? 文章がわかりにくくてすいません。 開発環境はWindowsXP,Apache,Tomcatの場合です。

  • サーブレットを動かすためには?

    Tomcat5.0を使ってサーブレットを動かそうとしましたが、動きません。 JSPは問題なく動きます。 サーブレットのコンパイルは問題なくできているようです。また、ほかで動いていたものをためしに使ってみたのですが、動きません。 何か、設定をしなければならないのでしょうか。 現在は、サーブレットを動かそうとすると、 HTTPステータス 500 - type 例外レポート メッセージ 説明 The server encountered an internal error () that prevented it from fulfilling this request. 例外 javax.servlet.ServletException: パス /yoko/servlet/test にサーブレットインスタンスを割り当てられません org.apache.catalina.servlets.InvokerServlet.serveRequest(InvokerServlet.java:388) org.apache.catalina.servlets.InvokerServlet.doGet(InvokerServlet.java:133) javax.servlet.http.HttpServlet.service(HttpServlet.java:689) javax.servlet.http.HttpServlet.service(HttpServlet.java:802) 原因 java.lang.IllegalAccessException: Class org.apache.catalina.core.StandardWrapper can not access a member of class test with modifiers "" sun.reflect.Reflection.ensureMemberAccess(Reflection.java:57) java.lang.Class.newInstance0(Class.java:302) java.lang.Class.newInstance(Class.java:261) org.apache.catalina.servlets.InvokerServlet.serveRequest(InvokerServlet.java:369) org.apache.catalina.servlets.InvokerServlet.doGet(InvokerServlet.java:133) javax.servlet.http.HttpServlet.service(HttpServlet.java:689) javax.servlet.http.HttpServlet.service(HttpServlet.java:802) このように表示されています。 何が原因なのか、対処策など、わかることがありましたらお教えください。 よろしくお願いいたします。

    • ベストアンサー
    • Java
  • サーブレットの動作

    以下のようなサーブレットのプログラムがあります。 本サーブレットを実行すると、simpleDB.jspに飛ぶようになっています。 疑問点は以下です。 ・GetやPostを使って送られてくるデータがないのに、なぜ  本プログラムが動くのか分かりません(根本的に分かって  ないんですが)。 ・getServletContext().setAttribute("list", employeeList)で  listに設定をしてますが、listは飛ぶ先のsimpleDB.jspで定義  されています。なぜこのサーブレットで定義されていないものを、  設定することが可能なのでしょうか? 以上、ご回答頂けると幸いです。 ---------- import java.io.IOException; import文以下略 public class EmployeeServlet extends javax.servlet.http.HttpServlet { /** * 初期化メソッド * 社員一覧をapplicationスコープにセットします */ public void init() { EmployeeDAO dao = new EmployeeDAO();     //EmployeeDAOクラスは他で定義済み ArrayList<Employee> employeeList = dao.findAll(); getServletContext().setAttribute("list", employeeList); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } /** * リクエストを処理するメソッド * simpleDB.jspに移動し、社員一覧を表示します */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String nextPage = "/view/simpleDB.jsp"; ServletContext context = getServletContext(); RequestDispatcher rd = context.getRequestDispatcher(nextPage); rd.forward(request, response); } }

    • ベストアンサー
    • Java
  • JSPとサーブレットでのJARの使い方

    現在,jspやサーブレットにダウンロードしてきたjarの中のクラスを使おうとするとエラーをはいてしまいます。自分的にはエラーの原因はなんかしらの設定かソースがおかしいのではないかと考えております。なので自分がやった設定の手順とソースを説明させていただき、そこでおかしいと思った点を指摘していただきたいと思い投稿させてもらいました。 開発環境はEclipseとTomcatを合したものなのですが、 まずダウンロードしてきたJARをデスクトップに置きました。 次にEclipseでjspのプロジェクトを作成し、 プロジェクトの設定で、外部JARの追加を選択しデスクトップのJARを追加しました。 次にエラーが出るまでのソースを説明させていただくと、 まずJSPの方は <%@ page language="java" contentType="text/html; charset=windows-31j" pageEncoding="windows-31j"%> <%@ page import="java.util.Date" %> <%@ page import="com.lowagie.text.Document" %>//これがダウンロードしてきたjarのクラス この様に書いたところEclipseのエディタ上ではエラーは出ないのですが、 デバックすると、 説明 The server encountered an internal error () that prevented it from fulfilling this request. 例外 org.apache.jasper.JasperException: JSPのクラスをコンパイルできません: というエラーが出てしまいます。なお4行目をコメントアウトすると正常に動作します。 次にサーブレットの方は import java.io.*; import com.lowagie.text.Document;//こっちはこのimport文ではエラーが出ない import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class selfreport_Pdf extends javax.servlet.http.HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { Document doc = new Document();//ここでエラーがでる こちらもEclipseのエディタ上ではエラーは出ないのですが、デバックして jspからサーブレットにsubmit(?)をすると 説明 The server encountered an internal error () that prevented it from fulfilling this request. 例外 javax.servlet.ServletException: サーブレットの実行により例外を投げました 原因 java.lang.NoClassDefFoundError: com/lowagie/text/Document selfinfo.selfreport_Pdf.doGet(selfreport_Pdf.java:29) javax.servlet.http.HttpServlet.service(HttpServlet.java:690) javax.servlet.http.HttpServlet.service(HttpServlet.java:803) この様なエラーが出ます。なおこちらはDcoment doc = enw Docment() の処をコメントアウトすると、正常に動作します。またこのプログラムを 最も基本的なjavaアプリケーションに落とし込んで実行すると、正常に動作します。 また自分はjsp初心者なので、何か書き損じている点があるかもしれません。 もしそのような点があった場合はお手数ですが書いていただけると、後で補足させていただきます。 お返事おまちしております。

    • ベストアンサー
    • Java
  • サーブレットの動かし方が分からないです・・・

    フォームにユーザ名・パスワードを入れてログイン出来たら次のページに進んでメニューを表示させる、というようなWebアプリを作っています。 そのユーザ名・パスワードで先生か生徒か判断し、生徒なら授業を表示する画面、先生なら授業の表示とテストの点の追加やら修正が出来る管理者メニューに行けるといった感じにしたいです。 ログインを判断するサーブレットは出来てコンパイルも通ったのですが、web.xmlやらserver.xmlの編集がイマイチ分かりません… 環境はwindows2000、Tomcat4.1、Apache1.3で連携は出来てます。 ディレクトリは C:WebApp------login        |---add        |---update        |---WEB-INF って感じです。(自分の力ではこの書き方が限界…) loginの中にtop.htmlやらstudent.jsp、loginFailure.jsp、admin.jspをぶち込んでます。 (生徒と管理者の画面を同じとこに入れるのもマズイですかね…?) 長々とすいませんが初心者なので説明足りない部分あるかと思いますがよろしくお願いしますm(__)m

    • ベストアンサー
    • Java
  • サーブレットについて

    こんにちは。 サーブレットに質問したいことがあります。 以下のサンプルソースで、 response.setContentType("text/html;charset=Shift_JIS"); の部分があるのですが、このようにすると日本語が文字化けしてしまいます。 ちなみにresponse.setContentType("text/html); とすると、日本語も文字化けせずに正しく表示されます。 ここで質問なのですが、 サーブレットの場合はJSPと違い、charsetを指定しなくてもよろしいのでしょうか? 何か分かることがありましたらご教授御願い致します。 ---------☆サンプルソース(HelloWorldExample.java)☆---------------- import java.io.*; import java.text.*; import java.util.*; import javax.servlet.*; import javax.servlet.http.*; public class HelloWorldExample extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { response.setContentType("text/html;charset=Shift_JIS"); PrintWriter out = response.getWriter(); out.println("<html>"); out.println("<head>"); out.println("<title>ハローワールド</title>"); out.println("</head>"); out.println("<body>"); out.println("<h1>HelloWorld ハローワールド</h1>"); out.println("</body>"); out.println("</html>"); out.close(); } } ---------------------------------------------------

    • ベストアンサー
    • Java
  • 文字化け MySQL Java JSP サーブレット

    こんにちは。よろしくお願いします。 jdk 1.5 MySQL 5 tomcat 5 を使用しています。 MVCモデルの練習に Model(javaBeans) View(jsp) Controller(サーブレット) に分けて作成しています。 MySQLから取ってきたデータの文字化けに困っています。 全角日本語1文字が半角ハテナ1文字に変わっています。 数字(int)は文字化けせずにちゃんと表示されています。 DBから取ってきた以外の文字に文字化けはありません。 DBのテーブルの中の時点では文字化けはありません。 MySQLの環境を確認すると以下のようです。 | character_set_client | sjis | character_set_connection | sjis | character_set_database | sjis | character_set_filesystem | binary | character_set_results | sjis | character_set_server | sjis | character_set_system | utf8 何かご存知の方アドバイスよろしくお願いします。 また他に必要な情報や確認すべきことがありましたらご指摘よろしくお願いします。

    • ベストアンサー
    • MySQL