Java+Eclipse+TomcatでJSP+Servletのページ遷移


Tomcat / Jason Brittain

「Eclipse」+「Tomcat」という組み合わせで、JSPとServletを用いたページ遷移を試してみます。

JSPとServletの作成方法

「Eclipse」で「JSP」と「Servlet」を作成する方法と、プロジェクトを実行する方法は、以下に解説しています。ここではソースだけの解説となります。

Java+Eclipse+TomcatでServletを試す
http://www.materialize.jp/art/software-services/7359/

Java+Eclipse+TomcatでJSPを試す
http://www.materialize.jp/art/software-services/7464/

ページ遷移

「JSP(1)」→「Servlet」→「JSP(2)」とデータを受け渡しながらページ遷移することにします。

まず「index.jsp」を作成します。

内容はフォームの送信だけなので、「JSP」である必要はありませんが、「HelloBaby」サーブレットに向けてフォームをPOST送信しています。

[html firstline=”8″ highlight=”10,11,12,13,14,15,16,17,18,19,20,21″ title=”index.jsp”]
<body>

<header>
<h1>Test Tomcat</h1>
<p>this is index page !!!</p>
</header>

<main>
<p>please input your message…</p>
<form method="post" action="./HelloBaby">
<input type="text" name="input_text">
<input type="submit">
</form>
</main>

</body>
[/html]

ちなみに、「Eclipse」のJSPテンプレートは「HTML4」になっているので、ここでは「HTML5」に書き換えています。「HTML5」の記述方法が気になる人は以下を参照してください。

HTML5で考えるレイアウト、まずは基本のワンカラムレイアウトを「header」「main」「footer」で!
http://www.materialize.jp/art/html5/4194/

7512_1

次は「Servlet」を作成します。

「doPost」に以下のコードを記述します。「index.jsp」から送信されたフォームの内容を受け取り、その内容を処理して、今度はその値を付与して「mypage.jsp」にリダイレクト(ページ遷移)します。

[java firstline=”38″ highlight=”39,40,41,42,43,44,45,46,47,48,49,50″ title=”HelloBaby.java”]
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding( "UTF-8" );
String str = request.getParameter( "input_text" );
if ( null == str ) {
str = "";
}
str = "Hello, Baby !!!<br>you say, " + str;
request.setAttribute( "msg", str );

// リダイレクト.
ServletContext context = this.getServletContext();
RequestDispatcher dispatcher = context.getRequestDispatcher( "/mypage.jsp" );
dispatcher.forward( request, response );
}
[/java]

7512_5

forward(リダイレクト)を行うとき、Servletに送られた「request」と「response」をそのまま引数に渡しています。これは転送先の「mypage.jsp」でも利用できます。

さて、その「mypage.jsp」は、以下のように実装します。

「request」から値を取得して、それを表示します。

[html firstline=”8″ highlight=”10,11,12,13,14,15,16,17,18,19,20,21,22,23″ title=”mypage.jsp”]
<body>

<header>
<h1>Test Tomcat</h1>
<p>this is my page…</p>
</header>

<%
request.setCharacterEncoding( "UTF-8" );
String msg = (String)request.getAttribute( "msg" );
%>

<main>
<h1>送信されたメッセージ:</h1>
<p><%= msg %></p>
</main>

</body>
[/html]

7512_6

ではプロジェクトを実行してみましょう。

実行したら、フォームに「aaaa」と入力して、「クエリ送信」をクリックします。

7512_3

すると、「mypage.jsp」に遷移して、ページに「aaaa」が表示されます。

7512_7

表示されているアドレスに注目してください。「mypage.jsp」へ遷移したはずなのに、アドレスは「~/HelloBaby」というServletのURLになっています。

「forward」はサーバ側で実行される為、URLは処理を行ったServletのURLのままになります。

では、以下のようにコードを書き換えてみましょう。「forward」ではなく、「sendRedirect」を行います。

7512_2

すると、以下のようになりました。

7512_4

アドレスは思った通りのURLになったかもしれませんが、表示されている内容が「null」になってしまいました。

これは「forward」とは違い、「request」を引き継がずにWEBブラウザにリダイレクト要求を出している為です。「request」が無いので、「null」になってしまっています。

以上。

セッションを使ったログイン認証

セッションを使った簡単なログイン認証処理について、以下に解説しています。

セッションを使ったログイン認証処理【Java】【JSP】【Servlet】【Tomcat】
http://www.materialize.jp/art/software-services/7805/

(平成26年8月3日 アシベズヘア@ashibehair_mfacebooknoteSUZURI

unnamed

Java+Eclipse+TomcatでJSP+Servletのページ遷移」への4件のフィードバック

  1. ピンバック: Java+Eclipse+Tomcatのプロジェクトを準備する | materialize.jp

  2. ピンバック: Java+Eclipse+TomcatでServletを試す | materialize.jp

  3. ピンバック: Java+Eclipse+TomcatでJSPを試す | materialize.jp

  4. ピンバック: セッションを使ったログイン認証処理【Java】【JSP】【Servlet】【Tomcat】 | materialize.jp

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です