成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

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

劉德剛 / 663人閱讀

摘要:不存在則實(shí)例化一個(gè)新的對(duì)象并將它以指定的名稱存儲(chǔ)到指定的域范圍中。

什么是javaBean

JavaBean就是一個(gè)普通的java類,也稱之為簡(jiǎn)單java對(duì)象--POJO(Plain Ordinary Java Object),是Java程序設(shè)計(jì)中一種設(shè)計(jì)模式,是一種基于 Java 平臺(tái)的軟件組件思想

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

有無(wú)參的構(gòu)造函數(shù)

成員屬性私有化

封裝的屬性如果需要被外所操作,必須編寫public類型的setter、getter方法

上面的文字看起來(lái)好像很高大上,javaBean其實(shí)非常簡(jiǎn)單,下面的代碼就是按照特定寫法、規(guī)則編寫的一個(gè)JavaBean對(duì)象


    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頁(yè)面進(jìn)行數(shù)據(jù)傳遞的載體,你當(dāng)然可以每個(gè)變量多帶帶傳遞,或者使用集合傳遞,但是javabean可以使你的數(shù)據(jù)更有可讀性,方便開(kāi)發(fā)時(shí)明確變量的意義,也使其他閱讀你代碼的人能直接你的意圖

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

JSP行為--JavaBean

JSP技術(shù)提供了三個(gè)關(guān)于JavaBean組件的動(dòng)作元素,即JSP行為(標(biāo)簽),它們分別為:

【在JSP頁(yè)面中查找javaBean對(duì)象或者實(shí)例化javaBean對(duì)象】

【設(shè)置javaBean的屬性】

【獲取javaBean的屬性】

jsp:useBean

標(biāo)簽用于在指定的域范圍內(nèi)查找指定名稱的JavaBean對(duì)象

存在則直接返回該JavaBean對(duì)象的引用。

不存在則實(shí)例化一個(gè)新的JavaBean對(duì)象并將它以指定的名稱存儲(chǔ)到指定的域范圍中。

語(yǔ)法:

    

如果JSP不支持這個(gè)行為,我們要使用Person類是這樣使用的

    <%--這里需要導(dǎo)入Person類--%>
    <%@ page import="domain.Person" %>

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    
    
        
    
    
    
    
    <%
        //new出對(duì)象
        Person person = new Person();

        person.setName("zhongfucheng");
        System.out.println(person.getName());
    %>
    
    
    

效果如下

我們使用就顯得非常簡(jiǎn)潔,不用導(dǎo)包,不用new出對(duì)象

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    
    
        
    
    
    
    
    <%
        person.setName("zhongfucheng");
        System.out.println(person.getName());
    %>
    
    

也可以實(shí)現(xiàn)同樣的效果:

有人可能會(huì)想,憑什么寫一個(gè)這樣的代碼就可以創(chuàng)建出一個(gè)對(duì)象出來(lái)。

現(xiàn)在我把JavaBean中無(wú)參的構(gòu)造函數(shù)改成有參的,我們看看會(huì)出現(xiàn)什么情況,出現(xiàn)異常了!

     public Person(int age) {
            this.age = age;
        }

內(nèi)部原理是這樣子的:

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

jsp:setProperty

語(yǔ)法:

    

在語(yǔ)法上可分為4種模式

自動(dòng)匹配

指定屬性

指定參數(shù)【很少用】

指定內(nèi)容【很少用】

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

這是表單的頁(yè)面代碼

    
用戶名: 年齡:

這是處理表單提交過(guò)來(lái)數(shù)據(jù)的jsp的代碼


    
    <%
        int age = Integer.parseInt(request.getParameter("age"));
        
        person.setAge(age);
    
        System.out.println(person.getAge());
        
    %>

這是可以完成的,但是相對(duì)來(lái)說(shuō),比較麻煩!

我們來(lái)使用了來(lái)看看:

    

    <%--指定屬性名稱為age--%>
    
    <%
        System.out.println(person.getAge());
    %>

也可以完成,并且代碼更少,功能更強(qiáng)大

代碼更少可以直觀看出來(lái),為什么我說(shuō)它功能更加強(qiáng)大呢?表單提交過(guò)來(lái)的數(shù)據(jù)都是字符串,在我們沒(méi)有用前,我們存儲(chǔ)設(shè)置int類型或其他非字符串類型的數(shù)據(jù)是需要強(qiáng)轉(zhuǎn)的!但是不需要我們強(qiáng)轉(zhuǎn),它內(nèi)部自動(dòng)幫我們轉(zhuǎn)換了

我們?cè)賮?lái)使用一下自動(dòng)匹配來(lái)感受它的強(qiáng)大之處吧

    

    <%--property的值設(shè)置為*就代表自動(dòng)匹配--%>
    
    <%
        System.out.println(person.getAge());
        System.out.println(person.getName());
    %>

我們?cè)賮?lái)看一下效果:

看到這里,有人可能會(huì)覺(jué)得好神奇:只要設(shè)置property的值就可以將表單傳遞過(guò)來(lái)的數(shù)據(jù)封裝到JavaBean對(duì)象中了!這究竟是這樣做到的???

細(xì)心的朋友會(huì)發(fā)現(xiàn),JavaBean的屬性名稱和表單的name屬性設(shè)置的名稱是一模一樣的!

        private String username ;
        private int age;

        用戶名:
        年齡:

如果我設(shè)置不一樣還能不能用?我們?cè)囋嚕罕韱蝞ame屬性的username改成是user

     用戶名:

我們?cè)賮?lái)看看還能不能把表單的數(shù)據(jù)完整地封裝JavaBean對(duì)象中

我們可以發(fā)現(xiàn):要想能夠把表單帶過(guò)來(lái)的數(shù)據(jù)成功封裝到JavaBean對(duì)象上,名字要一致!也就是說(shuō):JavaBean屬性名要和表單的name的名稱一致

至于原理,它是通過(guò)反射來(lái)做的,調(diào)用了內(nèi)省的方法!,我們看編譯后的JSP就明白了。

jsp:getProperty

語(yǔ)法:

該jsp行為十分簡(jiǎn)單,我們來(lái)使用一下就知道了。

    <%--使用輸出--%>
    
    

效果:

原理如下

如果文章有錯(cuò)的地方歡迎指正,大家互相交流。習(xí)慣在微信看技術(shù)文章的同學(xué),可以關(guān)注微信公眾號(hào):Java3y

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/68467.html

相關(guān)文章

  • Java3y文章目錄導(dǎo)航

    摘要:前言由于寫的文章已經(jīng)是有點(diǎn)多了,為了自己和大家的檢索方便,于是我就做了這么一個(gè)博客導(dǎo)航。 前言 由于寫的文章已經(jīng)是有點(diǎn)多了,為了自己和大家的檢索方便,于是我就做了這么一個(gè)博客導(dǎo)航。 由于更新比較頻繁,因此隔一段時(shí)間才會(huì)更新目錄導(dǎo)航哦~想要獲取最新原創(chuàng)的技術(shù)文章歡迎關(guān)注我的公眾號(hào):Java3y Java3y文章目錄導(dǎo)航 Java基礎(chǔ) 泛型就這么簡(jiǎn)單 注解就這么簡(jiǎn)單 Druid數(shù)據(jù)庫(kù)連接池...

    KevinYan 評(píng)論0 收藏0
  • JSP面試題都在這里

    摘要:下面是我整理下來(lái)的知識(shí)點(diǎn)圖上的知識(shí)點(diǎn)都可以在我其他的文章內(nèi)找到相應(yīng)內(nèi)容。在中,尤其重要的是對(duì)象。 下面是我整理下來(lái)的JSP知識(shí)點(diǎn): showImg(https://segmentfault.com/img/remote/1460000013229216?w=4962&h=2653); 圖上的知識(shí)點(diǎn)都可以在我其他的文章內(nèi)找到相應(yīng)內(nèi)容。 JSP常見(jiàn)面試題 jsp靜態(tài)包含和動(dòng)態(tài)包含的區(qū)別 j...

    gaosboy 評(píng)論0 收藏0
  • JSP 學(xué)習(xí)記錄

    摘要:對(duì)象具有請(qǐng)求域,即完成客戶端的請(qǐng)求之前,該對(duì)象一直有效。提交的數(shù)據(jù)量最多不超過(guò)。安全性較低但效率比方式高。適合提交數(shù)據(jù)量大,安全性高的用戶信息。除非本次會(huì)話的所有頁(yè)面都關(guān)閉后再重新訪問(wèn)某個(gè)或者,將會(huì)創(chuàng)建新的會(huì)話。 JSP 簡(jiǎn)介 全名為Java Server Pages,其根本是一個(gè)簡(jiǎn)化的Servlet設(shè)計(jì),實(shí)現(xiàn)了在Java當(dāng)中使用HTML標(biāo)簽。JSP是一種動(dòng)態(tài)網(wǎng)頁(yè)技術(shù)標(biāo)準(zhǔn),也是Java...

    BearyChat 評(píng)論0 收藏0
  • Web開(kāi)發(fā)模式【Mode I 和Mode II介紹、應(yīng)用案例】

    摘要:開(kāi)發(fā)模式的介紹在開(kāi)發(fā)模式中,有兩個(gè)主要的開(kāi)發(fā)結(jié)構(gòu),稱為模式一和模式二首先我們來(lái)理清一些概念吧主要對(duì)數(shù)據(jù)的操作,增加修改刪除等原子性操作。 開(kāi)發(fā)模式的介紹 在Web開(kāi)發(fā)模式中,有兩個(gè)主要的開(kāi)發(fā)結(jié)構(gòu),稱為模式一(Mode I)和模式二(Mode II). 首先我們來(lái)理清一些概念吧: DAO(Data Access Object):主要對(duì)數(shù)據(jù)的操作,增加、修改、刪除等原子性操作。 Web層...

    longmon 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<