第2章 アプリケーションの作成と配置
アプリケーションの作成と配置
homepage
# **アプリケーションの作成と配置** *** ## **1.アプリケーションの構成にサーブレットの役割** ブラウザからの**リクエスト**は、WebサーバとWebコンテナを介して、**サーブレット**に渡されます。**サーブレット**は**リクエスト**を解析し、**レスポンス**を生成します。**レスポンス**はWebコンテナとWebサーバを介して、ブラウザに送信されます。ブラウザは**レスポンス**を受信し、画面に表示します。 <!--graph2-1.png --> <a href="https://i.loli.net/2020/02/19/Wnpb5XHm1hJGdsN.png" target="_blank"> <img src="https://i.loli.net/2020/02/19/Wnpb5XHm1hJGdsN.png" width="60%"></a> ここではServletアプリケーションの配置方法を見てみましょう。簡単なサンプルとして、HTMLファイルが一つと画像ファイルが一つ、Servletのプログラムをコンパイルした結果できたclassファイルが一つのアプリケーションを考えて見ます。 全体の配置方法は下記のようになります。 <!--graph2-2.png --> <a href="https://i.loli.net/2019/06/25/5d11ed332ce9888181.png" target="_blank"> <img src="https://i.loli.net/2019/06/25/5d11ed332ce9888181.png" width="40%"></a> <br> ## **2.HelloWorldを作成** **STEP 1: ServletDoc の動的 Web プロジェクを作成** <br> **(1)** Eclipseメニューバーの「ファイル」→「新規」で、右側のメニューの「プロジェクト」を選択します。 <!--graph2-3.png --> <a href="https://i.loli.net/2019/10/30/PqHAKIcTQ8rEzZU.png" target="_blank"> <img src="https://i.loli.net/2019/10/30/PqHAKIcTQ8rEzZU.png" width="40%"></a> <br> **(2)**「動的Webプロジェクト」を選択して、「次へ」をクリックします。 <!--graph2-4.png --> <a href="https://i.loli.net/2019/10/31/5chrCnsYKqUAPNu.png" target="_blank"> <img src="https://i.loli.net/2019/10/31/5chrCnsYKqUAPNu.png" width="40%"></a> <br> **(3)**プロジェクト名「ServletDoc」を入力して、「次へ」をクリックします。 <!--graph2-5.png --> <a href="https://i.loli.net/2019/10/31/rRyNUxC4t52cJY9.png" target="_blank"> <img src="https://i.loli.net/2019/10/31/rRyNUxC4t52cJY9.png" width="40%"></a> <br> **(4)**そのまま、「次へ」をクリックします。 <!--graph2-6.png --> <a href="https://i.loli.net/2019/10/31/yY6Eo4aeTZjQApD.png" target="_blank"> <img src="https://i.loli.net/2019/10/31/yY6Eo4aeTZjQApD.png" width="40%"></a> **(5)**コンテキスト・ルート「ServletDoc」のままで(でも、変更できる)、web.xmlの生成をチェックし、「完了」をクリックします。 <!--graph2-7.png --> <a href="https://i.loli.net/2020/03/29/Ai8s6FU31bKhNHI.png" target="_blank"><img src="https://i.loli.net/2020/03/29/Ai8s6FU31bKhNHI.png" width="40%"></a> <br> 動的WebプロジェクトServletDocの構成は下記のようです。 <a href="https://i.loli.net/2020/03/29/fNHUh2oJXlnVMba.png" target="_blank"><img src="https://i.loli.net/2020/03/29/fNHUh2oJXlnVMba.png" width="40%"></a> <br> **src:** プロジェクトの、クラス、Bean、およびサーブレットの Java™ ソース・コードが含まれます。 **WebContent:** HTML、JSP、グラフィック・ファイルなどを含めた全 Web リソースの必須ロケーションです。 **META-INF:** このディレクトリーには、MANIFEST.MF ファイルが含まれます。 このファイルは、同じエンタープライズ・アプリケーション・プロジェクト内のその他のプロジェクト内にある従属 JAR ファイルのクラスパスをマップするために使用されます。 **WEB-INF:** このディレクトリーには、Web アプリケーション用にサポートされている Web リソース (web.xml ファイル、classes と lib ディレクトリーなど) が含まれます。 /lib ご使用の Web アプリケーションが参照する、サポート Jar ファイル。このディレクトリー内に配置された .jar ファイルの中のクラスはどれも、ご使用の Web アプリケーションに使用することができます。 web.xml 標準 Web アプリケーション・デプロイメント記述子 (web.xml ファイル)。 **STEP 2: classファイルの配置** <br> 左側の [ パッケージ・エクスプローラー ] で [src] を選択して右クリックし、 [ 新規 ] - [ パッケージ] helloを作成します。helloの下にHelloWorld.javaを作成します。 ``` package hello; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet("/HelloWorld") public class HelloWorld extends HttpServlet{ public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException{ response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<html>"); out.println("<head>"); out.println("<title>Hello World!</title>"); out.println("</head>"); out.println("<body>"); out.println("<h1>Hello World!</h1>"); out.println("</body>"); out.println("</html>"); } } ``` **サーブレットのURL** サーブレットを実行するには、サーブレットに対応付けたURLをブラウザで開きます。たとえば、HelloWorld.javaのサーブレットは、つぎのようなURLを開くことによって実行します。 http://localhost:8080/ServletDoc/HelloWorld ***WebServletアノテーション*** HelloWorld.javaでは、javax.servlet.annotation.WebServletアノテーションを使ってサーブレットのURLを指定しています。 ``` @WebServlet("URLパターン") ``` **サーバーで実行結果:** <!--graph2-8.png --> <a href="https://i.loli.net/2020/03/29/ePmL4bYxuoZQvJN.png" target="_blank"><img src="https://i.loli.net/2020/03/29/ePmL4bYxuoZQvJN.png" width="40%"></a> <br> **STEP 3: web.xmlを使う** web.xmlはWebアプリケーションの動作設定を行うファイルです。サーブレットのURLや初期化パラメータを記述できるほか、フィルターの各種設定を行うこともできます。 ``` <servlet> <servlet-name>サーブレット名</servlet-name> <servlet-class>クラスファイル名</servlet-class> </servlet> <servlet-mapping> <servlet-name>サーブレット名</servlet-name> <url-pattern>呼び出す時につけるURLパス名</url-pattern> </servlet-mapping> ``` 今回は対象となるクラスファイルHelloWorld.classでしたので、これにhelloworldというサーブレット名を付ける場合は下記のように記述します。 以上の結果、今回のweb.xmlは下記のようになります。 ``` <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1"> <display-name>ServletDoc</display-name> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> <servlet> <servlet-name>helloworld</servlet-name> <servlet-class>hello.HelloWorld</servlet-class> </servlet> <servlet-mapping> <servlet-name>helloworld</servlet-name> <url-pattern>/HelloWorld</url-pattern> </servlet-mapping> </web-app> ``` ★注意:<br> ①クラス名の前にパッケージ名を付いてください。(例:```<servlet-class```>hello.HelloWorld```</servlet-class>```)<br> ②実行URLはhttp://localhost:8080/プロジェクト名/Helloworld ③サーブレット2.5前では、web.xmlにサーブレットのURLを記述するのが必須でしたが、3.0からWebServletアノテーションでも設定することができるようになりました。
content
戻る