Java Webメモ–JavaBeanの使用JavaBeanの範囲とJavaコードのインタラクション

8806 ワード

JavaBeanは、プラットフォーム間で再利用可能なソフトウェアコンポーネントです.2つに分けられます.
ユーザーインタフェースのあるJavaBean
ユーザーインタフェースのないJavaBeanは、主にトランザクションの処理を担当し、JSPは通常このJavaBeanにアクセスします.
1、JavaBeanを使うメリット:
HTMLコードとJavaプログラムを分離し、メンテナンスを容易にします.
JSP開発者のJavaプログラミング能力に対する要求を下げる.
JavaBeanコンポーネントの再利用性を活用し、Webサイトの開発効率を向上させます.JSPは動的Webページの生成に重点を置き,トランザクションはJavaBeanによって完了する.
2、JavaBeanの特徴:
JavaBeanは共通のクラスです
JavaBeanにはパラメータなしのコンストラクション関数があります
JavaBeanはsetXXXメソッドでプロパティを設定し、getXXXメソッドでプロパティを取得します.
次はJavaBeanクラスです.
public class User {

    private String username;
    private String password;
    public User(){}
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
}

3、JSPがJavaBeanにアクセスする手順:
①JavaBeanクラスのインポート
<%@page import%>コマンドでインポート:
<%@ page import="com.itzhai.bean.User" %>

②JavaBeanオブジェクトの宣言
ラベルを使用してJavaBeanオブジェクトを宣言します.
<jsp:useBean id="user" class="com.itzhai.bean.User" scope="session" />

③JavaBeanプロパティへのアクセス
ラベルを使用して、プロパティをWebページに出力します.
<jsp:getProperty name="user" property="username" />

ラベルを使用して、属性に値を割り当てます.
<jsp:setProperty name="user" property="username" value="arthinking" />

要求されたパラメータを使用して、属性に値を割り当てます.
URLで渡されたusernameパラメータを使用して属性に値を割り当てる場合は、次のようにします.
<jsp:setProperty name="user" property="username" param="username" />

4、UserBeanの使用とJavaコードの直接使用の連絡:
次のUseBeanの使用はJavaコードクリップの使用と同じです.
<%@ page import="com.itzhai.bean.User" %>
<jsp:useBean id="user" class="com.itzhai.bean.User" scope="session" />
<jsp:getProperty name="user" property="username" />
<%
    User user = new User();
    out.println(user.getUsername());
%>

ただし、UseBeanを使用する場合、オブジェクトの作成とメソッドの使用は、Tomcatで生成されたサーブレットコードのパッケージを通じており、より便利に使用できます.
このように使うことができます
<jsp:useBean id="user" class="com.itzhai.bean.User" scope="session" />
<%
    out.println(user.getUsername());
%>

これにより、オブジェクトの作成はjsp:userBeanラベルで作成され、Javaコードで作成されたオブジェクトにアクセスします.
5、JavaBeanの範囲:
タブのscopeプロパティは、JavaBeanオブジェクトの範囲を決定します.scopeオプションの値は次のとおりです.
page(default):
お客様は、JSPページへのアクセスを要求するたびに、JavaBeanオブジェクトを作成します.JavaBeanオブジェクトの有効範囲は、お客様がアクセスを要求する現在のJSPページです.JavaBeanオブジェクトは、次の2つの場合にライフサイクルを終了します.
タブでリクエストを別のファイルに転送します.②顧客がアクセスを要求したJSPページの実行が完了し、クライアントに応答を送信する.
request:
requestの範囲内でJavaBeanオブジェクトの有効範囲は次のとおりです.
①顧客がアクセスを要求する現在のJSPページ②現在のJSPページと同じ要求のページを共有し、<%@include%>コマンドおよびタグに含まれる他のJSPファイルを含む.③JavaBeanオブジェクトは、同じクライアント要求を共有するすべてのJSPページの実行が完了し、クライアントに応答を返すと、ライフサイクルを終了します.
JavaBeanオブジェクトは、属性としてHttpServeretRequestオブジェクトに保存されています.属性名はJavaBeanのidで、属性値はJavaBeanオブジェクトなので、同じrequest範囲内でJavaBeanオブジェクトを次のように取得することもできます.
<jsp:useBean id="user" class="com.itzhai.bean.User" scope="request" />
User user=(User)request.getAttribute("user");

session:
JavaBeanオブジェクトが作成されると、Sessionのライフサイクル全体にわたって存在し、同じセッション内のすべてのJSPファイルがこのJavaBeanオブジェクトを共有します.
<jsp:useBean id="user" class="com.itzhai.bean.User" scope="session" />

JavaBeanのidを使用してJavaBeanオブジェクトに直接アクセスするほか、以下の方法でオブジェクトにアクセスできます.
User user=(User)session.getAttribute("user");

application:
Webアプリケーションのライフサイクル全体で、WebアプリケーションのJSPファイルは同じJavaBeanオブジェクトを共有できます.
<jsp:useBean id="user" class="com.itzhai.bean.User" scope="application" />

JavaBeanのidを使用してJavaBeanオブジェクトに直接アクセスするほか、以下の方法でオブジェクトにアクセスできます.
User user=(User)application.getAttribute("user");

どの範囲を使用しても、Tomcatによって生成されたサーブレットでは、PageContextの次の設定方法が呼び出されます.
public abstract class PageContext
extends JspContext
setAttribute
public abstract void setAttribute(String name,
                                  Object value,
                                  int scope)
Register the name and value specified with appropriate scope semantics. If the value passed in is null, this has the same effect as calling removeAttribute( name, scope ).

セッション範囲を使用する場合、Tomcatが生成する関連処理ソースコードは次のとおりです.
synchronized (session) {
        user = (com.itzhai.bean.User) _jspx_page_context.getAttribute("user", PageContext.SESSION_SCOPE);
        if (user == null){
          user = new com.itzhai.bean.User();
          _jspx_page_context.setAttribute("user", user, PageContext.SESSION_SCOPE);
        }
      }