JavaBeans
JavaBeansとは?
サーブレット、JSPから呼び出し可能なJavaクラス
JavaBeansという特定のライブラリを指すのではなく、JSPから参照するクラスをJavaBeansと呼ぶ
MVCモデルで言うModelに当たり、サーバー側で動作する。
以下のルールを持たせる事でJSPからインスタンスを呼び出し可能になる。
・慣例的にクラス名にBeanを付ける
・Serializableインターフェイスを実装する
・引数無しコンストラクタを定義する
・プロパティ(getter/setter)を持たせる
JSPでの使用方法
JavaBeansルールをクラスに実装する事でインスタンス化されたJavaBeansクラスをJSPで参照する事は可能だが、
以下のJavaBeansタグを用いる事で、JSP内での簡潔なクラス操作が可能
<jsp:useBean>
<jsp:setProperty>
<jsp:getProperty>
JSPからJavaBeansクラスをインスタンス化
<jsp:useBean
id="オブジェクト名(インスタンス名)"
class="JavaBeansクラスの完全修飾名"
scope="スコープ" />
JSPからJavaBeans#Setプロパティを呼び出し
<jsp:setProperty
name="オブジェクト名(インスタンス名)"
property="プロパティ名(JavaBeansルール参照)"
value="Setする値" />
JSPからJavaBeans#Setプロパティを呼び出し
<jsp:getProperty
name="オブジェクト名(インスタンス名)"
property="プロパティ名(JavaBeansルール参照)" /><br/>
JSPからのJavaBeansクラスインスタンス利用
インスタンスを呼び出し
※データ受け渡し用クラス
package myPack;
import java.io.Serializable;
public class MyBean implements Serializable {
private String _mem;
public void setMem(String prm)
{
this._mem = prm;
}
public String getMem()
{
return this._mem;
}
}
※サーバ側(サーブレット)
package myPack;
import myPack.MyBean;
@WebServlet("/myPack/myServlet")
public class myServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse res) throws ~ {
MyBean m = new MyBean();
インスタンス変数へ、GET/POSTパラメータを格納
m.setMem( req.getParameter("order1") );
パラメータ設定(パラメータ名:prm)
req.setAttribute("prm", m);
※インスタンスをJSPへ連携
フォワード
RequestDispatcher dispatcher = req.getRequestDispatcher("~.jsp");
dispatcher.forward(req, res);
}
}
※クライアント側(転送先パス.jsp)
<%@ page pageEncoding="UTF-8" contentType="text/html;charset=UTF-8" %>
サーバで設定したクラスの使用を定義
<jsp:useBean id="prm" class="myPack.MyBean" scope="request" />
「JavaBeans」参照
<!DOCTYPE html>
<html>
<body>
リクエストパラメータを取得
${param['変数名']}
サーバから渡された値を取得(フォワード時のみ)
${requestScope['prm'].mem}
JSPからゲッターメソッドを呼び出す場合
・ getを省略
・ get以下のメソッド名の先頭文字を小文字に
</body>
</html>
JavaBeansタグ利用
<%@ page pageEncoding="UTF-8" contentType="text/html;charset=UTF-8" %>
<%@ page import="myPack.*" %>
JavaBeansクラスをインスタンス化
<jsp:useBean id="b" class="myPack.MyBean" scope="request" />
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>商品一覧</title>
</head>
<body>
JavaBeansクラスのSetプロパティを呼び出し
<jsp:setProperty name="b" property="menu" value="test" />
JavaBeansクラスのGetプロパティを呼び出し
<jsp:getProperty name="b" property="menu" /><br/>
→test
</body>
</html>