「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/
次は「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]
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]
ではプロジェクトを実行してみましょう。
実行したら、フォームに「aaaa」と入力して、「クエリ送信」をクリックします。
すると、「mypage.jsp」に遷移して、ページに「aaaa」が表示されます。
表示されているアドレスに注目してください。「mypage.jsp」へ遷移したはずなのに、アドレスは「~/HelloBaby」というServletのURLになっています。
「forward」はサーバ側で実行される為、URLは処理を行ったServletのURLのままになります。
では、以下のようにコードを書き換えてみましょう。「forward」ではなく、「sendRedirect」を行います。
すると、以下のようになりました。
アドレスは思った通りのURLになったかもしれませんが、表示されている内容が「null」になってしまいました。
これは「forward」とは違い、「request」を引き継がずにWEBブラウザにリダイレクト要求を出している為です。「request」が無いので、「null」になってしまっています。
以上。
セッションを使ったログイン認証
セッションを使った簡単なログイン認証処理について、以下に解説しています。
セッションを使ったログイン認証処理【Java】【JSP】【Servlet】【Tomcat】
http://www.materialize.jp/art/software-services/7805/
(平成26年8月3日 アシベズヘア@ashibehair_m/facebook/note/SUZURI)
ピンバック: Java+Eclipse+Tomcatのプロジェクトを準備する | materialize.jp
ピンバック: Java+Eclipse+TomcatでServletを試す | materialize.jp
ピンバック: Java+Eclipse+TomcatでJSPを試す | materialize.jp
ピンバック: セッションを使ったログイン認証処理【Java】【JSP】【Servlet】【Tomcat】 | materialize.jp