「Java/Tomcat/サーブレットからJSPに遷移するサンプル」の編集履歴(バックアップ)一覧はこちら

Java/Tomcat/サーブレットからJSPに遷移するサンプル」(2013/03/24 (日) 00:44:12) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

* ■サーブレットからJSPに遷移(処理を移す)するサンプル &ref(GotoJsp.java) #highlight(java) {{ import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class GotoJspServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String type = req.getParameter("type"); if ("jsp".equals(type)) { // 1.JSPに遷移 // 遷移先のURLを指定して、HttpServletRequestからリクエストディスパッチャーを取得します。 // URLはwebアプリケーションのルートから、もしくは相対パスを指定出来ます。 RequestDispatcher disp = req.getRequestDispatcher("/jsp/first.jsp"); // forwardメソッドでJSPに遷移します。 disp.forward(req, resp); } else if ("jsp2".equals(type)) { // 2.JSPに遷移その2 // HttpServletContextからもリクエストディスパッチャーを取得出来ます。こちらは相対パスは使えません。 RequestDispatcher disp = getServletContext().getRequestDispatcher("/jsp/first.jsp"); disp.forward(req, resp); } else if ("img".equals(type)) { // 3.画像ファイル等静的ファイルに遷移 // 遷移先が画像ファイルだと、ブラウザに画像が表示されます。 // 画像の他に、csvファイルや圧縮ファイル、htmlファイルでも構いません。 RequestDispatcher disp = req.getRequestDispatcher("/img/1179_64.png"); disp.forward(req, resp); } else if ("srv".equals(type)) { // 4.サーブレットからサーブレットへの遷移 // その気になればサーブレットから サーブレットへの無限ループも作れます。 RequestDispatcher disp = req.getRequestDispatcher("/myservlet"); disp.forward(req, resp); } else if ("srv2".equals(type)) { // 5.サーブレットからサーブレットへの遷移その2 // サーブレットへの遷移は、HttpServletContext.getNamedDispatcherも利用可能です。 // web.xmlで指定したサーブレットの名前で遷移先を取得します。 RequestDispatcher disp = getServletContext().getNamedDispatcher("myServlet"); disp.forward(req, resp); } else { // 6.sendRedirect // sendRedirectはブラウザに遷移先のURLを返して、ブラウザの機能で遷移式のURLにアクセスを促します。 // sendRedirectでは、webアプリケーションのルートからURLを指定することは出来ません。 // サーバのルート、相対URL、httpから始まる完全なURLを指定します。 resp.sendRedirect("/Tomcat7Test/jsp/first.jsp"); } } } }} - ごちゃごちゃ色々書いてありますが、バラメータ「type」によって色んな画面遷移(処理の移動)をしているだけのサンプルです。 - サーブレットからJSPに遷移するには、まずリクエストディスパッチャーを取得して、forwardメソッドで遷移します。 - 「forward」での遷移は、ブラウザには一切通知されず、webアプリケーション内部で完結します。 - なので、ブラウザのアドレスバーは変化しません。 - 遷移と言うと「画面遷移」のような移り変わりをイメージしますが、「forward」の場合でも使ってしまいます。 - 「sendRedirect」だと、ブラウザに遷移先のURLを通知して、ブラウザの機能で遷移先にアクセスしてもらうので、アドレスバーもバッチリ変わります。 * ■web.xml #highlight(){{ <!-- サーブレットの宣言 --> <servlet> <servlet-name>gotojsp</servlet-name> <servlet-class>GotoJspServlet</servlet-class> </servlet> <!-- サーブレットとurlのマッピング --> <servlet-mapping> <servlet-name>gotojsp</servlet-name> <url-pattern>/gotojsp</url-pattern> </servlet-mapping> }} - GotoJspServlet.javaを実行するには、web.xmlに上記のサーブレットの宣言と、urlのマッピングを追加してください。 * ■&ref(first.jsp) #highlight(){{ <%@ page language="java" contentType="text/html; charset=UTF8" pageEncoding="UTF-8" %> ハローJSP!! }} - なんの工夫もなく「ハローJSP!!」を表示するだけのJSPです。 - 日本語を使っているので、文字化けしないように「page」ディレクティブで文字コードを指定しています。 * ■ファイルの配置 /Tomcat7Test ┣ WEB-INF ┃┣ src ┃┃┣ GotoServlet.java ┃┃┗ MyServlet.java ┃┗ web.xml ┣ img ┃┗1179_64.png ┗ jsp  ┗ first.jsp 今回のサンプルに必要なファイルはこんな感じ。 * ■ブラウザで動作確認 **1.JSPに遷移 「http://localhost/Tomcat7Test/gotojsp?type=jsp」にアクセス - 遷移先のURLを指定して、HttpServletRequestからリクエストディスパッチャーを取得します。 - URLはwebアプリケーションのルートから、もしくは相対パスを指定出来ます。 #highlight(java) {{ RequestDispatcher disp = req.getRequestDispatcher("/jsp/first.jsp");}} - forwardメソッドでJSPに遷移します。 #highlight(java) {{ disp.forward(req, resp);}} ** 2.JSPに遷移その2 「http://localhost/Tomcat7Test/gotojsp?type=jsp2」にアクセス - HttpServletContextからもリクエストディスパッチャーを取得出来ます。こちらは相対パスは使えません。 #highlight(java) {{ RequestDispatcher disp = getServletContext().getRequestDispatcher("/jsp/first.jsp"); disp.forward(req, resp);}} ** 3.画像ファイル等静的ファイルに遷移 「http://localhost/Tomcat7Test/gotojsp?type=img」にアクセス - 遷移先が画像ファイルだと、ブラウザに画像が表示されます。 - 画像の他に、csvファイルや圧縮ファイル、htmlファイルでも構いません。 #highlight(java) {{ RequestDispatcher disp = req.getRequestDispatcher("/img/1179_64.png"); disp.forward(req, resp);}} ** 4.サーブレットからサーブレットへの遷移 「http://localhost/Tomcat7Test/gotojsp?type=srv」にアクセス - URLにサーブレットへのURLを指定するだけです。 - その気になればサーブレットから サーブレットへの無限ループも作れます。 #highlight(java) {{ RequestDispatcher disp = req.getRequestDispatcher("/myservlet"); disp.forward(req, resp);}} ** 5.サーブレットからサーブレットへの遷移その2 「http://localhost/Tomcat7Test/gotojsp?type=srv2」にアクセス - サーブレットへの遷移は、HttpServletContext.getNamedDispatcherも利用可能です。 - web.xmlで指定したサーブレットの名前で遷移先を取得します。 #highlight(java) {{ RequestDispatcher disp = getServletContext().getNamedDispatcher("myServlet"); disp.forward(req, resp);}} ** 6.sendRedirect 「http://localhost/Tomcat7Test/gotojsp」にアクセス - sendRedirectはブラウザに遷移先のURLを返して、ブラウザの機能で遷移式のURLにアクセスを促します。 - sendRedirectでは、webアプリケーションのルートからURLを指定することは出来ません。 - サーバのルート、相対URL、httpから始まる完全なURLを指定します。 #highlight(java) {{ resp.sendRedirect("/Tomcat7Test/jsp/first.jsp");}} #inc(Java/Tomcat/サンプル) * コメント #pcomment(reply)
* ■サーブレットからJSPに遷移(処理を移す)するサンプル &ref(GotoJsp.java) #highlight(java) {{ import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class GotoJspServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String type = req.getParameter("type"); if ("jsp".equals(type)) { // 1.JSPに遷移 // 遷移先のURLを指定して、HttpServletRequestからリクエストディスパッチャーを取得します。 // URLはwebアプリケーションのルートから、もしくは相対パスを指定出来ます。 RequestDispatcher disp = req.getRequestDispatcher("/jsp/first.jsp"); // forwardメソッドでJSPに遷移します。 disp.forward(req, resp); } else if ("jsp2".equals(type)) { // 2.JSPに遷移その2 // HttpServletContextからもリクエストディスパッチャーを取得出来ます。こちらは相対パスは使えません。 RequestDispatcher disp = getServletContext().getRequestDispatcher("/jsp/first.jsp"); disp.forward(req, resp); } else if ("img".equals(type)) { // 3.画像ファイル等静的ファイルに遷移 // 遷移先が画像ファイルだと、ブラウザに画像が表示されます。 // 画像の他に、csvファイルや圧縮ファイル、htmlファイルでも構いません。 RequestDispatcher disp = req.getRequestDispatcher("/img/1179_64.png"); disp.forward(req, resp); } else if ("srv".equals(type)) { // 4.サーブレットからサーブレットへの遷移 // その気になればサーブレットから サーブレットへの無限ループも作れます。 RequestDispatcher disp = req.getRequestDispatcher("/myservlet"); disp.forward(req, resp); } else if ("srv2".equals(type)) { // 5.サーブレットからサーブレットへの遷移その2 // サーブレットへの遷移は、HttpServletContext.getNamedDispatcherも利用可能です。 // web.xmlで指定したサーブレットの名前で遷移先を取得します。 RequestDispatcher disp = getServletContext().getNamedDispatcher("myServlet"); disp.forward(req, resp); } else { // 6.sendRedirect // sendRedirectはブラウザに遷移先のURLを返して、ブラウザの機能で遷移式のURLにアクセスを促します。 // sendRedirectでは、webアプリケーションのルートからURLを指定することは出来ません。 // サーバのルート、相対URL、httpから始まる完全なURLを指定します。 resp.sendRedirect("/Tomcat7Test/jsp/first.jsp"); } } } }} - ごちゃごちゃ色々書いてありますが、バラメータ「type」によって色んな画面遷移(処理の移動)をしているだけのサンプルです。 - サーブレットからJSPに遷移するには、まずリクエストディスパッチャーを取得して、forwardメソッドで遷移します。 - 「forward」での遷移は、ブラウザには一切通知されず、webアプリケーション内部で完結します。 - なので、ブラウザのアドレスバーは変化しません。 - 遷移と言うと「画面遷移」のような移り変わりをイメージしますが、「forward」の場合でも使ってしまいます。 - 「sendRedirect」だと、ブラウザに遷移先のURLを通知して、ブラウザの機能で遷移先にアクセスしてもらうので、アドレスバーもバッチリ変わります。 * ■web.xml #highlight(){{ <!-- サーブレットの宣言 --> <servlet> <servlet-name>gotojsp</servlet-name> <servlet-class>GotoJspServlet</servlet-class> </servlet> <!-- サーブレットとurlのマッピング --> <servlet-mapping> <servlet-name>gotojsp</servlet-name> <url-pattern>/gotojsp</url-pattern> </servlet-mapping> }} - GotoJspServlet.javaを実行するには、web.xmlに上記のサーブレットの宣言と、urlのマッピングを追加してください。 * ■&ref(first.jsp) #highlight(){{ <%@ page language="java" contentType="text/html; charset=UTF8" pageEncoding="UTF-8" %> ハローJSP!! }} - なんの工夫もなく「ハローJSP!!」を表示するだけのJSPです。 - 日本語を使っているので、文字化けしないように「page」ディレクティブで文字コードを指定しています。 * ■ファイルの配置 /Tomcat7Test ┣ WEB-INF ┃┣ src ┃┃┣ GotoServlet.java ┃┃┗ MyServlet.java ┃┗ web.xml ┣ img ┃┗1179_64.png ┗ jsp  ┗ first.jsp 今回のサンプルに必要なファイルはこんな感じ。 * ■ブラウザで動作確認 **1.JSPに遷移 「http://localhost/Tomcat7Test/gotojsp?type=jsp」にアクセス - 遷移先のURLを指定して、HttpServletRequestからリクエストディスパッチャーを取得します。 - URLはwebアプリケーションのルートから、もしくは相対パスを指定出来ます。 #highlight(java) {{ RequestDispatcher disp = req.getRequestDispatcher("/jsp/first.jsp");}} - forwardメソッドでJSPに遷移します。 #highlight(java) {{ disp.forward(req, resp);}} ** 2.JSPに遷移その2 「http://localhost/Tomcat7Test/gotojsp?type=jsp2」にアクセス - HttpServletContextからもリクエストディスパッチャーを取得出来ます。こちらは相対パスは使えません。 #highlight(java) {{ RequestDispatcher disp = getServletContext().getRequestDispatcher("/jsp/first.jsp"); disp.forward(req, resp);}} ** 3.画像ファイル等静的ファイルに遷移 「http://localhost/Tomcat7Test/gotojsp?type=img」にアクセス - 遷移先が画像ファイルだと、ブラウザに画像が表示されます。 - 画像の他に、csvファイルや圧縮ファイル、htmlファイルでも構いません。 #highlight(java) {{ RequestDispatcher disp = req.getRequestDispatcher("/img/1179_64.png"); disp.forward(req, resp);}} ** 4.サーブレットからサーブレットへの遷移 「http://localhost/Tomcat7Test/gotojsp?type=srv」にアクセス - URLにサーブレットへのURLを指定するだけです。 - その気になればサーブレットから サーブレットへの無限ループも作れます。 #highlight(java) {{ RequestDispatcher disp = req.getRequestDispatcher("/myservlet"); disp.forward(req, resp);}} ** 5.サーブレットからサーブレットへの遷移その2 「http://localhost/Tomcat7Test/gotojsp?type=srv2」にアクセス - サーブレットへの遷移は、HttpServletContext.getNamedDispatcherも利用可能です。 - web.xmlで指定したサーブレットの名前で遷移先を取得します。 #highlight(java) {{ RequestDispatcher disp = getServletContext().getNamedDispatcher("myServlet"); disp.forward(req, resp);}} ** 6.sendRedirect 「http://localhost/Tomcat7Test/gotojsp」にアクセス - sendRedirectはブラウザに遷移先のURLを返して、ブラウザの機能で遷移式のURLにアクセスを促します。 - sendRedirectでは、webアプリケーションのルートからURLを指定することは出来ません。 - サーバのルート、相対URL、httpから始まる完全なURLを指定します。 #highlight(java) {{ resp.sendRedirect("/Tomcat7Test/jsp/first.jsp");}} * 他のTomcatサンプル #inc(Java/Tomcat/サンプル) * コメント #pcomment(reply)

表示オプション

横に並べて表示:
変化行の前後のみ表示: