JavaBeansはスコープ(リクエスト・セッション・アプリケーション)を通して、インスタンス情報を保持・受渡しするためのクラスです。
1.JavaBeansとは
JavaBeansはスコープ(リクエスト・セッション・アプリケーション)を通して、インスタンス情報を保存・受渡しするためのクラスです。
簡単に言うと、ブラウザ上に入力された値など、サーバ側で持っておきたいデータを格納するためのファイルです。
データベースと勘違いする方もいるかもしれませんが、全くの別物です。JavaBeansクラスは一時的な格納しか行わないため、アプリケーションが再起動された場合は保持していたデータがなくなります。データベースはsqlを使って、故意に値を消さない限りはデータは保持され続けます。
イメージ図:データの格納時
イメージ図:データの取出し時
2.JavaBeansクラスの作り方
JavaBeansクラスを作成するにあたっていくつかのルールがあります。
➀java.io.Serializableを実装する
➁フィールドを定義するときはカプセル化を行う。(=privateで定義する)
➂引数のないコンストラクタを定義する。
➃フィールドごとにgetter/setterメソッドを定義する
<例>
package sampleseria;
import java.io.Serializable;
public class sampleSeria implements Serializable { ←ルール➀:java.io.Serializableを実装する
private String name; ←ルール➁:フィールドを定義するときはカプセル化を行う。(=privateで定義する)
private int age;
public sampleSeria(){} ←ルール➂:引数のないコンストラクタを定義する。
public void setName(String name) { ←ルール➃:フィールドごとにsetterメソッドを定義する
this.name = name;
}
public void setAge(int age) {
this.age = age;
}
public String getName() { ←ルール➃:フィールドごとにgetterメソッドを定義する
return name;
}
public int getAge() {
return age;
}
}
3.JavaBeansを利用してみよう
mainController.java(jspと値の受渡しを行い、JavaBeansにも値を格納する処理を持つサーブレット)
import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import sample.SampleBeans;
/**
* Servlet implementation class mainController
*/
@WebServlet("/mainController")
public class mainController extends HttpServlet {
private static final long serialVersionUID = 1L;
public mainController() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//enter.jspにフォワード
RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/enter.jsp");
dispatcher.forward(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
int age = Integer.parseInt(request.getParameter("age"));
//➁JavaBeansクラスのインスタンスを作成
SampleBeans samplebeans = new SampleBeans();
//➂作成したJavaBeansクラスのインスタンスにjspから渡された値を保存する
samplebeans.setName(request.getParameter("name"));
samplebeans.setAge(age);
samplebeans.setDob(request.getParameter("dob"));
samplebeans.setSex(request.getParameter("sex"));
samplebeans.setNationarity(request.getParameter("nationarity"));
//➃JavaBenasのインスタンスをリクエストスコープに格納する
request.setAttribute("samplebeans", samplebeans);
//➄display.jspにフォワード
RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/display.jsp");
dispatcher.forward(request, response);
}
}
SampleBeans.java(データを一時保存するためのJavaBeansクラス)
package sample;
import java.io.Serializable;
public class SampleBeans implements Serializable {
private String name;
private int age;
private String sex;
private String dob;
private String nationarity;
public void SampleBeans() {}
public void setName(String name) {
this.name = name;
}
public void setAge(int age) {
this.age = age;
}
public void setSex(String sex) {
this.sex = sex;
}
public void setDob(String dob) {
this.dob = dob;
}
public void setNationarity(String nationarity) {
this.nationarity = nationarity;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public String getSex() {
return sex;
}
public String getDob() {
return dob;
}
public String getNationarity() {
return nationarity;
}
}
enter.jsp(ブラウザに入力項目を表示するためのjspファイル)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<!--➀画面上に値を入力させ、サーブレット(mainController)に渡す -->
<form action="/SampleBeans/mainController" method="post">
氏名:<input type="text" name="name"/><br />
年齢:<input type="text" name="age"/><br />
生年月日:<input type="text" name="dob"/><br />
性別:<input type="text" name="sex"/><br />
国籍:<input type="text" name="nationarity"/><br />
<input type="submit" value="送信" /><br><br>
</form>
</body>
</html>
display.jsp(ブラウザに保存データを表示するためのjspファイル)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="sample.SampleBeans" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>表示</title>
<style>
ul, ol {
color: #1e366a;
border-top: solid #1e366a 1px;/*上のボーダー*/
border-bottom: solid #1e366a 1px;/*下のボーダー*/
padding: 0.5em 0 0.5em 1.5em;
}
ul li, ol li {
line-height: 1.5;
padding: 0.5em 0;
}
</style>
</head>
<body>
<!--➅リクエストスコープのインスタンスを取得し、元の型であるSampleBeans型にキャスト -->
<% SampleBeans samplebeans = (SampleBeans)request.getAttribute("samplebeans"); %>
<!--➆JavaBeansクラスから先ほど格納した値を取出してブラウザに表示 -->
<ol>
<li>氏名 :<%= samplebeans.getName() %></li>
<li>年齢 :<%= samplebeans.getAge() %></li>
<li>生年月日:<%= samplebeans.getDob() %></li>
<li>性別 :<%= samplebeans.getSex() %></li>
<li>国籍 :<%= samplebeans.getNationarity()%></li>
</ol>
</body>
</html>
上記コードは、次の動作を持つプログラムです。
- ブラウザに入力テキストボックスを表示し、「送信」ボタンが押されたら、入力させたパラメータをmainControllerに渡す※➀
- mainControlellerクラスで、まず最初にSampleBeansクラスのインスタンスを作成する※➁
- ➁で作成したインスタンスに、jspから渡されたパラメータを格納する※➂
- パラメータを格納したインスタンス(samplebeans)をリクエストスコープに格納する※➃
- display.jspにフォワードする※➄
- display.jspでリクエストスコープから、先ほど格納したインスタンスを取出す※➅
- SampleBeans(JavaBeansクラス)に格納したパラメータを取出して、ブラウザに表示する※➆
実行結果
アプリケーションを起動してURLを入力すると次の画面が表示されるので、入力項目を埋めて「送信」ボタンを押します
先ほど入力したデータが結果として表示されます
以上でこの記事は終了となります。ありがとうございました。