![J2EE環(huán)境與程序設(shè)計(jì)_第1頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-4/7/882a5d99-2d40-4f0a-a767-ebb2910c5c9f/882a5d99-2d40-4f0a-a767-ebb2910c5c9f1.gif)
![J2EE環(huán)境與程序設(shè)計(jì)_第2頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-4/7/882a5d99-2d40-4f0a-a767-ebb2910c5c9f/882a5d99-2d40-4f0a-a767-ebb2910c5c9f2.gif)
![J2EE環(huán)境與程序設(shè)計(jì)_第3頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-4/7/882a5d99-2d40-4f0a-a767-ebb2910c5c9f/882a5d99-2d40-4f0a-a767-ebb2910c5c9f3.gif)
![J2EE環(huán)境與程序設(shè)計(jì)_第4頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-4/7/882a5d99-2d40-4f0a-a767-ebb2910c5c9f/882a5d99-2d40-4f0a-a767-ebb2910c5c9f4.gif)
![J2EE環(huán)境與程序設(shè)計(jì)_第5頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-4/7/882a5d99-2d40-4f0a-a767-ebb2910c5c9f/882a5d99-2d40-4f0a-a767-ebb2910c5c9f5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上J2EE環(huán)境與程序設(shè)計(jì)JAVA變量:必須先聲明后使用 (float a=3.4f; double b=3.4; )字符串變量 (實(shí)際上是String類的一個(gè)實(shí)例)(String s1=Hello, s2= Java, s3;s3=s1+s2; /s3=Hello Java) 如果字符串與其他類型變量進(jìn)行“+”運(yùn)算,系統(tǒng)將自動(dòng)將其他類型轉(zhuǎn)換為字符串。字符串?dāng)?shù)值: int i= Integer.parseInt(123); 數(shù)值字符串:String s=String.valueOf(value);其中value為任意一種數(shù)字類型。l 運(yùn)算符 (2/3=0; 10+;是錯(cuò)的
2、;9.5%2=1.5 ):每左移一位,右邊補(bǔ)0,最高位移出丟棄 byte a=32; / a: int i=a2; / a:每右移一位,最高位由原來的最高位補(bǔ)充( 正數(shù)補(bǔ)0,負(fù)數(shù)補(bǔ)1) :0填充右移(無符號(hào)右移) 表達(dá)式:關(guān)系表達(dá)式的運(yùn)算結(jié)果是邏輯值:true、false.break語(yǔ)句:從switch語(yǔ)句中退出;強(qiáng)行退出一個(gè)循環(huán);當(dāng)作goto語(yǔ)句來用,用法: break 標(biāo)簽;標(biāo)簽可標(biāo)識(shí)控制需要轉(zhuǎn)換到的任何有效語(yǔ)句(塊) 跳出整個(gè)循環(huán),整個(gè)switch塊,continue語(yǔ)句:結(jié)束本次循環(huán),跳至下一次循環(huán);continue 標(biāo)簽; (繼續(xù)標(biāo)簽處循環(huán)) 本次循環(huán)體內(nèi)不執(zhí)行continue語(yǔ)句后
3、的其它語(yǔ)句,但下次循環(huán)還會(huì)執(zhí)行對(duì)象是指一組屬性以及這組屬性上專用操作的封裝體類的概念:類是對(duì)具有相同屬性和相同操作的一組相似對(duì)象的定義.類是對(duì)象的抽象,對(duì)象是類的實(shí)例。Or 是具有相同屬性和操作的一組對(duì)象的集合,它為屬于該類的全部對(duì)象提供了統(tǒng)一的抽象描述,它由一個(gè)類名、一組屬性和一組操作構(gòu)成類的作用是創(chuàng)建對(duì)象。類是創(chuàng)建對(duì)象的模板,對(duì)象是類的一個(gè)實(shí)例。屬性:是對(duì)象的特征,包括對(duì)象和行為 靜態(tài)屬性“狀態(tài)”,用變量表示 動(dòng)態(tài)屬性“行為”,用方法表示類中的“方法”實(shí)例方法: 實(shí)例方法既可以操作實(shí)例變量,也可以操作類變量; 實(shí)例方法在創(chuàng)建類對(duì)象后才分配入口地址; 實(shí)例方法可以被類創(chuàng)建的任何對(duì)象訪問,必須
4、通過對(duì)象來調(diào)用;實(shí)例方法可以調(diào)用其它方法(包括類方法)。(2)類方法: 用static修飾的方法是類方法,也叫靜態(tài)方法; 類方法只能操作類變量; 類方法在類被加載到內(nèi)存后就分配了入口地址; 類方法可以被類創(chuàng)建的任何對(duì)象調(diào)用,也可以通過類名來調(diào)用,類方法只能調(diào)用該類的類方法。類的訪問控制有2種:public和default.public類:可以在任何一個(gè)包中的任何一個(gè)類中被訪問和繼承.default類:只能在同一個(gè)包中被其它類所訪問和繼承構(gòu)造函數(shù)n 作用:構(gòu)造函數(shù)是在創(chuàng)建對(duì)象時(shí)(new語(yǔ)句)自動(dòng)調(diào)用的函數(shù),其作用主要是用于初始化實(shí)例變量.n 特點(diǎn):構(gòu)造函數(shù)名與類同名,構(gòu)造函數(shù)不能指定類型(包括v
5、oid),也無任何返回值.一個(gè)類可以有多個(gè)不同的構(gòu)造函數(shù).如果沒有定義構(gòu)造函數(shù),系統(tǒng)將會(huì)自動(dòng)為類添加一個(gè)默認(rèn)的構(gòu)造函數(shù)(不帶參數(shù),執(zhí)行空操作).一旦自定義了構(gòu)造函數(shù),默認(rèn)的構(gòu)造函數(shù)將關(guān)閉,系統(tǒng)轉(zhuǎn)向調(diào)用相應(yīng)的構(gòu)造函數(shù)創(chuàng)建對(duì)象。n 重載同一個(gè)類中的2個(gè)或以上的方法(函數(shù))可以有同一個(gè)名字,只要它們的參數(shù)聲明不同即可. (如類型不同、個(gè)數(shù)不同)n 系統(tǒng)能夠根據(jù)不同情況自動(dòng)調(diào)用一個(gè)合適的方法函數(shù)。重載:同一個(gè)類中的2個(gè)或以上的方法(函數(shù))可以有同一個(gè)名字,只要它們的參數(shù)聲明不同即可. (如類型不同、個(gè)數(shù)不同)系統(tǒng)能夠根據(jù)不同情況自動(dòng)調(diào)用一個(gè)合適的方法函數(shù)。繼承 繼承是一種由已有類創(chuàng)建新類的機(jī)制.繼承是
6、類間的基本關(guān)系,是子類共享父類(Java又稱為超類,C+稱為基類)中定義的數(shù)據(jù)和方法的機(jī)制.子類除了繼承其父類(或祖先類)的屬性和操作外,還可以定義自己特有的屬性和操作,也可以對(duì)父類(或祖先類)中的操作進(jìn)行重新定義。Java使用接口(interface)來克服單多繼承缺陷接口 接口(interface)只是說明類應(yīng)該做什么,但不指定應(yīng)該如何去做. (類比USB接口)接口只有方法名沒有方法體,這些方法可以在不同的地方被不同的類實(shí)現(xiàn),而這些實(shí)現(xiàn)可以具有不同的行為(功能).Java接口不能有構(gòu)造器(構(gòu)造函數(shù)).Java可使用接口來實(shí)現(xiàn)多繼承。接口不一定要有方法,也可以全部是常量,甚至是沒有任何方法和
7、屬性接口的多重實(shí)現(xiàn)n Java繼承是單繼承(子類只有一個(gè)直接父類);n 但是一個(gè)類可以實(shí)現(xiàn)一個(gè)接口,也可同時(shí)實(shí)現(xiàn)另一個(gè)接口。J2EE(J2EE是一系列的技術(shù)規(guī)范與指南. 成為企業(yè)級(jí)開發(fā)的工業(yè)標(biāo)準(zhǔn)和首選平臺(tái)。三層架構(gòu)的組成:n 表示層用戶界面部分(對(duì)應(yīng)客戶端)n 業(yè)務(wù)層應(yīng)用邏輯部分(對(duì)應(yīng)服務(wù)器)n 數(shù)據(jù)層數(shù)據(jù)訪問部分(對(duì)應(yīng)數(shù)據(jù)庫(kù))優(yōu)勢(shì): 瘦客戶端:計(jì)算被集中至服務(wù)器端,使性能提高成為可能. 易維護(hù):每一層可以被單獨(dú)改變,而無需其它層的改變. 降低了部署與維護(hù)的開銷,提高了系統(tǒng)可擴(kuò)展性和伸縮性。三層結(jié)構(gòu)示例P124 三層架構(gòu)的組成,各層的作用,采用的相關(guān)技術(shù)傳統(tǒng)的Web應(yīng)用B/S模式表現(xiàn)層(Str
8、uts)業(yè)務(wù)邏層(Spring)持久化層(Hibernate)(Web服務(wù)器專門處理客戶端HTTP請(qǐng)求并傳送頁(yè)面使瀏覽器可以瀏覽。常用的Web服務(wù)器:Windows平臺(tái):IIS,UNIX和LINUX平臺(tái): Apache、W3C、NCSAWEB應(yīng)用基本結(jié)構(gòu)(WEB-INF/web.xml)WEB-INF是Java的WEB應(yīng)用的安全目錄??蛻舳藷o法訪問,只有服務(wù)端可以訪問。想在頁(yè)面中直接訪問其中的文件,必須通過web.xml文件對(duì)要訪問的文件進(jìn)行相應(yīng)映射才能訪問。WEBWeb服務(wù)器專門處理客戶端HTTP請(qǐng)求并傳送頁(yè)面使瀏覽器可以瀏覽動(dòng)態(tài)網(wǎng)站含有服務(wù)器端代碼(提供的服務(wù)是依靠Web應(yīng)用程序)實(shí)現(xiàn)的,
9、如留言板、論壇、新聞、博客等; Web應(yīng)用程序(B/S應(yīng)用程序)以動(dòng)態(tài)網(wǎng)站為運(yùn)行載體;Request(請(qǐng)求)request對(duì)象封裝了客戶端提交的數(shù)據(jù)信息。用request對(duì)象的相關(guān)方法可獲得提交的各種數(shù)據(jù)Reponse(響應(yīng)) response對(duì)象代表服務(wù)器對(duì)客戶端請(qǐng)求的響應(yīng),用于向客戶端發(fā)送數(shù)據(jù)。URL(Universal Resource Locator,統(tǒng)一資源定位器) 是Internet上標(biāo)準(zhǔn)的資源的地址 ,每個(gè)站點(diǎn)或站點(diǎn)上的每個(gè)文件(網(wǎng)頁(yè)及所有資源文件)都有一個(gè)唯一的地址,瀏覽器是通過URL來定位目標(biāo)信息的。URL格式: 協(xié)議類型:/服務(wù)器地址(必要時(shí)需加上端口號(hào))/路徑/文件名 協(xié)
10、議名:/主機(jī)名:端口號(hào)/文件夾名/文件名網(wǎng)址:包括 IP地址和域名地址 IP是主機(jī)的地址,URL是網(wǎng)站資源的地址域名(Domain Name ):(一臺(tái)主機(jī)可以有多個(gè)域名)是由一串用點(diǎn)分隔的名字組成的Internet上某一臺(tái)計(jì)算機(jī)或計(jì)算機(jī)組的名稱 。n 主機(jī)(Host): Internet上的計(jì)算機(jī),此處指服務(wù)器。n 虛擬主機(jī):在一臺(tái)主機(jī)上可建立多個(gè)網(wǎng)站,這些網(wǎng)站的存放方式稱為“虛擬主機(jī)”,通過Web服務(wù)器上設(shè)置“主機(jī)頭”進(jìn)行區(qū)分。 (如果直接輸入IP,則Web服務(wù)器將打開默認(rèn)網(wǎng)站。)n 域名與主機(jī)的關(guān)系:多對(duì)一n 域名的作用:1)方便記憶IP地址;2)作為主機(jī)頭信息識(shí)別請(qǐng)求的網(wǎng)站瀏覽器、WE
11、B服務(wù)器的作用Web服務(wù)器:把用戶通過URL訪問的網(wǎng)頁(yè)傳送到瀏覽器端。對(duì)動(dòng)態(tài)網(wǎng)頁(yè),先解釋執(zhí)行服務(wù)器端程序代碼生成靜態(tài)網(wǎng)頁(yè)代碼,再傳送給客戶端瀏覽器。瀏覽器:解釋html代碼生成用戶看到的網(wǎng)頁(yè)最常用的Web服務(wù)器:Apache,IIS,TomcatDNS(域名系統(tǒng)) 因特網(wǎng)上作為域名和相互映射的一個(gè),能夠使用戶更方便的訪問,而不用去記住能夠被機(jī)器直接讀取的IP數(shù)串。主機(jī)名到IP地址的有兩種方式: 1)靜態(tài)映射, 2)動(dòng)態(tài)映射,HTTP()http協(xié)議請(qǐng)求由三部分組成,分別是:請(qǐng)求行、消息報(bào)頭、請(qǐng)求正文。 協(xié)議的作用是用于從WWW服務(wù)器傳輸超文本到本地瀏覽器的傳輸協(xié)議。它可以使瀏覽器更加高效,使網(wǎng)
12、絡(luò)傳輸減少。它不僅保證計(jì)算機(jī)正確快速地傳輸超文本文檔,還確定傳輸文檔中的哪一部分,以及哪部分內(nèi)容首先顯示(如文本先于圖形)等。HTTP是客戶端瀏覽器或其他程序與器之間的應(yīng)用層通信協(xié)議. HTTP包含命令和傳輸信息,不僅可用于Web訪問,也可以用于其他因特網(wǎng)/內(nèi)聯(lián)網(wǎng)應(yīng)用系統(tǒng)之間的通信,從而實(shí)現(xiàn)各類應(yīng)用資源超媒體訪問的集成。當(dāng)你在瀏覽器的地址框中輸入一個(gè)URL或是單擊一個(gè)超級(jí)鏈接時(shí),URL就確定了要瀏覽的地址。瀏覽器通過超文本傳輸協(xié)議(HTTP),將Web服務(wù)器上站點(diǎn)的網(wǎng)頁(yè)代碼提取出來,并翻譯成漂亮的網(wǎng)頁(yè)。請(qǐng)求的方法(GET、POST、PUT、DELETE)協(xié)議中共定義了八種方法(有時(shí)也叫“動(dòng)作”
13、)來表明Request-URI指定的資源的不同操作方式:GET 向特定的資源發(fā)出請(qǐng)求。注意:GET方法不應(yīng)當(dāng)被用于產(chǎn)生“副作用”的操作中。 POST 向指定資源提交數(shù)據(jù)進(jìn)行處理請(qǐng)求(例如提交表單或者上傳文件)。數(shù)據(jù)被包含在請(qǐng)求體中。POST請(qǐng)求可能會(huì)導(dǎo)致新的資源的建立和/或已有資源的修改。 PUT 向指定資源位置上傳其最新內(nèi)容。 DELETE 請(qǐng)求服務(wù)器刪除Request-URI所標(biāo)識(shí)的資源。 HTMLHyper Text Markup Language超文本鏈接標(biāo)記語(yǔ)言.HTML語(yǔ)言使用標(biāo)簽來指明文檔的不同內(nèi)容.標(biāo)簽描述了文檔的結(jié)構(gòu),它向?yàn)g覽器提供該文檔的格式化信息,以傳送文檔的外觀特征.用
14、HTML語(yǔ)言寫的頁(yè)面是普通的文本文檔,不含任何與平臺(tái)和程序相關(guān)的信息,它們可以被任何文本編輯器讀取圖片標(biāo)簽: 設(shè)定圖框:圖形位置調(diào)節(jié) (左上角留空):圖形附注: 超鏈接標(biāo)簽: 鏈接文字點(diǎn)擊“鏈接文字”可以到達(dá)指定的資源地址表格form標(biāo)簽 get方法(默認(rèn)) 數(shù)據(jù)量少,會(huì)在地址欄顯示數(shù)據(jù) post方法數(shù)據(jù)量多 JSPJSP(Java Server Page)將Java與HTML相結(jié)合,是一種實(shí)現(xiàn)靜態(tài)Html和動(dòng)態(tài)Html混合編碼的技術(shù)。 JSP最終會(huì)被轉(zhuǎn)換成標(biāo)準(zhǔn)的Servlet(JSP的實(shí)質(zhì)仍然是servlet)。 JSP的目的在于簡(jiǎn)化表示層的表示n 服務(wù)器端腳本語(yǔ)言,是以Java和Servl
15、et為基礎(chǔ)的動(dòng)態(tài)網(wǎng)頁(yè)生成技術(shù),它的底層實(shí)現(xiàn)為Servlet.n JSP頁(yè)面由HTML代碼和嵌入其中的Java代碼所組成.n 在頁(yè)面被客戶端請(qǐng)求以后,服務(wù)器對(duì)Java代碼進(jìn)行處理,然后將生成的HTML頁(yè)面返回給客戶端瀏覽器.n 面向?qū)ο?,跨平臺(tái),克服了Servlet缺點(diǎn),通常和JavaBean結(jié)合,將界面表現(xiàn)和業(yè)務(wù)邏輯分離。JSP基本結(jié)構(gòu)JSP和Servlet區(qū)別通俗的講,JSP是往HTML里嵌Java代碼,Servlet是往Java代碼里嵌HTML元素。也就是說,JSP將業(yè)務(wù)層混合到表示層中,而Servlet將表示層混合到業(yè)務(wù)層中。Servlet用來寫業(yè)務(wù)層是很強(qiáng)大的,但是對(duì)于寫表示層就很不方
16、便。JSP則主要是為了方便寫表示層而設(shè)計(jì)的,當(dāng)然也可以寫業(yè)務(wù)層。根據(jù)SUN的推薦,JSP應(yīng)該僅僅存放與表示層有關(guān)的HTML內(nèi)容,而將所有的數(shù)據(jù)計(jì)算,數(shù)據(jù)分析,數(shù)據(jù)庫(kù)連接等業(yè)務(wù)處理在JavaBean中,并通過JSP調(diào)用,實(shí)現(xiàn)兩層的整合(JSP+JavaBean)。 兩者相似之處:均基于Java技術(shù),都繼承了Java的所有特性,且都可以使用JavaAPI;工作方式相似:JSP代碼先被JSP容器轉(zhuǎn)換為Servlet代碼再編譯為類;兩者在J2EE體系結(jié)構(gòu)中的工作層次相同,都負(fù)責(zé)與客戶端的連接兩者區(qū)別:編程方式不同:Servlets是一些運(yùn)行于Web服務(wù)器端的Java小程序;而JSP是腳本,編寫起來更簡(jiǎn)
17、單容易;應(yīng)用目的不同:Servlet主要用于從客戶端接收請(qǐng)求信息,而JSP主要負(fù)責(zé)將服務(wù)器端信息傳送到客戶端;JSP真正意義:可將界面設(shè)計(jì)和業(yè)務(wù)邏輯設(shè)計(jì)分離JSP和Servlet關(guān)系由于HttpServlet大多是用來響應(yīng)HTTP請(qǐng)求,并返回Web頁(yè)面,所以不可避免地,在編寫servlet時(shí)會(huì)涉及大量的HTML內(nèi)容,這給servlet書寫效率和可讀性帶來很大障礙。JSP使用HTML的書寫格式,在適當(dāng)?shù)牡胤郊尤隞ava代碼片斷,將程序員從復(fù)雜的HTML中解放出來,更專注于業(yè)務(wù)處理方面的內(nèi)容。JSP在首次被訪問的時(shí)候被應(yīng)用服務(wù)器轉(zhuǎn)換為servlet,在以后的運(yùn)行中,容器直接調(diào)用這個(gè)servlet,
18、而不再訪問JSP頁(yè)面。JSP執(zhí)行過程JSP執(zhí)行過程JSP頁(yè)面中的HTML標(biāo)記符號(hào)(靜態(tài)部分)交給客戶端瀏覽器直接顯示。服務(wù)器端執(zhí)行之間的Java程序(動(dòng)態(tài)部分),并把執(zhí)行結(jié)果交給客戶端的瀏覽器顯示。 服務(wù)器端還要負(fù)責(zé)處理相關(guān)的JSP標(biāo)記,并將有關(guān)的處理結(jié)果發(fā)送到客戶的瀏覽器。當(dāng)多個(gè)客戶端請(qǐng)求同一個(gè)JSP頁(yè)面時(shí),Tomcat服務(wù)器會(huì)為每個(gè)客戶啟動(dòng)一個(gè)線程,它將負(fù)責(zé)響應(yīng)相應(yīng)的客戶端請(qǐng)求。 JSP調(diào)用Javabean方法答::用于聲明和實(shí)例化javabean類. :用于設(shè)計(jì)javabean的值. :用于獲取javabean中特定propoerty的值MVC模式MVC模式是模式-視圖-控制器”,MVC
19、把一個(gè)應(yīng)用的輸入、處理、輸出流程分成模型層、視圖層、控制層等三個(gè)層JSP頁(yè)面的基本組成:腳本元素(ScriptingElement)(用來嵌入Java代碼,使之成為轉(zhuǎn)換得到的Servlet的一部分)指令(Directive)(為頁(yè)面提供全局信息,如導(dǎo)入語(yǔ)句、錯(cuò)誤處理頁(yè)面等)聲明(對(duì)網(wǎng)頁(yè)全局變量和方法的說明)表達(dá)式(將表達(dá)式格式化包含在頁(yè)面輸出中的一個(gè)串)行為(Action)(引入現(xiàn)有的組件或控制JSP引擎的行為)JSP腳本元素 練習(xí):1:1到100的和=50502:隨機(jī)產(chǎn)生一個(gè) 1100 的整數(shù) i 如果 i=90,則顯示藍(lán)色太好了;其他,則顯示黑色還不錯(cuò)。JSP指令元素(從JSP向Web容器
20、發(fā)送的消息,它用來設(shè)置頁(yè)面的全局屬性).JSP指令格式為: page指令 : include指令 JSP動(dòng)作組件(一些XML語(yǔ)法格式的標(biāo)記,用來控制Web容器的行為。):在頁(yè)面中包含一個(gè)文件(動(dòng)態(tài)或靜態(tài))。:把請(qǐng)求轉(zhuǎn)到另一個(gè)新的頁(yè)面(重定向)。:在動(dòng)作組件中引入?yún)?shù)信息。:設(shè)置JavaBean的屬性。:輸出某個(gè)JavaBean的屬性。:尋找或者實(shí)例化一個(gè)JavaBean。:在頁(yè)面中添加Java Applet小程序。練習(xí):網(wǎng)站時(shí)鐘日期:簡(jiǎn)易購(gòu)物車Servlet(Servlet不是線程而是一個(gè)Java對(duì)象, Servlet不是獨(dú)立的應(yīng)用程序,沒有main方法. Servlet不是由用戶調(diào)用,而是由
21、Servlet容器調(diào)用)什么是ServletServlet是一種獨(dú)立于OS和協(xié)議的服務(wù)器端Java應(yīng)用程序.Servlet能動(dòng)態(tài)響應(yīng)客戶端請(qǐng)求,生成動(dòng)態(tài)的Web頁(yè)面,從而擴(kuò)展服務(wù)器的功能.Servlet由Servlet容器管理(Servlet的運(yùn)行環(huán)境),Tomcat就是一個(gè)常用的Servlet容器。1;是一些運(yùn)行于Web服務(wù)器端的Java小程序. 2:使用HTTP協(xié)議與客戶端進(jìn)行通訊 .3:能夠動(dòng)態(tài)產(chǎn)生(頁(yè)面)內(nèi)容,用來擴(kuò)展Web服務(wù)器功能. 4:繼承了Java的所有特性. (跨平臺(tái)/多線程/OO等) 5:替代其它Web服務(wù)器編程模式(如CGI,ISAPI)。Servlet工作流程客戶端(瀏
22、覽器)向Web服務(wù)器發(fā)送一個(gè)基于HTTP協(xié)議的請(qǐng)求.Web服務(wù)器接收到該請(qǐng)求,并將請(qǐng)求交給Servlet容器處理.Servlet容器根據(jù)Servlet配置來查找或創(chuàng)建Servlet實(shí)例,并執(zhí)行該Servlet,Servlet容器必須把客戶端請(qǐng)求和響應(yīng)封裝成Servlet請(qǐng)求和響應(yīng)對(duì)象傳給Servlet.Servlet使用請(qǐng)求對(duì)象獲取客戶端的信息,比如IP地址、請(qǐng)求的參數(shù)等,并執(zhí)行特定業(yè)務(wù)邏輯;使用響應(yīng)對(duì)象向客戶端發(fā)送業(yè)務(wù)執(zhí)行的結(jié)果.Servlet處理完請(qǐng)求后,Servlet容器要保證Servlet的響應(yīng)能夠發(fā)送到客戶端(flush),最后返回到Web服務(wù)器。Servlet特點(diǎn) 高效 移植性好
23、功能強(qiáng)大Servlet生存周期的三個(gè)階段 初始化init() (一般為空) 請(qǐng)求處理service() 終止destroy()StrutsStruts2的處理流程StrutsPrepareAndExecuteFilter是Struts 2框架的核心控制器,它負(fù)責(zé)攔截由/*指定的所有用戶請(qǐng)求,當(dāng)用戶請(qǐng)求到達(dá)時(shí),該Filter會(huì)過濾用戶的請(qǐng)求。默認(rèn)情況下,如果用戶請(qǐng)求的路徑不帶后綴或者后綴以.action結(jié)尾,這時(shí)請(qǐng)求將被轉(zhuǎn)入Struts 2框架處理,否則Struts 2框架將略過該請(qǐng)求的處理。當(dāng)請(qǐng)求轉(zhuǎn)入Struts 2框架處理時(shí)會(huì)先經(jīng)過一系列的攔截器,然后再到Action。與Struts1不同,
24、Struts2對(duì)用戶的每一次請(qǐng)求都會(huì)創(chuàng)建一個(gè)Action,所以Struts2中的Action是線程安全的。為應(yīng)用指定多個(gè)struts配置文件一個(gè)struts.xml配置文件分解成多個(gè)配置文件,然后在struts.xml文件中包含其他配置文件。下面的struts.xml通過元素指定多個(gè)配置文件:Hibernate表現(xiàn)層(Struts) 業(yè)務(wù)邏輯層(Spring) 持久化層(Hibernate)如何進(jìn)行對(duì)象關(guān)系數(shù)據(jù)庫(kù)的匹配?什么是O/R Mapping?( 對(duì)象-關(guān)系映射)對(duì)象-關(guān)系映射是一門非常實(shí)用的工程技術(shù),它實(shí)現(xiàn)了Java應(yīng)用中的對(duì)象到關(guān)系數(shù)據(jù)庫(kù)中的表的自動(dòng)的(和透明的)持久化,使用元數(shù)據(jù)(
25、meta data)描述對(duì)象與數(shù)據(jù)庫(kù)間的映射O/R Mapping的優(yōu)點(diǎn) 提高生產(chǎn)率 可維護(hù)性 更好性能 廠商獨(dú)立性Hibernate概述 Hibernate是非常優(yōu)秀、成熟的O/R Mapping框架。它提供了強(qiáng)大的對(duì)象和關(guān)系數(shù)據(jù)庫(kù)映射以及查詢功能。優(yōu)勢(shì) 開源(LGPL) 成熟 流行 自定義 API JBoss 將用Hibernate3實(shí)現(xiàn)Entity BeansP152 Hibernate開發(fā)步驟 如何使用Hibernate實(shí)現(xiàn)對(duì)象持久化的過程1創(chuàng)建Configuration對(duì)象。在這一步中主要為了進(jìn)行配置文件的裝載操作,讀取所有的配置文件并進(jìn)行解析2:創(chuàng)建SessionFactory對(duì)象
26、。通過創(chuàng)建好的Configuration對(duì)象可以創(chuàng)建一個(gè)sessionFactory對(duì)象的實(shí)例,同時(shí)是生成Session對(duì)象實(shí)例的工廠,他在整個(gè)應(yīng)用中應(yīng)該是唯一的。3:創(chuàng)建Session對(duì)象。Session對(duì)象類似于數(shù)據(jù)庫(kù)的連接對(duì)象,可以理解為與數(shù)據(jù)庫(kù)建立的一個(gè)連接,但是他的功能要比JDBC中的Connection對(duì)象豐富很多。4:開始一個(gè)事務(wù)。在Java中定義一個(gè)事務(wù)操作的開始,這是使用Hibernate進(jìn)行持久化操作必不可少的步驟5:進(jìn)行持久化操作。在這個(gè)步驟中可以讀取或者保存Java對(duì)象。6:結(jié)束事務(wù)。在操作完成之后還要進(jìn)行顯式的結(jié)束事務(wù)的操作。7:關(guān)閉Session。類似于釋放數(shù)據(jù)庫(kù)的
27、連接。比較一下sessionFactory中的opensession()和getcurrentsession()方法getCurrentSession創(chuàng)建的session會(huì)和綁定到當(dāng)前線程,而openSession不會(huì)。getCurrentSession創(chuàng)建的線程會(huì)在事務(wù)回滾或事物提交后自動(dòng)關(guān)閉,而openSession必須手動(dòng)關(guān)閉持久化類和關(guān)系數(shù)據(jù)庫(kù)的映射: P158 編寫ORM文件,能夠?qū)?shí)體類、表完成映射定義。Hibernate配置的兩種方法:屬性文件(perties)。 Xml文件(hibernate.cfg.xml)。Hibernate核心接口Hiberna
28、te查詢機(jī)制:標(biāo)準(zhǔn)化對(duì)象查詢Criteria Query): Hibernate語(yǔ)言查詢(Hibernate Query Language,HQL): Native SQL Queries(原生SQL查詢)HQL查詢: HQL用面向?qū)ο蟮姆绞缴蒘QL HQL支持所有的關(guān)系數(shù)據(jù)庫(kù)操作1:查詢用戶名以“J”開頭的所有用戶。 Query query = session.createQuery(from User user where like J%);List users = query.list();2:從User和Group中查找屬于“admin”組的所有用戶。Query
29、query = session.createQuery(“from User user where =admin”);SpringSpring是一個(gè)開源的控制反轉(zhuǎn)(Inversion of Control ,IoC)、依賴注入(Dependency Injection,DI)和面向切面(AOP)的容器框架.它的主要目的是簡(jiǎn)化企業(yè)級(jí)應(yīng)用開發(fā).Spring IOC (控制反轉(zhuǎn) )控制反轉(zhuǎn)就是應(yīng)用本身不負(fù)責(zé)依賴對(duì)象的創(chuàng)建及維護(hù),依賴對(duì)象的創(chuàng)建及維護(hù)是由外部容器負(fù)責(zé)的。這樣控制權(quán)就由應(yīng)用轉(zhuǎn)移到了外部容器,控制權(quán)的轉(zhuǎn)移就是所謂反轉(zhuǎn)。Spring就是一個(gè)IOC容器。IOC與D
30、I,說的是一回事,但DI這個(gè)名詞更能表達(dá)這種設(shè)計(jì)模式的思想實(shí)例化spring容器的兩種方式:1:在類路徑下尋找配置文件來實(shí)例化容器 2:在文件系統(tǒng)路徑下尋找配置文件來實(shí)例化容器三種實(shí)例化bean的方式:1.使用類構(gòu)造器實(shí)例化 2.使用靜態(tài)工廠方法實(shí)例化 3.使用實(shí)例工廠方法實(shí)例化依賴注入 (DI) 的方式:使用構(gòu)造器注入 使用屬性setter方法注入 使用Field注入(用于注解方式)注入依賴對(duì)象可以采用手工裝配或自動(dòng)裝配手工裝配的兩種編碼方式: 1. 在xml配置文件中,通過在bean節(jié)點(diǎn)下配置 2. 在java代碼中使用Autowired或Resource注解方式進(jìn)行裝配。實(shí)驗(yàn)一思考題 創(chuàng)
31、建和發(fā)布Web應(yīng)用程序1:與通過內(nèi)置對(duì)象request獲取請(qǐng)求數(shù)據(jù)相比,WordUseBean.jsp頁(yè)面增加了什么類型的標(biāo)簽?分析標(biāo)簽里的內(nèi)容和作用。答:WordUseBean.jsp頁(yè)面增加了標(biāo)簽。是為了創(chuàng)建一個(gè)JavaBean的實(shí)例。包括:id: JavaBean對(duì)象的名稱。Scope: JavaBean的范圍。Class:指定文件位置。2:請(qǐng)?jiān)谇芭_(tái)分別輸入數(shù)值、西文、中文字符串,后臺(tái)是否得到正確的結(jié)果?答:后臺(tái)能顯示正確的結(jié)果。3:請(qǐng)注釋掉語(yǔ)句request.setCharacterEncoding(UTF-8);重復(fù)上面的輸入,你會(huì)看到什么現(xiàn)象?你會(huì)得到什么結(jié)論?答:出現(xiàn)亂碼。req
32、uest.setCharacterEncoding(UTF-8)編碼部分不可以省略。1:總結(jié)用內(nèi)置對(duì)象request與用JavaBean傳遞數(shù)據(jù)各有何特點(diǎn)?答:當(dāng)用戶的信息需要傳遞到新的界面時(shí),我們需要不停地將用戶的信息保存到request對(duì)象中,而且在另外的界面中又要將request中的信息取出來,這樣的過程比較繁瑣,而有了JavaBean,就可以簡(jiǎn)化上述的過程,因?yàn)镴avaBean將信息全部封裝在User對(duì)象中,這樣,我們就可以只存取request一次即可。2與JSP比較Servlet處理靜態(tài)和動(dòng)態(tài)代碼有何不同?由此引申說明后臺(tái)響應(yīng)大多采用Servlet的原因;答:所有的JSP元素都是先由
33、服務(wù)器進(jìn)行處理的,其處理過程是將JSP頁(yè)面轉(zhuǎn)化成Servlet,執(zhí)行Servlet即可,因?yàn)镴SP無法完全傳送給瀏覽器。此外,JSP容器一般來說是以Servlet的形式來處理JSP頁(yè)面,通過配置Servlet可以處理JSP的頁(yè)面。3在MyEclipse集成開發(fā)環(huán)境下,創(chuàng)建Servlet時(shí)為什么使用向?qū)В坑脛?chuàng)建普通類的向?qū)欠窨尚??答:向?qū)Э梢宰詣?dòng)配置web.xml等文件。她是可以手動(dòng)創(chuàng)建的,使用的時(shí)候還要更改web.xml文件中的servlet-name和servlet-mapping等相關(guān)屬性,不是很方便。實(shí)驗(yàn)二思考題 使用Struts快速實(shí)現(xiàn)Web開發(fā)1.Struts完成html form
34、中的input元素值到Bean屬性值填充需要注意什么?答:值為空,不然就會(huì)出現(xiàn)異常。2Struts Action的作用是什么?答:Struts Action可以調(diào)用某一個(gè)java類的其中的一些方法進(jìn)行數(shù)據(jù)處理,之后把處理的結(jié)果放在request中,至于最后的確定的結(jié)果返回給result. 3.視圖的作用是什么?如何在視圖中顯示Action對(duì)象中的Bean屬性值?答:(1)作用:隱藏?cái)?shù)據(jù)的復(fù)雜性;有利于控制用戶對(duì)表中某些列的訪問;使用戶查詢變得簡(jiǎn)單。(2)先在action類中給出屬性的get方法,在頁(yè)面上用struts標(biāo)簽即可.或者是用request(用請(qǐng)求轉(zhuǎn)發(fā)),session.applica
35、tion來setAttrbulite,在頁(yè)面用或者OGNL表達(dá)式類獲取。4Struts枚舉標(biāo)簽中如何引用對(duì)象的值?答:用標(biāo)簽來引用。實(shí)驗(yàn)三思考題 使用Hibernate快速實(shí)現(xiàn)持久層處理1Hibernate主要功能是什么?答: Hibernate是一個(gè)開放源代碼的對(duì)象關(guān)系映射框架,它對(duì)JDBC進(jìn)行了非常輕量級(jí)的對(duì)象封裝,使得Java程序員可以隨心所欲的使用對(duì)象編程思維來操作數(shù)據(jù)庫(kù)??梢栽贘ava的客戶端程序使用;可以在Servlet/JSP的Web應(yīng)用中使用;也可以在應(yīng)用EJB的J2EE架構(gòu)中取代CMP,完成數(shù)據(jù)持久化的重任。Hibernate的核心接口一共有5個(gè),通過這些接口,不僅可以對(duì)持久
36、化對(duì)象進(jìn)行存取,還能夠進(jìn)行事務(wù)控制。2對(duì)象與關(guān)系數(shù)據(jù)庫(kù)表中記錄的映射定義文件的作用是什么?答:易讀,并且可以手工修改。3如何在映射定義文件中描述一對(duì)多、多對(duì)一的關(guān)系?答:一對(duì)多雙向關(guān)聯(lián)的映射方式: 在一的一端的集合上采用標(biāo)簽,在多的一端加入一個(gè)外鍵 ,在多的一端采用標(biāo)簽 多對(duì)一關(guān)聯(lián)映射原理:在多的一端加入一個(gè)外鍵,指向一的一端,在多的一端采用如下標(biāo)簽映射: 4Hibernate會(huì)話工廠類的作用是什么?答:1,用于管理Hibernate會(huì)話(session)的對(duì)象,所以,最簡(jiǎn)單的理解,你可以把sessionFactory想想成里面有一個(gè)DataSource; 2,這個(gè)對(duì)象創(chuàng)建了,hibernat
37、e才真正和數(shù)據(jù)庫(kù)連接上了。即SessionFactory維護(hù)著所有連接對(duì)象已經(jīng)連接對(duì)象的分配和銷毀; 3,SessionFactory是線程安全的,并且創(chuàng)建和銷毀需要消耗比較大的資源,所以整個(gè)應(yīng)用里面針對(duì)一個(gè)數(shù)據(jù)庫(kù)只需要一個(gè)SessionFactory即可; 4,SessionFactory管理著配置在其中的映射對(duì)象的解析數(shù)據(jù),動(dòng)作監(jiān)聽器,NamedQuery等大量信息; 5,SessionFactory里面有一個(gè)二級(jí)緩存,可以提供更大生命周期的緩存策略;實(shí)驗(yàn)四思考題 使用Spring快速實(shí)現(xiàn)Web開發(fā)1Spring主要功能是什么? 答:依賴注入和事物管理2Spring配置文件中,bean的s
38、cope屬性取值prototype,singleton有什么區(qū)別?答:singleton 是單例的,線程是不安全的,變量是共享的,Spring IOC容器中只會(huì)存在一個(gè)共享的bean實(shí)例。 Prototype是非單例的,線程很安全,有獨(dú)立的bean,每訪問一次控制器都會(huì)new一個(gè)新的。3Action、Service、DAO類之間的協(xié)作關(guān)系是如何實(shí)現(xiàn)的?答: DAO是底層與數(shù)據(jù)庫(kù)直接交互的部分,Servive是又對(duì)DAO進(jìn)行了一次封裝,Service又是暴露給action的部分。就是action 里面調(diào)用Service,而 Service又調(diào)用 DAO。4HTML中的FORM INPUT元素名稱
39、與Action類中的屬性名稱的對(duì)應(yīng)關(guān)系是什么?為什么?答:HTML中的FORM INPUT元素名稱是Action類中的屬性的屬性,為了便于對(duì)數(shù)據(jù)的封裝。實(shí)驗(yàn)八思考題 圖書在線銷售系統(tǒng)(二)1、簡(jiǎn)述BookAction.java的browseBookPaging方法中(粗體下劃線標(biāo)出的代碼),通過service層取得本頁(yè)要顯示的圖書信息的實(shí)現(xiàn)思路。答:bookService.getBookByCatalogidPaging(catalogid, currentPage, pager.getPageSize();表示:在BookActoin.java屬于表現(xiàn)層依賴于service層,在browse
40、BookPaging()調(diào)用service層中的bookService類中的getBookByCatalogidPaging(catalogid, currentPage, pager.getPageSize()方法,而bookService層中的 getBookByCatalogidPaging(catalogid, currentPage, pager.getPageSize();方法又依賴于Hibernate層中的BookDAO類。最終由BookDAO類中的 getBookByCatalogidPaging(catalogid, currentPage, pager.getPageSiz
41、e();方法去數(shù)據(jù)庫(kù)中查詢本頁(yè)要顯示的圖書的信息,然后返回給service層,然后service將查詢結(jié)果返回給struts層中的BookAction類中的browseBookPaging()方法,然后browseBookPaging()方法返回SUCCESS字符串,然后在struts配置文件中,根據(jù)結(jié)果返回的SUCCESS字符串,將結(jié)果顯示在browseBookPaging.jsp頁(yè)面中。2、checkout action中購(gòu)物車信息獲取并存儲(chǔ)為訂單的實(shí)現(xiàn)思路。答:在struts.xml配置文件中action的name=”checkout”的action首先會(huì)到shoppingaction.
42、java類中去執(zhí)行checkout()方法,在checkout()方法中首先要獲取user和cart對(duì)象,如果用戶和購(gòu)物車任何一個(gè)為空,就返回error,在struts.xml中根據(jù)返回的error結(jié)果進(jìn)行調(diào)用login.jsp頁(yè)面,如果用戶和購(gòu)物車不為空,就會(huì)創(chuàng)建一個(gè)訂單對(duì)象,然后調(diào)用orderService類中的saveOrder()方法,orderService類依賴于DAO層的orderDAO類,然后orderService類中的saveOrder()方法就調(diào)用orderDAO類中的saveOrder()方法,在orderDAO類中的saveOrder()方法就把這個(gè)訂單存儲(chǔ)在數(shù)據(jù)庫(kù)中
43、去。然后在shopping.java類中的checkout方法就返回success字符串,struts.xml配置文件根據(jù)返回的success字符串,然后去調(diào)用checkout_success.jsp頁(yè)面,最終在checkout_success.jsp頁(yè)面顯示訂單添加成功。實(shí)驗(yàn)八1、實(shí)現(xiàn)圖書分頁(yè)顯示功能。2、實(shí)現(xiàn)購(gòu)物車中的商品結(jié)算功能。1、實(shí)現(xiàn)分頁(yè)信息處理類org.apex.bookstore.util.Pagerpackage org.apex.bookstore.util;public class private int currentPage;private int pageSize=3
44、;private int totalSize;private int totalPage;private boolean hasFirst;private boolean hasprevious;private boolean hasNext;private boolean hasLast;public Pager(int currentPage,int totalSize)this.currentPage=currentPage;this.totalSize=totalSize;public int getCurrentPage() return currentPage;public voi
45、d setCurrentPage(int currentPage) this.currentPage = currentPage;public int getPageSize() return pageSize;public void setPageSize(int pageSize) this.pageSize = pageSize;public int getTotalSize() return totalSize;public void setTotalSize(int totalSize) this.totalSize = totalSize;public int getTotalPage() totalPage=totalSize/pageSize;if(totalSize%pageSize!=0)totalPage+;return totalPage;public void setTotalPage(int totalPage) this.totalPage = totalPage;public boolean isHasFirst(
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年企業(yè)聯(lián)盟運(yùn)營(yíng)管理協(xié)議
- 2025年藥物載體材料項(xiàng)目提案報(bào)告范文
- 2025年高阻隔性封裝材料項(xiàng)目提案報(bào)告
- 2025年生鮮電商項(xiàng)目規(guī)劃申請(qǐng)報(bào)告模板
- 2025年停車服務(wù)授權(quán)協(xié)議范本
- 2025年合作招商協(xié)議范例
- 2025年投資策劃合作協(xié)議書樣本
- 2025年醫(yī)療美容服務(wù)合同范本
- 2025年體育館施工協(xié)作協(xié)議
- 2025年住宅區(qū)綠化工程合同協(xié)議書
- 中建抹灰工程專項(xiàng)施工方案
- 地方融資平臺(tái)債務(wù)和政府中長(zhǎng)期支出事項(xiàng)監(jiān)測(cè)平臺(tái)操作手冊(cè)-單位
- 放射科護(hù)理常規(guī)
- 洗刷書包(課件)三年級(jí)上冊(cè)勞動(dòng)
- 儒釋道文化秒解
- 新時(shí)代中小學(xué)教師職業(yè)行為十項(xiàng)準(zhǔn)則
- 人教版八年級(jí)上冊(cè)英語(yǔ)1-4單元測(cè)試卷(含答案)
- 初中數(shù)學(xué)教學(xué)經(jīng)驗(yàn)分享
- 2024年銀行考試-興業(yè)銀行考試近5年真題附答案
- 高考數(shù)學(xué)導(dǎo)數(shù)知識(shí)題型全歸納專題11導(dǎo)數(shù)壓軸題之隱零點(diǎn)問題(原卷版+解析)
- 2024年公開招聘人員報(bào)名資格審查表
評(píng)論
0/150
提交評(píng)論