jsp與javaBean的使用

來源:互聯網
上載者:User

標籤:

JavaBean是一種可重複使用,且跨平台的軟體組件。JavaBean可分為兩種:一種是有使用者介面(UI)的javaBean;還有一種是沒有使用者介面,主要負責處理事務(如資料運算,操縱資料庫)的javaBean。Jsp通常訪問的是後一種javaBean.

 

Jsp 和javaBean搭配使用的優點:

1.使得html與java程式分離,這樣便於維護代碼。如果把所有的程式碼都寫到jsp網頁中,會使用代碼繁雜,難以維護。

2.可以降低開發jsp網頁人員對java編程能力的要求。

3.jsp側重於產生動態網頁,交易處理由javaBean來完成,這樣可以充分利用javaBean組件的可重用性特點,提高開發網站的效率。

 

一個標準的javaBean有以下幾個特性:

1.javaBean是一個公用的類

2.javaBean有一個不帶參數的構造方法

3.javaBean通過setXXX方法設定屬性,通過getXXX方法擷取屬性。

package com.anllin.bean;

 

public class Person

{

    private String name;

    private int age;

    private String address;

    public String getName()

    {

       return name;

    }

    public void setName(String name)

    {

       this.name = name;

    }

    public int getAge()

    {

       return age;

    }

    public void setAge(int age)

    {

       this.age = age;

    }

    public String getAddress()

    {

       return address;

    }

    public void setAddress(String address)

    {

       this.address = address;

    }  

}

 

 

 

Jsp訪問javaBean的文法

1.匯入javaBean類

<%@ page import="com.anllin.bean.Person" %>

 

2.聲明javaBean對象

<jsp:useBean id="person" class="com.anllin.bean.Person"></jsp:useBean>

 

其實相當於

<%

        Person person = new Person();

    %>

Id表示產生一個類的執行個體,一般id不能重複,用於表示不同的對象,如果相同則表示同一個對象,這種情況下jsp會報錯。

 

3.訪問javaBean屬性

<jsp:setProperty property="name" name="person" value="jack"/>

 

<jsp:getProperty property="name" name="person"/><br>

其實相當於

<%

        person.setName("jack");

        person.getName();

    %>

 

 

完整的例子:

<%@ page language="java" import="com.anllin.bean.Person"pageEncoding="UTF-8"%>

 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

  <head>

    <title>My JSP ‘javabean.jsp‘ starting page</title>

  </head>

 

  <body>

    <jsp:useBean id="person" class="com.anllin.bean.Person"></jsp:useBean>

   

    <jsp:setProperty property="name" name="person" value="jack"/>

    <jsp:setProperty property="age" name="person" value="20"/>

    <jsp:setProperty property="address" name="person" value="beijing"/>

   

    <jsp:getProperty property="name" name="person"/><br>

    <jsp:getProperty property="age" name="person"/><br>

    <jsp:getProperty property="address" name="person"/><br>

  </body>

</html>

 

設定bean的屬性值

1.可以在<jsp:setProperty>中通過param參數為bean的屬性動態賦值。

<jsp:setProperty property="age" name="person" param="sage"/><br>

sage表示參數名,而不是屬性

在瀏覽器地址欄中輸入

http://localhost:8080/test/javabean.jsp?sage=30

則可以得到age屬性的值30

 

Javabean的存活範圍

Scope屬性決定了javabean對象的存在的範圍。可選值有:

1.page(預設值)

2.request

3.session

4.application

<jsp:useBean id="person" class="com.anllin.bean.Person" scope="page"></jsp:useBean>

 

 

Javabean在page範圍內時

客戶每次請求訪問jsp頁面時,都會建立一個javabean對象。Javabean對象的有效範圍是客戶請求訪問的當前jsp網頁。Javabean對象的以下兩種情況下都會結束生命期:

1.客戶請求訪問的是當前jsp網頁通過<forward>標記將請求轉寄到另一個檔案

2.客戶請求訪問的是當前jsp頁面執行完畢並向用戶端發迴響應。

 

 

Javabean在request範圍內

客戶每次請求訪問jsp頁面時,都會建立新的javabean對象。Javabean對象的有效範圍為:

1.客戶請求訪問的當前jsp網頁。

2.和當前網頁共用一個客戶請求的網頁,即當前jsp網頁中<%@include %>指令以及<forward>標記包含的其他jsp檔案

3.當所有共用同一個客戶請求的jsp頁面執行完畢並向用戶端發加響應時,javabean對象結束生命週期。

4.javabean對象作為屬性儲存在httpRequest對象中,屬性名稱javabean的id,屬性值為javabean對象,因此可以通過HttpRequest.getAttribute()方法取得javabean對象,例如:

Jvabean.jsp

<jsp:useBean id="person" class="com.anllin.bean.Person"scope="request"></jsp:useBean>

<jsp:forward page="javabean2.jsp"></jsp:forward>

 

Javabean2.jsp

<%@ page import="com.anllin.bean.Person" %>

 

    <%

    Person person = (Person)request.getAttribute("person");

    out.print(person.getName());

    %>

 

Javabean在session範圍內

1.Javabean對象被建立後,它存在於整個session的生命週期內,現個session中的jsp檔案分享權限設定這個javabean對象。

2.javabean對象作為屬性儲存在HttpSession對象中,屬性名稱為javabean的id,屬性值為javabean對象。除了可以通過javabean的id直接引用javabean對象外,也可以通過HttpSession.getAttribute()方法取得javabean對象,例如:

<jsp:useBean id="person" class="com.anllin.bean.Person"scope="session"></jsp:useBean>

 

    Person person = (Person)session.getAttribute("person");

    out.print(person.getName());

 

Javabean在application範圍內

1.javabean對象被建立後,它存在於整個web應用的生命週期內,web應用中的所有jsp檔案都能共用同一個javabean對象。

2.javabean對象作為屬性儲存在application對象中,屬性名稱為javabean的id,屬性值為javabean對象,除了可以通過javabean的id直接引用對象外,也可以通過javabean的application.getAttribute()方法取得javabean對象,例如:

<jsp:useBean id="person" class="com.anllin.bean.Person"scope="application"></jsp:useBean>

 

    Person person = (Person)application.getAttribute("person");

    out.print(person.getName());

 

假如有一個Person類,有一個屬性name

為什麼我們要提供一個getName()方法和setName()方法,而不是getCCNma之類的?

 

因為只有遵守這個規範,才能通過反射去調用這兩個方法。

 

重點:

區分page,request,session,application之間的差別以及它們的生命週期。

jsp與javaBean的使用

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.