Struts2框架技術(shù)入門(mén)_第1頁(yè)
Struts2框架技術(shù)入門(mén)_第2頁(yè)
Struts2框架技術(shù)入門(mén)_第3頁(yè)
Struts2框架技術(shù)入門(mén)_第4頁(yè)
Struts2框架技術(shù)入門(mén)_第5頁(yè)
已閱讀5頁(yè),還剩68頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1Web框架技術(shù)〔Struts2+Hibernate+Spring3〕

2本課程目錄第1章Struts2框架技術(shù)入門(mén)第2章Struts2核心組件詳解第3章Struts2的高級(jí)組件第4章基于Struts2的個(gè)人信息管理系統(tǒng)工程實(shí)訓(xùn)第5章Hibernate框架技術(shù)入門(mén)第6章Hibernate核心組件詳解第7章Hibernate高級(jí)組件第8章基于Struts2+Hibernate的工程實(shí)訓(xùn)第9章Spring3框架技術(shù)入門(mén)第10章Spring3的AOP框架第11章基于SSH的BBS工程實(shí)訓(xùn)3第1章Struts2框架技術(shù)入門(mén)1.1Struts2根底知識(shí)1.2Struts2的核心組件1.3基于Struts2的登錄系統(tǒng)實(shí)例41.1Struts2根底知識(shí)1.1.1Struts2的由來(lái)與開(kāi)展1.1.2Struts2軟件包的下載和配置1.1.3MVC設(shè)計(jì)模式1.1.4Struts2的工作原理51.1.1Struts2的由來(lái)與開(kāi)展Struts是整合了當(dāng)前動(dòng)態(tài)網(wǎng)站技術(shù)中Srvlet、JSP、JavaBean、JDBC、XML等相關(guān)開(kāi)發(fā)技術(shù)根底之上的一種主流Web開(kāi)發(fā)框架,是一種基于經(jīng)典MVC的框架。采用Struts可以簡(jiǎn)化MVC設(shè)計(jì)模式的Web應(yīng)用開(kāi)發(fā)工作,很好地實(shí)現(xiàn)代碼重用,使開(kāi)發(fā)人員從繁瑣的工作中解脫出來(lái),來(lái)開(kāi)發(fā)具有強(qiáng)擴(kuò)展性的Web應(yīng)用。Struts2是JavaWeb工程開(kāi)發(fā)中最經(jīng)典的Web框架技術(shù),受到許多軟件開(kāi)發(fā)人員喜愛(ài)與追捧,是軟件企業(yè)招聘Java軟件人才時(shí)要求必備的技能之一。6Struts是Apache軟件基金會(huì)下Jakarta工程的一局部。從2000年5月開(kāi)始開(kāi)發(fā)Struts,到2001年6月發(fā)布Struts1.0版本。有30多個(gè)開(kāi)發(fā)者參與進(jìn)來(lái),并有數(shù)千人參與到討論組中。到2002年,Struts小組共有9個(gè)志愿團(tuán)隊(duì)。Struts框架的主要架構(gòu)設(shè)計(jì)和開(kāi)發(fā)者是CraigR.McClanahan。Craig也是Tomcat4的主要架構(gòu)師。2007年發(fā)布Struts2.0,與Struts1的體系結(jié)構(gòu)的差異巨大。Struts2以WebWork為核心,采用攔截器的機(jī)制來(lái)處理用戶(hù)的請(qǐng)求,,所以這樣的設(shè)計(jì)也使得業(yè)務(wù)邏輯控制器能夠與ServletAPI完全脫離開(kāi)Struts2可以理解為WebWork的更新產(chǎn)品。71.1Struts2根底知識(shí)1.1.1Struts2的由來(lái)與開(kāi)展1.1.2Struts2軟件包的下載和配置1.1.3MVC設(shè)計(jì)模式1.1.4Struts2的工作原理81.軟件包下載Struts的各版本可在Apache官方網(wǎng)站下載。選擇下載。書(shū)上使用的是,2012年8月發(fā)布。9Struts2的下載101112下載Struts2時(shí)有以下選項(xiàng):〔1〕這是Struts2的完整下載包,內(nèi)容包括Struts2的核心類(lèi)庫(kù)、源代碼、文檔、實(shí)例等,建議選擇該選項(xiàng)?!?〕該包只包含Struts2的實(shí)例,在完整版的Struts2下載包中已經(jīng)包含了該選項(xiàng)中所有實(shí)例。〔3〕該包只包含Struts2的核心類(lèi)庫(kù),在完整版的Struts2下載包中已經(jīng)包含了該選項(xiàng)中所有類(lèi)庫(kù)。〔4〕該包只包含Struts2的相關(guān)文檔,包括使用文檔、參考手冊(cè)和API等,在完整版的Struts2下載包中已經(jīng)包含了該選項(xiàng)中所有文檔?!?〕該包只包含Struts2的源代碼,在完整版的Struts2下載包中已經(jīng)包含了該選項(xiàng)中所有源代碼。132.Struts2軟件包中主要文件14〔1〕apps文件夾:該文件夾中存放基于Struts2的實(shí)例應(yīng)用,這些實(shí)例對(duì)學(xué)習(xí)者來(lái)說(shuō)是非常有用的資料?!?〕docs文件夾:該文件夾中存放Struts2的相關(guān)文檔,Struts2API、Struts2快速入門(mén)等文檔內(nèi)容?!?〕lib文件夾:該文件夾中存放Struts2框架的核心類(lèi)庫(kù)以及Struts2的第三方插件類(lèi)庫(kù)?!?〕src文件夾:該文件夾中存放Struts2框架的全部源代碼。153.Struts2的配置的lib文件夾中有80多個(gè)JAR文件。大多數(shù)情況下,使用Struts2開(kāi)發(fā)JavaWeb應(yīng)用程序并不需要使用到Struts2的全部類(lèi)庫(kù),因此沒(méi)有必要把lib文件夾中的類(lèi)庫(kù)全部配置到工程中。一般只需配置、、、、、、等文件。如果需要使用Struts2的更多特性,需要配置更多l(xiāng)ib文件夾中的JAR文件到工程中。16在MyEclipse中配置Struts2在MyEclipse10.6中也已經(jīng)集成了Struts2的插件,直接使用即可。要在MyEclipse10.6中重新配置Struts2,可在創(chuàng)立工程〔如工程ch01〕后,單擊菜單“MyEclipse”->“ProjectCapabilities”->“AddStrutsCapabilities”,如圖1-22所示,會(huì)彈出如圖1-23所示的對(duì)話框,選擇Struts2.1后彈出另外一個(gè)對(duì)話框,在該對(duì)話框中單擊“Next”,彈出如圖1-24所示對(duì)話框,在其中可以選擇Struts2類(lèi)庫(kù),完成選擇后單擊“翻開(kāi)”,Struts2類(lèi)庫(kù)在MyEclipse工程中的配置即完成。配置完成后,在工程ch01中將自動(dòng)添加一個(gè)Struts2的包,即Struts2CoreLibraries。如需使用Struts2的其它版本,可以導(dǎo)入到該包。171819201.1Struts2根底知識(shí)1.1.1Struts2的由來(lái)與開(kāi)展1.1.2Struts2軟件包的下載和配置1.1.3MVC設(shè)計(jì)模式1.1.4Struts2的工作原理21MVC,如圖1-25所示,是一種目前廣泛流行的軟件設(shè)計(jì)模式,早在70年代,IBM就進(jìn)行了MVC設(shè)計(jì)模式的研究。近來(lái),隨著JavaEE的成熟,它成為在JavaEE平臺(tái)上推薦的一種設(shè)計(jì)模型,是廣闊Java開(kāi)發(fā)者非常感興趣的設(shè)計(jì)模型。隨著網(wǎng)絡(luò)應(yīng)用的快速增加,MVC模式對(duì)于Web應(yīng)用的開(kāi)發(fā)無(wú)疑是一種非常先進(jìn)的設(shè)計(jì)思想,無(wú)論選擇哪種語(yǔ)言,無(wú)論應(yīng)用多復(fù)雜,它都能為理解分析應(yīng)用模型提供最根本的分析方法,為構(gòu)造產(chǎn)品提供清晰的設(shè)計(jì)框架,為軟件工程提供標(biāo)準(zhǔn)的依據(jù)。22MVC模式圖模型視圖控制器狀態(tài)查詢(xún)通知改變狀態(tài)改變視圖選擇用戶(hù)請(qǐng)求方法調(diào)用事件MVC設(shè)計(jì)模式概覽實(shí)現(xiàn)MVC(Model、View、Controller)模式的應(yīng)用程序由3大局部構(gòu)成:模型:封裝應(yīng)用程序的數(shù)據(jù)和業(yè)務(wù)邏輯視圖:實(shí)現(xiàn)應(yīng)用程序的信息顯示功能控制器:接收來(lái)自用戶(hù)的輸入,調(diào)用模型層,響應(yīng)對(duì)應(yīng)的視圖組件POJO(PlainOldJavaObject)JSPServletFilter使用Filter作為控制器的MVC使用Filter作為控制器的好處使用一個(gè)過(guò)濾器來(lái)作為控制器,可以方便地在應(yīng)用程序里對(duì)所有資源(包括靜態(tài)資源)進(jìn)行控制訪問(wèn).<url-pattern>*.action</url-pattern>Servlet能做的Filter是否都可以完成?嗯。Filter能做的Servlet都可以完成嗎?攔截資源卻不是Servlet所擅長(zhǎng)的!Filter中有一個(gè)FilterChain,這個(gè)API在Servlet中沒(méi)有!ServletVSFilter251.1Struts2根底知識(shí)1.1.1Struts2的由來(lái)與開(kāi)展1.1.2Struts2軟件包的下載和配置1.1.3MVC設(shè)計(jì)模式1.1.4Struts2的工作原理26調(diào)用指定某個(gè)Action返回處理結(jié)果HTTP視圖(JSP)控制器FilterDispatcher攔截器1攔截器2攔截器3Action模型JavaBeansstruts.xml獲取配置信息27Struts2中使用攔截器來(lái)處理用戶(hù)請(qǐng)求,從而允許用戶(hù)的業(yè)務(wù)控制器Action與Servlet別離。Struts2的工作原理如圖1-26所示,用戶(hù)請(qǐng)求提交后經(jīng)過(guò)多個(gè)攔截器攔截后交給核心控制器FilterDispatcher處理,核心控制器讀取配置文件struts.xml,根據(jù)配置文件的信息指定某一個(gè)業(yè)務(wù)控制器Action〔POJO類(lèi)〕來(lái)處理用戶(hù)數(shù)據(jù),業(yè)務(wù)控制器調(diào)用某個(gè)業(yè)務(wù)組件進(jìn)行處理,在處理的過(guò)程中可以調(diào)用其他模型組件共同完成數(shù)據(jù)的處理。Action處理完后會(huì)返回給核心控制器FilterDispatcher一個(gè)處理結(jié)果,核心控制器根據(jù)返回的處理結(jié)果讀取配置文件struts.xml,根據(jù)配置文件中的配置,決定下一步跳轉(zhuǎn)到哪一個(gè)頁(yè)面。28一個(gè)客戶(hù)請(qǐng)求在Struts2框架中處理的過(guò)程大概有以下幾個(gè)步驟:客戶(hù)提交請(qǐng)求到效勞器;請(qǐng)求被提交到一系列的過(guò)濾器過(guò)濾后最后到FilterDispatcher;FilterDispatcher是核心控制器,是基于Struts2中MVC模式的控制器局部;FilterDispatcher讀取配置文件struts.xml,根據(jù)配置信息調(diào)用某個(gè)Action來(lái)處理客戶(hù)請(qǐng)求;Action執(zhí)行完畢,返回執(zhí)行結(jié)果,根據(jù)struts.xml的配置找到對(duì)應(yīng)的返回結(jié)果。29第1章Struts2框架技術(shù)入門(mén)1.1Struts2根底知識(shí)1.2Struts2的核心組件1.3基于Struts2的登錄系統(tǒng)實(shí)例301.2Struts2的核心組件1.2.1Struts2的控制器組件1.2.2Struts2的模型組件1.2.3Struts2的視圖組件31Struts2是基于MVC模式的Web框架,Struts2框架按照MVC的思想主要有,控制器層,包括核心控制器FilterDispatcher、業(yè)務(wù)控制器Action;模型層,包括業(yè)務(wù)邏輯組件和數(shù)據(jù)庫(kù)訪問(wèn)組件;視圖組件。321.2.1Struts2的控制器組件在基于MVC的應(yīng)用程序開(kāi)發(fā)中控制器組件的主要功能是,從客戶(hù)端接受數(shù)據(jù)、調(diào)用模型〔JavaBean〕、進(jìn)行數(shù)據(jù)處理以及決定返回給客戶(hù)某個(gè)視圖。Struts2的控制器主要有:核心控制器FilterDispatcher和業(yè)務(wù)控制器Action。331.FilterDispatcher控制器FilterDispatcher是一個(gè)過(guò)濾器,是Struts2的核心控制器,控制著整個(gè)Web工程中數(shù)據(jù)的流向和操作。與Web應(yīng)用程序整合的MVC框架需要web.xml配置文件。基于MVC的Web框架需要在Web應(yīng)用程序中加載一個(gè)核心控制器,Struts2框架需要加載FilterDispatcher,需在web.xml中進(jìn)行配置。除了web.xml配置文件配置核心控制器FilterDispatcher外,Struts2控制數(shù)據(jù)的操作時(shí),還需要Struts2本身的配置文件struts.xml。342.struts.xml配置文件在Struts2中核心的配置文件是struts.xml,用戶(hù)請(qǐng)求提交給核心控制器FilterDispatcher后,具體由那個(gè)業(yè)務(wù)控制器Action來(lái)完成,是struts.xml配置文件中配置的,根據(jù)配置文件struts.xml中的數(shù)據(jù),核心控制器FilterDispatcher調(diào)用某個(gè)業(yè)務(wù)控制器Action來(lái)完成數(shù)據(jù)的處理,處理完數(shù)據(jù)后把處理結(jié)果通過(guò)其他對(duì)象返回給核心控制器FilterDispatcher,核心控制器根據(jù)struts.xml配置文件的數(shù)據(jù),決定下一步的操作。所以Struts2中struts.xml是核心配置文件,在控制器操作中起到關(guān)鍵作用。353.Action控制器Action是Struts2的業(yè)務(wù)控制器,可以不實(shí)現(xiàn)任何接口或者繼承Struts2類(lèi),該Action類(lèi)是一個(gè)根本的Java類(lèi),具有很高的可重用性。Action中不實(shí)現(xiàn)任何業(yè)務(wù)邏輯,只負(fù)責(zé)組織調(diào)度業(yè)務(wù)模型組件。Struts2的Action類(lèi)具有很多優(yōu)勢(shì):Action類(lèi)完全是一個(gè)POJO〔PlainOldJavaObjects〕簡(jiǎn)單的Java對(duì)象,實(shí)際就是普通JavaBean,是為了防止和EJB混淆所創(chuàng)造的簡(jiǎn)稱(chēng),Action具有良好的代碼重用性。Action類(lèi)無(wú)需與Servlet關(guān)聯(lián),降低了與Servlet的耦合度,所以應(yīng)用和測(cè)試比較簡(jiǎn)單。Action類(lèi)的execute()方法僅返回一個(gè)字符串作為處理結(jié)果,該處理結(jié)果可傳到任何視圖或者另外一個(gè)Action。361.2Struts2的核心組件1.2.1Struts2的控制器組件1.2.2Struts2的模型組件1.2.3Struts2的視圖組件371.2.2Struts2的模型組件模型組件可以是實(shí)現(xiàn)業(yè)務(wù)邏輯的模塊,可以是JavaBean、POJO、EJB,在實(shí)際的開(kāi)發(fā)中,對(duì)模型組件的區(qū)別和定義也是比較模糊的,實(shí)際上也超出了Struts2框架的范圍。Struts2框架的業(yè)務(wù)控制器不會(huì)對(duì)用戶(hù)請(qǐng)求進(jìn)行實(shí)質(zhì)的處理,用戶(hù)請(qǐng)求最終由模型組件負(fù)責(zé)處理,業(yè)務(wù)控制器只是提供處理場(chǎng)合,是負(fù)責(zé)調(diào)度的調(diào)度器。38不同的開(kāi)發(fā)者有自己的方式來(lái)實(shí)現(xiàn)模型組件,Struts2框架的目的是使用Action來(lái)調(diào)用模型組件。例如一個(gè)銀行存款的模型組件,代碼如【例1-1】所示。39【例1-1】Bank模型組件〔Bank.java〕40【例1-1】中的代碼是一個(gè)完成某一功能的業(yè)務(wù)邏輯模塊,在執(zhí)行saving(Stringaccounts,Stringmoney)方法時(shí)能夠通過(guò)調(diào)用其他類(lèi)或者直接訪問(wèn)數(shù)據(jù)庫(kù)完成存款功能。使用業(yè)務(wù)控制器Action可以調(diào)用該業(yè)務(wù)邏輯組件在Action的execute()中實(shí)現(xiàn),代碼如【例1-2】所示。【例1-2】BankSavingAction業(yè)務(wù)控制器〔BankSavingAction.java〕411.2Struts2的核心組件1.2.1Struts2的控制器組件1.2.2Struts2的模型組件1.2.3Struts2的視圖組件421.2.3Struts2的視圖組件Struts1視圖組件的構(gòu)成主要有:HTML、JSP和Struts1標(biāo)簽,Struts2視圖組件除了有HTML、JSP、Struts2標(biāo)簽外,還有模板技術(shù)作為視圖技術(shù),如FreeMarker、Velocity等視圖技術(shù)。431.HTML和JSPHTML和JSP是開(kāi)發(fā)基于Struts2視圖組件的主要技術(shù)。442.Struts2標(biāo)簽Struts2框架提供了功能強(qiáng)大的標(biāo)簽庫(kù),使用Struts2標(biāo)簽庫(kù)開(kāi)發(fā)視圖,可以使頁(yè)面更整潔,簡(jiǎn)化頁(yè)面輸出,支持更加復(fù)雜而豐富的功能且頁(yè)面易維護(hù),減少代碼量和開(kāi)發(fā)時(shí)間。453.FreemakerFreemaker是一個(gè)“模板引擎”,是一個(gè)基于模板技術(shù)的生成文本輸出的一個(gè)通用工具。它是一個(gè)Java的包,使用純Java編寫(xiě),是Java程序員可以使用的類(lèi)庫(kù)。本身并不是一個(gè)對(duì)最終用戶(hù)的應(yīng)用程序。但是,程序員可以把它應(yīng)用到他們的產(chǎn)品中。FreeMarker是設(shè)計(jì)為可以生成Web頁(yè)面〔JSP〕。它是基于Servlet遵循MVC模式的應(yīng)用,MVC模式能夠使網(wǎng)頁(yè)設(shè)計(jì)人員和程序員的耦合減少。每個(gè)人都可以做他們擅長(zhǎng)的工作,網(wǎng)頁(yè)設(shè)計(jì)人員可以改變網(wǎng)頁(yè)的面貌,而并不需要程序員的重新編譯,因?yàn)闃I(yè)務(wù)邏輯和頁(yè)面的設(shè)計(jì)已經(jīng)被別離開(kāi)了。模板是不能由復(fù)雜的程序片斷組成的,即便網(wǎng)頁(yè)設(shè)計(jì)人員和程序員是一個(gè)人,別離是有必要的,它能使程序更加的靈活和清晰。雖然Freemarker能編程,但是它并不是一個(gè)編程語(yǔ)言,它是為程序顯示數(shù)據(jù)而準(zhǔn)備的。Freemarker僅僅是利用模板加上數(shù)據(jù)生成文本頁(yè)面。能用來(lái)生成任意格式的文本,如HTML,XML,Java源碼等等。Freemarker并不是一個(gè)Web應(yīng)用程序框架,可以說(shuō)是一個(gè)Web應(yīng)用框架的一個(gè)視圖組件。Freemarker下載地址為:。464.VelocityVelocity是一個(gè)開(kāi)放源嗎的“模版引擎”,由小組負(fù)責(zé)開(kāi)發(fā),現(xiàn)在最新的版本是Velocity1.7,可以到其官方網(wǎng)站上可以了解Velocity的最新信息。Velocity是一個(gè)基于Java的模版引擎。它允許Web頁(yè)面設(shè)計(jì)者引用Java代碼預(yù)定義的方法。Web設(shè)計(jì)者可以根據(jù)MVC模式和Java程序員并行工作,這意味著Web設(shè)計(jì)者可以單獨(dú)專(zhuān)注于設(shè)計(jì)良好的站點(diǎn),而程序員那么可單獨(dú)專(zhuān)注于編寫(xiě)底層代碼。Velocity將Java代碼從Web頁(yè)面中別離出來(lái),使站點(diǎn)在長(zhǎng)時(shí)間運(yùn)行后仍然具有很好的可維護(hù)性,并提供了一個(gè)除JSP和PHP之外的可行的被選方案。Velocity可用來(lái)從模板產(chǎn)生Web頁(yè)面,SQL以及其他輸出。它也可用于一個(gè)獨(dú)立的程序以產(chǎn)生源代碼和報(bào)告,或者作為其他系統(tǒng)的一個(gè)集成組件。這個(gè)工程完成后,Velocity將為應(yīng)用程序框架提供模板效勞。Velocity的模板語(yǔ)言非常簡(jiǎn)單,它并沒(méi)有復(fù)雜的數(shù)據(jù)類(lèi)型和語(yǔ)法結(jié)構(gòu),即使沒(méi)有編程經(jīng)驗(yàn)的讀者也可以輕松地掌握。47第1章Struts2框架技術(shù)入門(mén)1.1Struts2根底知識(shí)1.2Struts2的核心組件1.3基于Struts2的登錄系統(tǒng)實(shí)例481.3基于Struts2的登錄系統(tǒng)實(shí)例1.3.1使用NetBeans7開(kāi)發(fā)工程1.3.2使用MyEclipse10開(kāi)發(fā)工程1.3.3使用Eclipse開(kāi)發(fā)工程49本節(jié)通過(guò)使用NetBeans7、MyEclipse9和Eclipse來(lái)開(kāi)發(fā)簡(jiǎn)單的登錄系統(tǒng),從而掌握如何使用它們開(kāi)發(fā)基于Struts2的Web工程。使用基于Struts2開(kāi)發(fā)主要經(jīng)過(guò)以下步驟:〔1〕在web.xml中配置核心控制器FilterDispatcher;〔2〕設(shè)計(jì)和編寫(xiě)視圖組件,如使用JSP編寫(xiě)頁(yè)面;〔3〕編寫(xiě)視圖組件對(duì)應(yīng)的業(yè)務(wù)控制器組件Action;〔4〕配置業(yè)務(wù)控制器Action,即修改struts.xml配置文件,配置Action;〔5〕在struts.xml配置文件文件中配置處理結(jié)果與對(duì)應(yīng)視圖跳轉(zhuǎn)關(guān)系。Action調(diào)用模型組件〔業(yè)務(wù)邏輯組件〕處理后返回處理結(jié)果,根據(jù)處理結(jié)果進(jìn)行下一步頁(yè)面跳轉(zhuǎn)。頁(yè)面的下一怎么調(diào)轉(zhuǎn)都是事先在struts.xml配置文件中配置好的。501.3.1使用NetBeans7開(kāi)發(fā)工程1.工程介紹該工程為登錄系統(tǒng),工程有一個(gè)登錄頁(yè)面〔login.jsp〕,代碼如【例1-4】所示;登錄頁(yè)面對(duì)應(yīng)的業(yè)務(wù)邏輯組件LoginBean類(lèi)代碼如【例1-6】,對(duì)應(yīng)的業(yè)務(wù)控制器LoginAction類(lèi),代碼如【例1-7】所示;如果登錄成功〔用戶(hù)名、密碼正確〕跳轉(zhuǎn)到success.jsp頁(yè)面,代碼如【例1-5】所示;如果登錄失敗〔用戶(hù)名、密碼不正確〕那么重新回到登錄頁(yè)面〔login.jsp〕。此外還需要配置web.xml,代碼如【例1-3】所示;配置struts.xml文件的代碼如【例1-8】所示。工程的文件結(jié)構(gòu)如圖1-27所示。51522.在web.xml中配置核心控制器FilterDispatcher在使用NetBeans7.2開(kāi)發(fā)基于Struts2的Web工程時(shí),如果新建工程時(shí)在如圖1-14所示步驟中選擇了“Struts2”,那么在新建工程的“WEB-INF”文件夾下,NetBeans7.2會(huì)自動(dòng)創(chuàng)立一個(gè)web.xml,所以使用NetBeans7.2中的Struts2插件時(shí),web.xml中的核心控制器FilterDispatcher是自動(dòng)配置好的。web.xml的代碼如【例1-3】所示。如果沒(méi)有使用該插件新建工程,需要程序員自己配置web.xml,代碼如【例1-3】所示。53【例1-3】在web.xml中配置核心控制器〔web.xml〕<?xmlversion="1.0"encoding="UTF-8"?><web-appversion="3.0"xmlns="://java.sun/xml/ns/javaee"xmlns:xsi=":///2001/XMLSchema-instance"://java.sun/xml/ns/javaee/web-app_3_0.xsd"><filter><!--配置Struts2核心控制器的名稱(chēng)--><filter-name>struts2</filter-name> <!--配置Struts2核心控制器的類(lèi)--><filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class></filter><filter-mapping> <!--Struts2控制器的名稱(chēng)--><filter-name>struts2</filter-name> <!--攔截所有URL請(qǐng)求--><url-pattern>/*</url-pattern></filter-mapping>54 <!--指定默認(rèn)的會(huì)話超時(shí)時(shí)間間隔,以分鐘為單位--><session-config><session-timeout>30</session-timeout></session-config> <!--配置默認(rèn)的訪問(wèn)界面--><welcome-file-list><welcome-file>example/HelloWorld.jsp</welcome-file></welcome-file-list></web-app>553.編寫(xiě)視圖組件〔JSP頁(yè)面〕編寫(xiě)一個(gè)如圖1-28所示的登錄頁(yè)面。56【例1-4】登錄頁(yè)面〔login.jsp〕<%@pagecontentType="text/html"pageEncoding="UTF-8"%><html><head><meta-equiv="Content-Type"content="text/html;charset=UTF-8"><title>基于Struts2的登錄系統(tǒng)應(yīng)用</title></head><body><formmethod="post"action="login">用戶(hù)名:<inputname="userName"type="text"size="24"><br>密碼:<inputname="password"type="password"size="26"><br><inputtype="submit"value="登錄"></form><hr></body></html>57【例1-5】登錄成功頁(yè)面〔success.jsp〕<%@pagecontentType="text/html"pageEncoding="UTF-8"%><html><head><meta-equiv="Content-Type"content="text/html;charset=UTF-8"><title>登錄成功頁(yè)面</title></head><body><h1>你登錄成功,歡送你!</h1></body></html>584.編寫(xiě)登錄頁(yè)面對(duì)應(yīng)的業(yè)務(wù)邏輯組件JavaBean登錄頁(yè)面使用的業(yè)務(wù)邏輯組件LoginBean類(lèi),代碼如【例1-6】。【例1-6】登錄頁(yè)面的業(yè)務(wù)邏輯組件〔LoginBean.java〕packageloginBean;publicclassLoginBean{privateStringuserName;privateStringpassWord;publicStringgetUserName(){returnuserName;}publicvoidsetUserName(StringuserName){this.userName=userName;}publicStringgetPassWord(){returnpassWord;}publicvoidsetPassWord(StringpassWord){this.passWord=passWord;}59//處理用戶(hù)登錄的方法

publicbooleanlogin(StringuserName,StringpassWord){booleanb=false;if(userName.equals("QQ")&&passWord.equals("123")){b=true;returnb; } else{b=false;returnb; }}}605.編寫(xiě)業(yè)務(wù)控制器Action為了處理視圖的業(yè)務(wù)邏輯,一般每個(gè)視圖都會(huì)對(duì)應(yīng)一個(gè)業(yè)務(wù)控制器Action。login.jsp對(duì)應(yīng)的業(yè)務(wù)控制器如【例1-7】所示的LoginAction類(lèi),該類(lèi)就是一個(gè)普通的Java類(lèi)?!纠?-7】登錄頁(yè)面〔login.jsp〕對(duì)應(yīng)的業(yè)務(wù)控制器〔LoginAction.java〕packageloginAction;importloginBean.LoginBean;publicclassLoginAction{privateStringuserName;privateStringpassWord;publicStringgetUserName(){returnuserName;}publicvoidsetUserName(StringuserName){this.userName=userName;}61publicStringgetPassWord(){returnpassWord;}publicvoidsetPassWord(StringpassWord){this.passWord=passWord;}

publicStringexecute()throwsException{LoginBeanlb=newLoginBean();if(lb.login(userName,passWord)) {return"success"; } else{return"error"

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論