Struts學(xué)習(xí)筆記(二) 整理了一些Struts入門的一些知識(shí),我個(gè)人認(rèn)為是比較重要和實(shí)用的,整理的還不夠全,在以后對(duì)Struts
的深入學(xué)習(xí)過程中,我會(huì)逐步的將它完善,希望對(duì)熱愛Struts框架的朋友能有一點(diǎn)幫助enjoying^_^
在Java API 中有以下幾個(gè)比較重要的類 他們決定了Web應(yīng)用的請(qǐng)求/響應(yīng)方式各種共享數(shù)據(jù)的存放地點(diǎn): HttpServletRequest:封裝用戶的Http請(qǐng)求,課存放request范圍內(nèi)的共享數(shù)據(jù) HttpServletResponse:用于生成Http響應(yīng)結(jié)構(gòu) HttpSession:Servlet容器為每個(gè)HTTP會(huì)話創(chuàng)建一個(gè)HttpSession實(shí)例,可以存放session范圍的共享數(shù)據(jù) ServletContex: Servlet容器為每個(gè)Web應(yīng)用創(chuàng)建一個(gè)ServletContext實(shí)例,用來存放application范圍的共享數(shù)據(jù)
四種在web組件中共享數(shù)據(jù)的特定范圍: page:用戶請(qǐng)求訪問的當(dāng)前JSP request:用戶請(qǐng)求訪問的當(dāng)前Web組件,以及和當(dāng)前Web組件共享同一個(gè)用戶請(qǐng)求的其他Web組件。如果用戶訪問的時(shí)JSP網(wǎng)頁,那么該JSP網(wǎng)頁的<%include>指令以及<forward>標(biāo)記包含的其他JSP文件也能訪問共享數(shù)據(jù)。 session:整個(gè)HTTP會(huì)話的生存周期 application:Web應(yīng)用的生命周期。
請(qǐng)求重定向與請(qǐng)求轉(zhuǎn)發(fā)的區(qū)別: 請(qǐng)求重定向可以是任何一個(gè)URL,而請(qǐng)求轉(zhuǎn)發(fā)僅限于同一應(yīng)用的URL 重定向的源組件和目標(biāo)組件不共用同一個(gè)HttpServletRequest,一次不能共享request范圍內(nèi)的共享數(shù)據(jù);而請(qǐng)求轉(zhuǎn)發(fā)將ServletRequest和ServletResponse對(duì)象傳遞給目標(biāo)組件,使得目標(biāo)組件可以訪問轉(zhuǎn)發(fā)頁面的整個(gè)請(qǐng)求的上下文(實(shí)現(xiàn)了數(shù)據(jù)共享)。<jsp:forward page=”*.jsp”>/RequestDispatcher.Forward(request,response) response.sendRedirect()
Struts框架:
Struts框架中最核心的組件:ActionServlet(extend javax.servlet.http.HttpServlet) 對(duì)于采用Struts框架的Web應(yīng)用,在Web應(yīng)用啟動(dòng)的時(shí)候回加載并初始花ActionServlet,ActionServlet從struts-config.xml文件中讀取配置信息,把他們存放到各種配置對(duì)象中,例如Action的映射信息存放在ActionMapping對(duì)象中
Struts的工作流程: 當(dāng)ActionServlet接收到一個(gè)客戶請(qǐng)求時(shí)將執(zhí)行如下流程: 1. 檢索和用戶請(qǐng)求匹配的ActionMapping實(shí)例,如果不存在,就返回用戶請(qǐng)求路徑無效的信息。 2. 如果ActionForm實(shí)力不存在,就創(chuàng)建一個(gè),把客戶提交的表單保存帶ActionForm中,在這里你可以進(jìn)行針對(duì)輸入的格式語法等方面的數(shù)據(jù)簡單驗(yàn)證。 3. 由配置信息決定是否需要進(jìn)行表單驗(yàn)證,需要<validate = “true”> 則調(diào)用ActionForm中的validate()方法。 4. 如果ActionForm的validate()返回null則表明成功,返回ActionMessage的ActionErrors對(duì)象就表示失敗。 5. ActionServlet根據(jù)ActionMapping實(shí)例包含的映射信息決定將請(qǐng)求轉(zhuǎn)發(fā)給哪個(gè)Action。如果Action不存在就先創(chuàng)建該實(shí)例,然后調(diào)用氣execute方法。 6. Action的execute()方法返回一個(gè)ActionForward對(duì)象,其再把請(qǐng)求轉(zhuǎn)發(fā)給ActionForward對(duì)象指向的JSP,所以不要忘記在execute方法中去自定義一個(gè)ActionForward的實(shí)例哦。 7. ActionForward對(duì)象指向的JSP組件生成動(dòng)態(tài)網(wǎng)頁,返回結(jié)果給客戶。
訪問封裝在MessageResources中的本地化文本: 將一些常用的輸出信息,或者顯示文本同一放在一個(gè)或多個(gè)自愿文件中然后利用特定的類的實(shí)例來進(jìn)行訪問,不僅清潔了代碼,方便了控制,對(duì)項(xiàng)目的可維護(hù)可移植性也比較有利。 Action類中定義了getResources(HttpServletRequest request)方法,該方法返回當(dāng)前默認(rèn)的MessageResources對(duì)象,它封裝了Resouce Bundle中的文本內(nèi)容??梢哉{(diào)用MessageResouces類的getMessage(String key)方法對(duì)某條資源進(jìn)行訪問。 |
|