Java

JavaBeansとは? 仕様や作り方をわかりやすく解決します

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を入力すると次の画面が表示されるので、入力項目を埋めて「送信」ボタンを押します

 

先ほど入力したデータが結果として表示されます

 

以上でこの記事は終了となります。ありがとうございました。

-Java

Copyright© タカログ , 2022 All Rights Reserved Powered by AFFINGER5.