【サーブレット&jsp入門】値の受け渡し

Java

今回の記事ではサーブレットとjspの入門者の方に向けて、値を受け渡す方法について解説します。
この記事を読むことで

  • jsp → サーブレットに値を受け渡す方法
  • サーブレット → jspに値を受け渡す方法

両方の値の渡し方がわかります。

値の受け渡しはWebアプリを開発する際に必須の技術となりますので、ぜひ習得しましょう!

このブログでは初心者の方向けにサーブレットとjspでwebアプリを開発する方法をサンプルコード付きで解説しています。ぜひチャレンジしてみてください。

今回作るWebアプリ

今回はEclipseを使ってWebアプリを作成します。
Eclipseがインストールされていない方は次の記事を参考にインストールしてみてください。

EclipseでWebプロジェクトを作成する方法に関してはこちらの記事を参考にしてみてください。

今回開発するアプリケーションは次のようなものです。

【1】jspで値の入力

まず最初にjspで苗字、名前に加えて年齢の入力を行います。

【2】入力された値の表示

送信ボタンを押すと入力された値をもとに自己紹介を画面に表示します。

処理の流れと値の受け渡し

今回作るWebアプリでは次のように値を受け渡します。

SampleServlet.javaの作成

まず最初にSampleServlet.javaを作成します。

SampleServlet.java

package uhablog;

import java.io.IOException;

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("/SampleServlet")
public class SampleServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    public SampleServlet() {
        super();
    }

    /**
     * jspから値を受け取って、結果を返却する
     */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("UTF-8"); // 文字化け防止
		String name1 = "";    // 苗字を格納する変数
		String name2 = "";    // 名前を格納する変数
		String fullName = ""; // フルネームを格納する変数
		int age = 0;          // 年齢を格納する変数
		
		// jspから送られてきた値を受け取る
		name1 = request.getParameter("lastName");            // 苗字の受け取り
		name2 = request.getParameter("firstName");           // 名前の受け取り
		age = Integer.parseInt(request.getParameter("age")); // 年齢の受け取り
		fullName = name1 + " " + name2;
		
		// 次の画面(jsp)に値を渡す
		request.setAttribute("fullName", fullName);
		request.setAttribute("age", age);
		
		// 次の画面に遷移
		request.getRequestDispatcher("/SelfIntroduction.jsp").forward(request, response);
	}
}

jspから値の受け取り

重要なのはdoGetメソッド内の処理です。
「request.getParameter」メソッドを使うことで、jspから送られてくる値を受け取ることができます。
引数として指定する文字列は送られてくるjspのフォーム内のname属性と一致させる必要があります。
詳しくは後ほど解説します。

// jspから送られてきた値を受け取る
name1 = request.getParameter("lastName");            // 苗字の受け取り
name2 = request.getParameter("firstName");           // 名前の受け取り
age = Integer.parseInt(request.getParameter("age")); // 年齢の受け取り

jspへの値の受け渡し

次に値の受け渡しは「request.setAttribute」メソッドを利用します。
第一引数として、データの名前を指定します。
第二引数は渡したいデータを指定です。

// 次の画面(jsp)に値を渡す
request.setAttribute("fullName", fullName);
request.setAttribute("age", age);



jspの作成

続いてjspを作成します。
まずは値を受け渡すInput.jspから作成します。

Input.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>値の入力画面</title>
</head>
<body>

	<form method="GET" action="SampleServlet">
		<!-- 苗字の入力 -->
		苗字:<input type="text" name="lastName"><br>
		
		<!-- 名前の入力 -->
		名前:<input type="text" name="firstName"><br>
		
		<!-- 年齢の入力 -->
		年齢:<input type="number" name="age"><br>
		
		<!-- 送信ボタン -->
		<input type="submit" value="送信"><br>
	</form>

</body>
</html>

Input.jspのformはSampleServletに値を送ります。
この画面ではそれぞれ次のような値を渡します。

  • lastName:苗字
  • firstName:名前
  • age:年齢

これらのname属性で指定している値をServlet内の「request.getParameter」メソッドの引数として指定することで特定の値を受け取ることができます。

SelfIntroduction.jsp

次にサーブレットから値を受け取って表示するSelfIntroduction.jspを作成します。

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>自己紹介</title>
</head>
<body>
	<p>こんにちは!僕の名前は<%= request.getAttribute("fullName") %>です!</p>
	<p>年齢は<%=request.getAttribute("age") %>さいです</p>
</body>
</html>

jspで値を受け取る際にはjspファイル内で次のような記述をします。

<%= request.getAttribute("取り出したいデータ名") %>

これによって引数で指定した値を取り出して、画面に表示することができます。
今回はSampleServletで次のような記述をしていました。

request.setAttribute("fullName", fullName);

そのためjsp内で引数に「fullName」を指定することでサーブレットで設定した値を受け取ることができます。

今回はサーブレットとjspの値の受け渡し方法について簡単なWebアプリを開発しながら解説しました。
まとめると次のようになります。

  • jspからサーブレットへの値の受け渡し→formを使って送る
  • サーブレットで送られてきた値を受け取る→「request.getParameter」メソッドを使う
  • サーブレットから別のjspに値を送る→「request.setAttribute」メソッドを使う
  • jspでサーブレットから送られた値を受け取る→「request.getAttribute」メソッドを使う

プログラミング初心者からWebアプリを開発できるようになってエンジニアに就職・転職するまでの学習手順をまとめた記事があります。
無料で利用できるエージェントの紹介もしているので、Javaを勉強して、エンジニアに就職・転職したい!という方はぜひ参考にしてみてください。

タイトルとURLをコピーしました