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

首頁 > 編程 > JSP > 正文

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

2019-11-14 13:05:34
字體:
來源:轉載
供稿:網友

什么是javaBean

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

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

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

上面的文字看起來好像很高大上,javaBean其實非常簡單,下面的代碼就是按照特定寫法、規則編寫的一個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頁面進行數據傳遞的載體,你當然可以每個變量單獨傳遞,或者使用集合傳遞,但是javabean可以使你的數據更有可讀性,方便開發時明確變量的意義,也使其他閱讀你代碼的人能直接你的意圖

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


jsp行為–JavaBean

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

<jsp:useBean>

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

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

語法:

<jsp:useBean id="實例化對象的名稱" class="類的全名" scope="保存范圍"/>如果JSP不支持<jsp:useBean>這個行為,我們要使用Person類是這樣使用的 <%--這里需要導入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>就顯得非常簡潔,不用導包,不用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>也可以實現同樣的效果:

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

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

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

<jsp:setProperty>

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

在語法上可分為4種模式

自動匹配指定屬性指定參數【很少用】指定內容【很少用】

我們沒有學習到時,我們獲取表單的信息,然后導入到javaBean對象中是這樣的一種情況

這是表單的頁面代碼

<form action="/zhongfucheng/1.jsp" method="post"> 用戶名:<input type="text" name="username"> 年齡:<input type="text " name="age"> <input type="submit" value="提交"> </form>這是處理表單提交過來數據的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()); %>也可以完成,并且代碼更少,功能更強大

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

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

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


<jsp:getProperty>

語法:

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

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

原理如下



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 东阳市| 彭阳县| 沅陵县| 兴安盟| 如皋市| 赞皇县| 浮梁县| 旺苍县| 南投市| 若羌县| 大厂| 永顺县| 慈利县| 华宁县| 云南省| 渑池县| 宜春市| 霍城县| 南丹县| 章丘市| 翼城县| 潼关县| 玉环县| 资溪县| 清镇市| 察隅县| 克山县| 错那县| 垫江县| 山丹县| 乐都县| 夏河县| 苍山县| 台山市| 韶关市| 丹凤县| 溧水县| 赫章县| 黔南| 德格县| 陵水|