freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于ssh企業(yè)人力資源管理系統(tǒng)(編輯修改稿)

2024-12-22 16:51 本頁面
 

【文章內(nèi)容簡介】 ,并且開發(fā)出了很多成熟的產(chǎn)品,使用這些成熟的應(yīng)用軟件開發(fā),可以跳過以前C/S 模式下的許多底層開發(fā)工作,節(jié)省很多工作量。 強(qiáng)大的跨平臺(tái)能力。由于使用瀏覽器作為客戶端,而客戶端對于服務(wù)器端采用何種技術(shù),何種網(wǎng)絡(luò)沒有要求,只要符合網(wǎng)絡(luò)協(xié)議就能通訊工作了。同時(shí),因?yàn)椴捎玫氖悄壳肮_的協(xié)議和標(biāo)準(zhǔn),任何其他采用相同的協(xié)議的系統(tǒng)都可以互聯(lián)互通,具有良好的開放性和擴(kuò)充性。 Web層框 架 Struts 介紹 Struts 是 Apache 基金會(huì) Jakarta 項(xiàng)目組的一個(gè)開放源代碼項(xiàng)目,它是一個(gè)基于 MVC 設(shè)計(jì)模式的 Web 應(yīng)用框架的具體實(shí)現(xiàn)。 Struts 的體系結(jié)構(gòu)(圖 32)與JSP Model 2 有很大的相似性,它有自己特定的一組相互協(xié)作的類來完成對應(yīng)的功能。 圖 32 Struts框架模式圖 根據(jù)上圖中顯示的流程,一個(gè)采用 Struts 框架開發(fā)的 Web 應(yīng)用的基本流程如下。控制器類 ActionServlet 接收來自客戶端瀏覽器的各種請求,根據(jù)配置文件“ ”,對客戶 請求進(jìn)行相應(yīng)的處理。針對一個(gè)特定的請求,ActionServlet 自動(dòng)接收請求表單中的信息填充對應(yīng)的 ActionForm Bean,然后分配請求給相關(guān)的 Action 對象執(zhí)行業(yè)務(wù)邏輯的處理。 Action 對象在調(diào)用方法處理請求的過程中,將調(diào)用相關(guān)的模型組件,最后返回控制權(quán),由 ActionServlet負(fù)責(zé)將處理結(jié)果的視圖響應(yīng)返回給客戶端。另一種可能的情形,如客戶端表單信息在沒有通過數(shù)據(jù)驗(yàn)證的情況下, ActionServlet 類可能將接收到的客戶請求直接轉(zhuǎn)發(fā)給相關(guān)的 JSP 視圖文件進(jìn)行處理,然后返回響應(yīng)給客戶端,要 求客戶端重 11 新提交符合數(shù)據(jù)驗(yàn)證的信息。 Struts 的主要組件 類 ActionServlet 類在 Struts 框架中扮演核心控制器的角色,職責(zé)就是要把HTTP 消 息 打 包 起 來 并 傳 送 到 框 架 中 合 適 的 處 理 器 。 它 擴(kuò) 展 了 類,實(shí)現(xiàn)了 HttpServlet 類的 init()、doGet()/doPost()以及 destroy()方法,此外它還包括一個(gè)特殊的 process()方法,而正是這個(gè)方法來處理接收到的客戶請求并作出響應(yīng)。 process()方法的聲明格式如下: protected void process( request, response )throws ,{ …… } ActionServlet 的 process()方法并不復(fù)雜,在運(yùn)行過程中,它首先獲取一個(gè) RequestProcessor 對象,實(shí)際上對客戶端請求進(jìn)行處理是由RequestProcessor 對象的 process()方法,也就是說控制器的執(zhí)行邏輯是直接體現(xiàn)在了 RequestProcessor 類中,而 ActionServlet 是借助 RequestProcessor 間接的實(shí)現(xiàn)控制請求。 、 ActionMapping類和 ActionForward類 Struts框架中的 Action類是控制器組件的一個(gè)擴(kuò)展,如同一座橋梁,它可以把用戶的動(dòng)作與一個(gè)業(yè)務(wù)操作連接起來。 Action 類使客戶端請求和業(yè)務(wù)模型松散耦合 ,這種松散耦合讓請求和 Action 類不再局限于一對一的對應(yīng)關(guān)系。作為一個(gè)執(zhí)行業(yè)務(wù)操作的類,Action 包含了多個(gè)方法,但其中的 execute()方法是它最重要的方法。它的聲明結(jié)構(gòu)如下: public ActionForwrad execute( ActionMapping mapping, ActionForm form, HttpServletRequest request, 12 HttpServletResponse response)throws Exception{ …… } 當(dāng)控制器收到請求交給相關(guān)的 Action 類進(jìn)行處理,必然會(huì)調(diào)用到 execute()方法。如果 Action 類的實(shí)例對象不存在,控制器就會(huì)創(chuàng)建一個(gè) Action 類的實(shí)例??墒钱?dāng)控制器接收到一個(gè)具體的客戶端請求時(shí),如何選擇調(diào)用一個(gè)符合要求的Action 實(shí)例呢?其實(shí)通過 execute()方法可以找到一些線索,該方法的第一個(gè)參數(shù)ActionMapping 類提供了完成這種動(dòng)作映射的功能。 ActionMapping 對象包括了一個(gè) path 屬性,用來與外部請求的 URI 匹配。最后再研究一下 execute()方法的返回類型 ActionForward。當(dāng)控制器 收到請求并找到正確的 Action 類實(shí)例予以調(diào)用后,它的返回值是一個(gè) ActionForward 對象。 ActionForward 類所表示的是一個(gè)目標(biāo),也就是在 Action 完成之后,控制器要轉(zhuǎn)交控制權(quán)的地方。此時(shí)不是在程序代碼中指定實(shí)際的 JSP 視圖頁面,而是以聲明的方式把某個(gè)動(dòng)作的轉(zhuǎn)發(fā)映射與JSP 頁面相關(guān)聯(lián),即一個(gè)經(jīng)過定義的 ActionForward 對象,然后在應(yīng)用系統(tǒng)中使用這個(gè) ActionForward 對象。 類和 DynaActionForm 類 ActionForm 類是 Struts 框架中 的一種系統(tǒng)狀態(tài) Bean,用來實(shí)現(xiàn)應(yīng)用系統(tǒng)的非持久性數(shù)據(jù)存儲(chǔ)和維護(hù)功能。簡單來講,這種類型的對象用于保存客戶請求表單中的數(shù)據(jù)。 Struts 框架會(huì)將這些包含客戶端提交的數(shù)據(jù)的 Form Bean 交給合適的 Action對象,執(zhí)行業(yè)務(wù)邏輯的處理。應(yīng)用系統(tǒng)中的 ActionForm擴(kuò)展自 Struts API中定義的抽象類 ,現(xiàn)自動(dòng)被填充屬性和調(diào)用機(jī)制。因此,根據(jù)應(yīng)用定義的 ActionForm Bean 類中包含的屬性必須和客戶表單數(shù)據(jù)屬性同名,相應(yīng)的屬性存 取方法也要按照屬性名規(guī)范定義。 此外, ActionForm 類還包含兩個(gè)重要的方法, reset()和 validate(),它們的作用是實(shí)現(xiàn)屬性重置和表單數(shù)據(jù)驗(yàn)證功能,在應(yīng)用系統(tǒng)開發(fā)過程中 可以根據(jù)實(shí)際需要對這兩個(gè)方法進(jìn)行重寫。 在設(shè)計(jì) ActionForm Bean 的過程中有一點(diǎn)需要著重強(qiáng)調(diào),控制器在把客戶端請求中的表單數(shù)據(jù)填入 ActionForm 實(shí)例之前,會(huì)先調(diào)用 reset()方法,讓ActionForm 將其屬性值設(shè)置回原來的默認(rèn)狀態(tài)。但是,因?yàn)?ActionForm Bean 實(shí)例可能會(huì)由許多個(gè)請求共享或者由好幾 個(gè)不同線程所訪問,所以,如果是讓多個(gè) 13 頁面共享一個(gè) ActionForm 實(shí)例,就不用去重寫 reset()方法,因?yàn)槟菢訒?huì)使屬性值丟失。 Struts 的配置文件 基于 Struts 框架開發(fā)的應(yīng)用程序的配置主要是在兩個(gè)配置文件中進(jìn)行的,一個(gè)是通用性的,使用于所有 Web 應(yīng)用程序的部署文件 ,另一個(gè)是 Struts專用的配置文件 。 文件 文件可以用來配置 ActionServlet,設(shè)置歡迎文件列表,配置用戶標(biāo)記庫和對錯(cuò)誤處理頁面的設(shè)置 等等。下面是一個(gè)簡單的 文件示例。 !Action Servlet Configuration Servlet Servletnameaction/Servletname Servletclass/Servletclass initparam paramnameconfig/paramname paramvalue/WEBINF/conf//paramvalue /initparam loadonstartup1/loadonstartup /Servlet !Action Servlet Mapping Servletmapping Servletnameaction/Servletname urlpattern*.do/urlpattern /Servletmapping welefilelist welefile/welefile /welefilelist 在這段示例代碼中,首先用 Servlet元素配置 ActionServlet 實(shí)例。它的子元素 Servletname和 Servletclass分別用來指定該 Servlet 的名字和所屬類的類名。 initparam設(shè)定了 Servlet 所需的初始化參數(shù)。 loadonstartup元素用于標(biāo)明應(yīng)用程序啟動(dòng)時(shí),即在接收到任何客戶端請求之前,創(chuàng)建該 Servlet 實(shí)例的數(shù) 14 目,缺省為 0 個(gè)。這樣處理可以提高應(yīng)用程序第一次被調(diào)用時(shí)的響應(yīng)速度,創(chuàng)建實(shí)例過多會(huì)增大服務(wù)器端開銷。 接著,代碼中依靠 Servletmapping元素配置了相應(yīng)的映射關(guān)系,它指定了請求 URI和 ActionServlet間的映射關(guān)系。在示例中表明的映射關(guān)系是所有以“ .do”結(jié)尾的頁面請求都會(huì)交給名為 action 的 ActionServle 來處理。而welefilelist元素主要用來設(shè)定應(yīng)用系統(tǒng)的默認(rèn)頁。 總體來看, 文件的主要功能就是為 Struts 框架配置 ActionServlet 和標(biāo)簽庫。 配置文件是整個(gè) Struts 框架的核心。在 基于 Struts 構(gòu)建的Web 應(yīng)用系統(tǒng)中,它負(fù)責(zé)組合各個(gè)組件,建立應(yīng)用程序的總體脈絡(luò),可以說該文件的作用相當(dāng)于一個(gè)大型項(xiàng)目開發(fā)運(yùn)行過程中的控制調(diào)配中心。 圖 33 Struts組件應(yīng)用圖 圖 33 顯示了 文件是如何組織各個(gè)組件一起工作的。當(dāng)應(yīng)用系統(tǒng)啟動(dòng)時(shí),首先會(huì)從 文件中讀取相關(guān)的配置信息。視圖組件 JSP、控制器組件 ActionServlet和業(yè)務(wù)邏輯組件之間沒有代碼上的聯(lián)系,它們之間的關(guān)系都是在 中聲明。 系統(tǒng)所采用的設(shè)計(jì)模式 設(shè)計(jì)模式的思想認(rèn)為在系統(tǒng)設(shè)計(jì)這一層次上,軟件開發(fā)可以抽象成一種模式,模式描述了系統(tǒng)面臨的問題及其解決方案,并可以重用。每一個(gè)模式描述了 15 一個(gè)在開發(fā)者做設(shè)計(jì)時(shí)不斷重復(fù)遇到的問題,以及該問題的解決方案的核心。這樣,開發(fā)者就能一次又一次地使用該方案而不必做重復(fù)勞動(dòng)。概括說來,設(shè)計(jì)模式的核心在于提供了相關(guān)問題的解決方案。 另一方面,隨著對軟件功能要求的提高,以及應(yīng)用系統(tǒng)所涉及范圍的不斷擴(kuò)展,采用傳統(tǒng)的 Web 體系結(jié)構(gòu)在代碼的移植、程序的可擴(kuò)展性方面產(chǎn)生了眾多問題。引入設(shè)計(jì)模式的思想就是要在開 發(fā)過程中最大限度的實(shí)現(xiàn)“重用”,包括代碼的重用、設(shè)計(jì)的重用、資源的重用等等,從而高效率、高質(zhì)量的進(jìn)行開發(fā)。就如同一個(gè)建筑設(shè)計(jì)師要設(shè)計(jì)一棟商用寫字樓,一定會(huì)借鑒許多在商用設(shè)計(jì)樓方案中成功的設(shè)計(jì)經(jīng)驗(yàn)一樣,軟件設(shè)計(jì)領(lǐng)域中的設(shè)計(jì)模式則是對以往成功軟件設(shè)計(jì)方式的重用,是對專業(yè)軟件開發(fā)人員技術(shù)和經(jīng)驗(yàn)的重復(fù)利用。 一個(gè)成熟的設(shè)計(jì)模式,必然針對特定問題提供了比較完善的解決方案,對模式中各個(gè)組成部分的相互關(guān)系及協(xié)作分工進(jìn)行了具體的描述,并將模式應(yīng)用的效果及意義展現(xiàn)給使用者??傊言O(shè)計(jì)模式運(yùn)用到 Web 應(yīng)用體系中是為了更好的完 成一個(gè)具體的應(yīng)用系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn),達(dá)到事半功倍的效果。 JSP Model 1 早期在 J2EE 平臺(tái)下進(jìn)行 Web 應(yīng)用開發(fā)經(jīng)歷了兩種設(shè)計(jì)模式,分別是 JSP Model 1(圖 34)和 JSP Model 2。 圖 34 JSP Model1 模型圖 在 Model 1 中, JSP 頁面中結(jié)合業(yè)務(wù)邏輯、服務(wù)器端處理程序和 HTML 代碼,在 JSP 頁面中同時(shí)處理顯示、業(yè)務(wù)邏輯和流程控制。換言之, Model 1 是一個(gè)以JSP 文件為核心的模式。它的優(yōu)點(diǎn)在于模型簡單靈活,實(shí)現(xiàn)起來方便快捷。對于開發(fā)小型的應(yīng)用, Model 1 是首選??墒菍τ诖笮偷膹?fù)雜的項(xiàng)目,當(dāng) JSP 文件在 16 各個(gè) Bean 組件之間面臨復(fù)雜的調(diào)用之時(shí)(如圖 34 中虛線所示),組件關(guān)系在管理上就顯得混亂無序,使得無論是代碼還是邏輯設(shè)計(jì)都很難實(shí)現(xiàn)重用。 JSP Model 2 由于 Model 1 存在復(fù)用性低、維護(hù)成本高昂等不足,為了克服在開發(fā)大型應(yīng)用中 Model 1 的這些缺陷, JSP Model 2(圖 3- 5)作為一種新的設(shè)計(jì)模式被引入到 Web 應(yīng)用的開發(fā)中來。 Model 1 雖然將一部分業(yè)務(wù)邏輯放到了 JavaBean 中實(shí)現(xiàn),在一定程度上降低了頁面顯示和邏 輯處理的耦合度,但是 JSP 頁面本身依然充當(dāng)了顯示和控制兩種角色,使得控制邏輯代碼和表示層代碼混雜在了一起。大量實(shí)現(xiàn)控制邏輯的代碼將會(huì)使整個(gè) JSP 頁面變得異常臃腫,而 Model 2 加入了Servlet 來專門實(shí)現(xiàn)控制和分配請求的功能。 圖 35 JSP Model 2 模型圖 在 Model 2 這個(gè)模型中,各個(gè)組成部分的分工如下。 JSP 技術(shù)用于表現(xiàn)頁面,Servlet 技術(shù)負(fù)責(zé)完成大量的業(yè)務(wù)處理, JavaBean 用來存儲(chǔ)數(shù)據(jù)。當(dāng)接收到來自客戶端瀏覽器的請求時(shí), Servlet 充當(dāng)一個(gè)控制者的角色處理這些請求;它根 據(jù)需要實(shí)例化視圖 JSP 需要的 Bean 對象,然后執(zhí)行與用戶請求行為相關(guān)的業(yè)務(wù)邏輯,最終決定將對應(yīng)的 JSP 視圖頁面發(fā)送給客戶。通過對 Model 1 和 Model 2 的比較可以發(fā)現(xiàn),兩者最主要的差別在于它們處理請求的方式,即采用哪個(gè)組件來對客戶端
點(diǎn)擊復(fù)制文檔內(nèi)容
醫(yī)療健康相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1