在大多數(shù)人來看。Action其實就像是servlet。其實Action是一個輕量級的Java類。Servelt引用ActionMapping列表來選擇對應(yīng)Action來處理。
調(diào)用Action的方法然后返回一個ActionForward.ActionServlet再通過這個ActionForward轉(zhuǎn)發(fā)相應(yīng)請求。
2009年3月2日 #
2009年2月26日 #
昨天學(xué)習(xí)了struts的ActionForm 才知道,原來在struts中ActionForm扮演N多重要角色。
今天學(xué)習(xí)到ActionForward。
下面開始簡述一下自己學(xué)到的心得體會。
在剛開始我理解的請求的轉(zhuǎn)發(fā)和重定向只是有一個區(qū)別,
那就是如果用請求的轉(zhuǎn)發(fā)那么在上下文環(huán)境中儲存的參數(shù)些在轉(zhuǎn)發(fā)的下一個Action或JSP中還能用。
而相反請求的重定向則會把上下文清空。所以那些參數(shù)也不復(fù)存在。
其實在一開始這么理解確實沒有錯的。
這幾天猛然翻起struts的書才發(fā)現(xiàn)。自己懂的還很少。
請求的轉(zhuǎn)發(fā):
請求的轉(zhuǎn)發(fā)實際是在服務(wù)器那端執(zhí)行的。也就是說那些request、session這里里面存放的東西只能在服務(wù)器端訪問。
現(xiàn)在從客戶端發(fā)送一個請求過來,如果在Action中進(jìn)行了請求的重定向,那么struts就會把請求對象傳給下一個Servelt
處理。所以大家在上下文件環(huán)境中保存的參數(shù)都還有。在我們做的程序開發(fā)中差不多全是請求的轉(zhuǎn)發(fā),因為要利用
上下文環(huán)境來傳遞數(shù)據(jù)。因為在請求的轉(zhuǎn)的同時,這一次請求并沒有返回客戶端,只是在服務(wù)器端做了轉(zhuǎn)發(fā)。所以
當(dāng)響應(yīng)回到客戶端的時候,客戶端并不知道服務(wù)器端進(jìn)行過請求的轉(zhuǎn)發(fā)所以在客戶端的地址欄的url不做任何變化。