天天看點

javaBean的相關知識和應用javaBean

javaBean

JavaBean 簡介

JavaBean 是一種JAVA語言寫成的可重用元件。為寫成JavaBean,類必須是具體的和公共的,并且具有無參數的

構造器

。JavaBean 通過提供符合一緻性設計模式的公共方法将内部域暴露成員屬性。在JSP的開發中可以使用javaBean減少重複代碼,使整個JSP代碼的開發更簡潔.JSP搭配JavaBean來使用,有以下優點:

1.可将HTML和java代碼分離,好維護

2.将常用的程式攜程javaBean元件,當在JSP要使用時,隻要調用就可以,避免編寫重複代碼

JavaBean開發要求

1.javaBean本身就是一個類,屬于java面向對象的程式設計

2.在JSP中如果要應用jsp提供的javabean的标簽來啊哦做簡單類的話,則此類必須滿足如下的開發要求:

01.所有的類必須放在一個包中,在web中沒有包的是不存在的

02.所有的類必須聲明為public class,這樣才能夠被外部所方位

03.類中所有的屬性都必須使用private封裝

04.封裝的屬性如果需要被外部所操作,則必須編寫對應的setter.getter方法

05.一個javabean中至少存在一個無參構造方法,此為jsp中的标簽所使用

執行個體:

package cn.bdqn.javaBean;

public class Person {

private String name;

private int age;

public void setName(String name){

this.name=name;

}

public void setAge(int age){

this.age=age;

public String getName(){

return this.name;

public int getAge(){

return this.age;

對于javabean有幾個名詞:

VO: 值對象,存放所有所有的傳遞資料的操作上;

POJO: 簡單java對象

PO: persistant object 持久對象,可以看成是與資料庫中的表相映射的java對象。使用

Hibernate

來生成PO是不錯的選擇。

注意:當一個javabean修改後,一定要重新開機伺服器

當然Tomcat中提供了自動的加載機制,但是這種加載機制需要通過配置server.xml進行配置

在配置的虛拟目錄的,context節點中添加屬性reloadable=”true”

這樣配置後,Tomcat會自動進行檢測,如果javabean修改,會自動進行重新加載

由于reloadable一緻要處于監視狀态,是以伺服器真正用于項目運作的時候,此屬性一定要設定成false,否則性能會下載下傳.

每當進行完重新加載之後,之前所設定的全部的session範圍的屬性将徹底消失

JavaBean與表單

Jsp表單頁面代碼如下:

<form action="control.jsp" method="post">

<table>

<tr>

<td>姓名</td>

<td><input name="name" placeholder="請輸入姓名">

</td>

</tr>

<td>年齡</td>

<td><input type="password" name="age" placeholder="請輸入年齡">

<td colspan="2"><input type='submit' value="送出"></td>

</table>

</form>

方法一:

使用<%@ page import=”包.類名稱”%>進行引入,就可以使用new關鍵字,進行對象的建立了

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

    <%@ page import="cn.bdqn.javaBean.Person"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>Insert title here</title>

</head>

<body>

<%request.setCharacterEncoding("UTF-8"); %>

<%

Person p=new Person();

p.setName(request.getParameter("name"));

p.setAge(Integer.parseInt(request.getParameter("age")));

%>

<%=p.getName() %>

<%=p.getAge()%>

</body>

</html>

方法二:

使用<jsp:useBean id=”執行個體化對象的名稱” scope=”儲存範圍(四大作用域)” class=”包.類名稱”/>

Id是被執行個體化的對象的名稱,這樣使用就直接拿這個對象進行使用.

<jsp:useBean id="P2" scope="page" class="cn.bdqn.javaBean.Person"/>

<%--jsp:useBean标簽中的id是被執行個體化的對象,

jsp:setProperty标簽中的name屬性的值是需要被修改屬性值的執行個體化對象名稱

property屬性是需要被修改的屬性的名稱 值為*,表示全部比對 --%>

<jsp:setProperty name="p2" property=* />

通過一個<jsp:Property>标簽就可以完成所有請求參數的自動設定,而且可以自動

将輸入的String型變為int型的資料,這個标簽的文法如下:

<jsp:setProperty>:表示操作指定javabean中的屬性,裡面定義了兩個屬性:

-name:表示使用javabean中的id的定義;

-property:表示的是設定裡面的屬性内容,如果為*則表示自動比對,與表單相比對.

如果想要讓表單的參數自動設定到javabean之中的化.就需要讓參數的名稱與屬性一緻 .但是這種說法并不明确,因為在這之中還包含了一個概念.

在編寫簡單java類的時候類的屬性使用private封裝,而且編寫了對應的setter和getter方法.

使用這種操作.實際上最終調用的是javabean中的setter方法,而setter方法又有嚴格的命名要求.是以可以簡單的了解為要想設定.則參數名稱必須與屬性一緻,否則無法完成設定.

這種操作的原理是反射機制,但是這種操作本身存在一個問題.如果要求輸入的内容是int型的,則必須輸入數字否則會報錯

Javabean的優點必須結合表單才能看出來

方法三:

使用反射機制

javaBean設定和取得屬性

1設定屬性:<jsp:setProperty>

<jsp:setProperty>标簽一共有四種使用方法:

-01 自動比對:<jsp:setProperty name=”執行個體化對象的名稱(即:useBaen标簽中的id屬性的值)”  property=”*”/>

-02 指定屬性:<jsp:setProperty name=”執行個體化對象的名稱(即:useBaen标簽中的id屬性的值)”  property=”屬性名稱”/>

-03 指定參數:<jsp:setProperty name=”執行個體化對象的名稱(即:useBaen标簽中的id屬性的值)”  property=”屬性名稱” param=”參數名稱”/>

-04 指定内容:<jsp:setProperty name=”執行個體化對象的名稱(即:useBaen标簽中的id屬性的值)”  property=”屬性名稱” value=”内容”/>

建議使用第一種

1取得屬性:<jsp:getProperty>

在javaBean的操作标簽中也提供了專門取得屬性的标簽:

<jsp:getProperty>,此标簽會自動調用JavaBean中的getter()方法,與設定屬性的标簽相比,取得屬性的标簽隻有一種文法:

<jsp:getProperty name=”執行個體化對象的名稱(useBean标簽中id屬性的屬性值)” 

property=”屬性名稱”>

jsp:getProperty 标簽将擷取屬性值并列印到頁面

 當以後再JSP頁面中再也看不到任何的<%%>的時候,基本上jsp的開發标準模式也就形成類

以後隻要看見jsp标簽上出現類id屬性,則不管何種情況基本上都表示一個執行個體化對象,如果标簽上看見類name屬性,肯定找的是屬性範圍中的内容,就是id屬性的屬性值,如果有類property則表示的就是一個類中的屬性

jsp:getProperty 和jsp:setProperty标簽都是利用反射機制完成的

javaBean的儲存範圍

<jsp:useBean>指令上存在一個scope屬性,表示的是一個javaBean的儲存範圍,儲存範圍一共有四種:page,request,session,application.即:jsp四大作用域

javaBean的删除

 JavaBean雖然使用類<jsp:useBean>标準進行建立,但是其操作依靠的仍然是四種屬性範圍,如果一個JavaBean不再使用的話,則可以直接使用四中屬性範圍的removeAttribute()方法進行删除

-1删除page範圍的JavaBean可以使用;

pageContext.removeAttribute(JavaBean的執行個體化對象名稱);

-2删除request範圍的javaBean可以使用:

request.removeAttribute(JavaBean的執行個體化對象名稱);

-3删除session範圍的javaBean可以使用:

session.removeAttribute(JavaBean的執行個體化對象名稱);

-4删除application範圍的javaBean可以使用:

application.removeAttribute(JavaBean的執行個體化對象名稱);