JavaWeb學習筆記(十五)--JSP與JavaBean

 

1. 什麼是JavaBean

JavaBean是一個遵循特定寫法的Java類,它一般有以下特色:html

  • 這個Java類必須具備一個無參的構造函數
  • 屬性必須私有化
  • 私有化的屬性必須經過public類型方法暴露給其餘程序,而且方法的命名也必須遵照必定的命名規範

JavaBean在J2EE開發中,一般用於封裝數據,對於遵循以上寫法的JavaBean組件,其餘程序能夠經過反射技術實例化JavaBean對象,並經過反射那些遵循命名規範的方法,從而獲取JavaBean的屬性和設置屬性的值。java

JavaBean示例:session

package com.domain; public class Person { private String name; private int age; 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; } }

2. JavaBean的屬性

JavaBean能夠有多個屬性,屬性能夠是任意類型,每一個屬性一般都須要有相應的setter和getter方法,setter方法稱爲屬性修改器,getter方法稱爲屬性訪問器。app

setter和getter方法命名必須以set、get開始,其後跟上對應的屬性名,屬性名第一個字母大寫。dom

一個JavaBean的某個屬性也能夠只有getter或setter方法,這樣的屬性稱之爲只讀、只寫屬性。jsp

3. 在JSP使用JavaBean

JSP技術中提供了三個JavaBean相關的標籤:函數

  • <jsp:useBean>:用於在JSP頁面中查找或實例化一個JavaBean組件
  • <jsp:setProperty>:用於在JSP頁面中設置一個JavaBean組件的屬性。
  • <jsp:getProperty>:用於在JPS頁面中獲取一個JavaBean組件的屬性。

3.1 <jsp:useBean>標籤

<jsp:useBean>標籤用於在指定的域範圍查找指定名稱的JavaBean對象:若是存在,則直接返回該JavaBean對象的引用,若是不存在則實例化一個新的JavaBean對象,並將它以指定名稱存儲到指定的域範圍。this

經常使用語法:spa

<jsp:useBean id="beanName" class="package.class" scope="page|request|session|application" /> - id屬性用於指定JavaBean實例對象的引用名稱 - class屬性用於指定JavaBean的完整類名(即必須帶有包名) - scope屬性用於指定JavaBean實例對象所存儲的域範圍,值只能是page、request、session、application中的一個,默認值爲page

示例:翻譯

<%@ page import="com.domain.Person" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>useBean示例</title>
</head>
<body>
<jsp:useBean id="person1" class="com.domain.Person"></jsp:useBean>
<% out.print(person1); %>
<br>
<% Person person = new Person(); pageContext.setAttribute("person2", person); out.print(person); %>
<br>
<jsp:useBean id="person2" class="com.domain.Person"></jsp:useBean>
<% out.print(person2); %>
</body>
</html>

運行結果:

person1在使用<jsp:useBean>標籤是當前域沒有person1對象。person2在使用<jsp:useBean>標籤時,當前域中已經存在person對象。

查看翻譯後的Servlet,能夠看到建立的時候先去指定域查找是否存在對應的JavaBean,存在直接返回,不存在則新建立一個。

3.2 帶標籤體的<jsp:useBean>標籤

語法:

<jsp:useBean ...> Body </jsp:useBean>

功能:Body部分的內容只有在<jsp:useBean>標籤建立JavaBean實例對象時才執行。

3.3  <jsp:setProperty>標籤

<jsp:setProperty>用於設置JavaBean的屬性

語法:

<jsp:setProperty name="beanName" property="propertyName" value="String | <%= experession %>"/>
<jsp:setProperty name="beanName" property="propertyName" param="parameName"/>
<jsp:setProperty name="beanName" property="*" />

name屬性用於指定JavaBean對象的名稱。

property屬性用於指定JavaBeran實例對象的屬性名。

value屬性用於指定JavaBean對象的某個屬性的值,value的值能夠是字符串,也能夠是表達式,該表達式計算的結果必須與要設置的JavaBean屬性的類型一致。

param屬性用於將JavaBean實例對象的某個屬性之設置爲一個請求參數的值,該屬性一樣會自動轉換成要設置的JavaBean屬性的類型(只支持8中基本類型的轉換,將請求參數的字符串轉換成基本類型,並賦值到bean屬性中)。

property="*"時,則使用全部請求參數爲bean賦值,請求參數名稱必須和JavaBean的名稱一致。

舉例:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>setProperty舉例</title>
</head>
<body>
<jsp:useBean id="person1" class="com.domain.Person" />
<jsp:setProperty name="person1" property="name" value="zhangsan"/>
<jsp:setProperty name="person1" property="age" value="18"/>
<% out.print(person1); %>
<br>
<jsp:useBean id="person2" class="com.domain.Person" />
<jsp:setProperty name="person2" property="name" param="name"/>
<jsp:setProperty name="person2" property="age" param="age"/>
<% out.print(person2); %>
<br>

<jsp:useBean id="person3" class="com.domain.Person"/>
<jsp:setProperty name="person3" property="*"/>
<% out.print(person3); %>


</body>
</html>

運行結果:

3.4  <jsp:getProperty>標籤

<jsp:getProperty>標籤用於讀取JavaBean對象的屬性,而後將讀取的屬性值轉換成字符串輸出到響應正文中。

語法:

<jsp:getProperty name="beanName" property="propertyName"/>

name屬性用於指定實例對象的名稱。
property屬性用於指定JavaBean實例對象的屬性名。

若是一個JavaBean實例對象的某個屬性爲null,那麼使用<jsp:getProperty>標籤的輸出結果是一個內容爲「null」的字符串。

舉例:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>getProperty舉例</title>
</head>
<body>

<jsp:useBean id="person" class="com.domain.Person"/>
<jsp:setProperty name="person" property="name" value="zhangsan" />
<jsp:setProperty name="person" property="age" value="18" /> name = <jsp:getProperty name="person" property="name"/><br> age = <jsp:getProperty name="person" property="age"/>

</body>
</html>

運行結果:

相關文章
相關標籤/搜索