国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JSP > 正文

JSP第三篇【JavaBean的介紹、JSP的行為--JavaBean】

2019-11-14 12:26:44
字體:
供稿:網(wǎng)友

什么是javaBean

JavaBean就是一個普通的java類,也稱之為簡單java對象–POJO(Plain Ordinary Java Object),是Java程序設(shè)計中一種設(shè)計模式,是一種基于 Java 平臺的軟件組件思想

JavaBean遵循著特定的寫法,通常有以下的規(guī)則:

有無參的構(gòu)造函數(shù)成員屬性私有化封裝的屬性如果需要被外所操作,必須編寫public類型的setter、getter方法

上面的文字看起來好像很高大上,javaBean其實非常簡單,下面的代碼就是按照特定寫法、規(guī)則編寫的一個JavaBean對象

public class Person { PRivate String username ; private int age; public Person() { } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }

為什么需要使用Javabean

使用javaBean的好處就是:封裝,重用,可讀!下面引用知乎一段回答:

JaveBean你可以理解為一輛貨車,在你的java端和web頁面進行數(shù)據(jù)傳遞的載體,你當(dāng)然可以每個變量單獨傳遞,或者使用集合傳遞,但是javabean可以使你的數(shù)據(jù)更有可讀性,方便開發(fā)時明確變量的意義,也使其他閱讀你代碼的人能直接你的意圖

> 如果把bean類與數(shù)據(jù)庫聯(lián)合使用,一張表使用bean類,可以使你的代碼更加簡潔高效,易于理解,現(xiàn)在大多數(shù)框架都會使用這種機制。


jsp行為–JavaBean

JSP技術(shù)提供了三個關(guān)于JavaBean組件的動作元素,即JSP行為(標簽),它們分別為: 【在JSP頁面中查找javaBean對象或者實例化javaBean對象】【設(shè)置javaBean的屬性】【獲取javaBean的屬性】

<jsp:useBean>

<jsp:useBean>標簽用于在指定的域范圍內(nèi)查找指定名稱的JavaBean對象

存在則直接返回該JavaBean對象的引用不存在則實例化一個新的JavaBean對象并將它以指定的名稱存儲到指定的域范圍中

語法:

<jsp:useBean id="實例化對象的名稱" class="類的全名" scope="保存范圍"/>如果JSP不支持<jsp:useBean>這個行為,我們要使用Person類是這樣使用的 <%--這里需要導(dǎo)入Person類--%> <%@ page import="domain.Person" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title></title> </head> <body> <% //new出對象 Person person = new Person(); person.setName("zhongfucheng"); System.out.println(person.getName()); %> </body> </html>效果如下

我們使用<jsp:useBean>就顯得非常簡潔,不用導(dǎo)包,不用new出對象 <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title></title> </head> <body> <jsp:useBean id="person" class="domain.Person" scope="page"/> <% person.setName("zhongfucheng"); System.out.println(person.getName()); %> </body> </html>也可以實現(xiàn)同樣的效果:

有人可能會想,憑什么寫一個<jsp:useBean>這樣的代碼就可以創(chuàng)建出一個對象出來。現(xiàn)在我把JavaBean中無參的構(gòu)造函數(shù)改成有參的,我們看看會出現(xiàn)什么情況,出現(xiàn)異常了! public Person(int age) { this.age = age; }

<jsp:useBean id="person" class="domain.Person" scope="page"/>內(nèi)部原理是這樣子的:

通過上面的代碼我們也知道了為什么要有一個無參的構(gòu)造函數(shù)內(nèi)部在new 對象的時候是沒有傳遞參數(shù)進去的!

<jsp:setProperty>

語法: <jsp:setProerty name="對象名稱" property="屬性名" param="參數(shù)名" value="值">

在語法上可分為4種模式

自動匹配指定屬性指定參數(shù)【很少用】指定內(nèi)容【很少用】

當(dāng)我們沒有學(xué)習(xí)到時,我們獲取表單的信息,然后導(dǎo)入到j(luò)avaBean對象中是這樣的一種情況

這是表單的頁面代碼

<form action="/zhongfucheng/1.jsp" method="post"> 用戶名:<input type="text" name="username"> 年齡:<input type="text " name="age"> <input type="submit" value="提交"> </form>這是處理表單提交過來數(shù)據(jù)的jsp的代碼 <jsp:useBean id="person" class="domain.Person" scope="page"/> <% int age = Integer.parseInt(request.getParameter("age")); person.setAge(age); System.out.println(person.getAge()); %>這是可以完成的,但是相對來說,比較麻煩!

我們來使用了來看看: <jsp:useBean id="person" class="domain.Person" scope="page"/> <%--指定屬性名稱為age--%> <jsp:setProperty name="person" property="age"/> <% System.out.println(person.getAge()); %>也可以完成,并且代碼更少,功能更強大

代碼更少可以直觀看出來,為什么我說它功能更加強大呢?表單提交過來的數(shù)據(jù)都是字符串,在我們沒有用前,我們存儲設(shè)置int類型或其他非字符串類型的數(shù)據(jù)是需要強轉(zhuǎn)的!但是不需要我們強轉(zhuǎn),它內(nèi)部自動幫我們轉(zhuǎn)換了!我們再來使用一下自動匹配來感受它的強大之處吧 <jsp:useBean id="person" class="domain.Person" scope="page"/> <%--property的值設(shè)置為*就代表自動匹配--%> <jsp:setProperty name="person" property="*"/> <% System.out.println(person.getAge()); System.out.println(person.getName()); %>我們再來看一下效果:

看到這里,有人可能會覺得好神奇:只要設(shè)置property的值就可以將表單傳遞過來的數(shù)據(jù)封裝到JavaBean對象中了!這究竟是這樣做到的???細心的朋友會發(fā)現(xiàn),JavaBean的屬性名稱和表單的name屬性設(shè)置的名稱是一模一樣的! private String username ; private int age; 用戶名:<input type="text" name="username"> 年齡:<input type="text " name="age">如果我設(shè)置不一樣還能不能用?我們試試:表單name屬性的username改成是user 用戶名:<input type="text" name="user">我們再來看看還能不能把表單的數(shù)據(jù)完整地封裝JavaBean對象中

我們可以發(fā)現(xiàn):要想能夠把表單帶過來的數(shù)據(jù)成功封裝到JavaBean對象上,名字要一致!也就是說:JavaBean屬性名要和表單的name的名稱一致至于原理,它是通過反射來做的,調(diào)用了內(nèi)省的方法!,我們看編譯后的JSP就明白了。


<jsp:getProperty>

語法:

該jsp行為十分簡單,我們來使用一下就知道了。

<%--使用<jsp:getProperty>輸出--%> <jsp:getProperty name="person" property="username"/> <jsp:getProperty name="person" property="age"/>效果:

原理如下



發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 通化市| 秦安县| 平遥县| 蛟河市| 寻乌县| 门头沟区| 民丰县| 宜都市| 巴林左旗| 防城港市| 香河县| 嘉禾县| 鲁山县| 西华县| 政和县| 安福县| 拜泉县| 昌乐县| 梨树县| 开阳县| 宜城市| 图木舒克市| 灵璧县| 平罗县| 中西区| 白山市| 玉田县| 五常市| 都昌县| 雅江县| 赤峰市| 建湖县| 阿拉尔市| 临海市| 和平县| 肃北| 和平县| 区。| 遂川县| 简阳市| 樟树市|