通過實例了解JavaBean開發(fā)及使用過程解析
一、JavaBean簡介
JavaBean是使用Java語言開發(fā)的一個可重用的組件,在JSP的開發(fā)中可以使用JavaBean減少重復代碼,使整個JSP代碼的開發(fā)更簡潔。JSP搭配JavaBean來使用,有以下的優(yōu)點:
1.可將HTML和Java代碼分離,這主要是為了日后維護的方便。如果把所有的程序代碼(HTML和Java)寫到JSP頁面中,會使整個程序代碼又多又復雜,造成日后維護上的困難。
2.可利用JavaBean的優(yōu)點。將日常用到的程序?qū)懗蒍avaBean組件,當在JSP要使用時,只要調(diào)用JavaBean組件來執(zhí)行用戶所要的功能,不用再重復寫相同的程序,這樣以來也可以節(jié)省開發(fā)所需的時間。
二、JavaBean開發(fā)要求
1.JavaBean本身就是一個類,屬于Java的面向?qū)ο缶幊獭?/p>
2.在JSP中如果要應用JSP提供的Javabean的標簽來操作簡單類的話,則此類必須滿足如下的開發(fā)要求:
(1)所有的類必須放在一個包中,在WEB中沒有包的是不存在的;
(2)所有的類必須聲明為public class,這樣才能夠被外部所訪問;
(3)類中所有的屬性都必須封裝,即:使用private聲明;
(4)封裝的屬性如果需要被外部所操作,則必須編寫對應的setter、getter方法;
(5)一個JavaBean中至少存在一個無參構造方法,此為JSP中的標簽所使用。
第一個簡單JavaBean
package blog.csdn.joywy;
public class SimpleBean{
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;
}
}
如果在一個類中只包含屬性、setter、getter方法,那么這種類就成為簡單JavaBean。
對于簡單的JavaBean也有幾個名詞:
(1)VO:與簡單Java對象對應,專門用于傳遞值的操作上
(2)POJO:簡單Java對象
(3)TO:傳輸對象,進行遠程傳輸時,對象所在的類必須實現(xiàn)java.io.Serializable接口。
三、WEB開發(fā)的標準目錄結構
Web項目中各個目錄的作用:
|
No. |
目錄或文件名稱 |
作用 |
|
1 |
WEB ROOT |
Web的根目錄,一般虛擬目錄直接指向此文件夾,此文件夾下必然直接包含WEB-INF |
|
2 |
WEB-INF |
Web目錄中最安全的文件夾,保存各種類、第三方jar包、配置文件 |
|
3 |
Web.xml |
Web的部署描述符 |
|
4 |
classes |
保存所有的JavaBean,如果不存在,可以手工創(chuàng)建 |
|
5 |
lib |
保存所有的第三方jar文件 |
|
6 |
tags |
保存所有的標簽文件 |
|
7 |
jsp |
存放*.jsp文件,一般根據(jù)功能再建立子文件夾 |
|
8 |
js |
存放所有需要的*.js文件 |
|
9 |
css |
樣式表文件的保存路徑 |
|
10 |
images |
存放所有的圖片,如*.gif或*.jpg文件 |
注:
1.打包編譯:編譯時直接使用javac -d . SimpleBean.java命令根據(jù)package的定義打包編譯。
2.Tomcat中classpath的配置:
所有的class要進行訪問時都必須在classpath中進行配置,在Tomcat中依然可以使用,在Web開發(fā)中,Tomcat安裝目錄的lib文件夾、WEB-INF\classes和WEB-INF\lib文件夾實際上都表示了classpath,所以直接將類或jar包復制到這些文件夾中就可以直接使用了。
<%@ page contentType="text/html" pageEncoding="GBK"%>
<%@ page import="blog.csdn.joywy.*"%> <!-- 導入blog.csdn.joywy包 -->
<html>
<head><title>歡迎來到望星空</title></head>
<body>
<%
SimpleBean simple = new SimpleBean(); //聲明并實例化SimpleBean對象
simple.setName("Joywy"); //設置name屬性
simple.setAge(23); //設置age屬性
%>
<h3>姓名:<%=simple.getName()%></h3> <!-- 輸出name屬性的內(nèi)容 -->
<h3>年齡:<%=simple.getAge()%></h3> <!-- 輸出age屬性的內(nèi)容 -->
</body>
</html>
四、使用<jsp:useBean>指令
除了使用import的語句之外,也可以使用JSP中提供的:<jsp:useBean>指令完成操作,指令的操作語法如下所示:
1.<jsp:useBean id="實例化對象名稱" scope=“保存范圍” class=“包.類名稱“/>
2.主要屬性:
(1)id:表示實例化對象的名稱
(2)scope:表示此對象保存的范圍,一共有四種屬性范圍:page、request、session、application
(3)class:對象所對應的包.類名稱
樣例:
<%@ page contentType="text/html" pageEncoding="GBK"%>
<jsp:useBean id="simple" scope="page" class="blog.csdn.joywy.SimpleBean"/>
<html>
<head><title>歡迎來到望星空</title></head>
<body>
<%
simple.setName("Joywy");
simple.setAge(23);
%>
<h3>姓名:<%=simple.getName()%></h3>
<h3>年齡:<%=simple.getAge()%></h3>
</body>
</html>
在使用<jsp:useBean/>指令時,實際上會默認調(diào)用SimpleBean類中的無參構造方法進行對象實例化,當修改SimpleBean.java文件后,如果要想讓其起作用,則需要重新啟動服務器,我們可以通過在Tomcat中直接配置自動加載的操作,這樣即使不重新啟動服務器,JavaBean修改后也可以被立即加載進來。重新加載的配置如下:在Tomcat安裝目錄下conf/server.xml文件中進行配置
<Context path="/joywy" docBase="D:\myweb" reloadable="true"/>
以后Tomcat會自動進行檢測,如果發(fā)現(xiàn)JavaBean修改之后會自動進行重新加載。
注意:
1.直接在配置虛擬目錄的位置上增加一個reloadable屬性即可,但是這種情況只適合于開發(fā),因為使用reloadable自動加載后,服務器將始終處于監(jiān)視狀態(tài),一旦發(fā)現(xiàn)類修改后就要立刻重新加載,運行性能是比較低的,所以,當項目真正發(fā)布運行時一定要將reloadable的內(nèi)容設置成false,以提升入屋企運行性能。
2.還要記住,當Tomcat重新加載了新的內(nèi)容后,所有的操作都將初始化,所有設置過的session屬性都將消失。
五、<jsp:useBean>指令內(nèi)部實現(xiàn)原理
依靠的是反射機制完成的,在使用<jsp:useBean>指令時需要定義對象所在的“包.類“名稱,而且又要求類中存在無參構造方法,這就是反射操作的前提條件,所以<jsp:useBean>的語法實際上屬于反射機制的操作實現(xiàn)。
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
ShardingSphere jdbc集成多數(shù)據(jù)源的實現(xiàn)步驟
本文主要介紹了ShardingSphere jdbc集成多數(shù)據(jù)源的實現(xiàn)步驟,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-10-10
java9新特性Reactive?Stream響應式編程?API
這篇文章主要為大家介紹了java9新特性響應式編程API的特點詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-03-03
2020macOS Big Sur配置Java開發(fā)環(huán)境之jdk安裝過程
這篇文章主要介紹了2020macOS Big Sur配置Java開發(fā)環(huán)境之jdk安裝,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-02-02
SpringBoot+Shiro+LayUI權限管理系統(tǒng)項目源碼
本項目旨在打造一個基于RBAC架構模式的通用的、并不復雜但易用的權限管理系統(tǒng),通過SpringBoot+Shiro+LayUI權限管理系統(tǒng)項目可以更好的幫助我們掌握springboot知識點,感興趣的朋友一起看看吧2021-04-04
springboot創(chuàng)建的web項目整合Quartz框架的項目實踐
本文主要介紹了springboot創(chuàng)建的web項目整合Quartz框架的項目實踐,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-06-06
springboot創(chuàng)建多module項目的實例
這篇文章主要介紹了springboot創(chuàng)建多module項目的實例代碼,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-02-02
SpringBoot整合Jasypt實現(xiàn)配置加密的步驟詳解
Jasypt是一個Java庫,提供了一種簡單的加密解密方式,可用于保護敏感數(shù)據(jù),例如密碼、API密鑰和數(shù)據(jù)庫連接信息等,本文給大家介紹了SpringBoot整合Jasypt實現(xiàn)配置加密的詳細步驟,感興趣的同學可以參考一下2023-11-11

