詳解Struts2中Action訪(fǎng)問(wèn)Servlet API的幾種方法
詳解Struts2中Action訪(fǎng)問(wèn)Servlet API的幾種方法
在通常的web開(kāi)發(fā)中Request和Response對(duì)象比較常見(jiàn),但在Struts2框架中由于Action能與JSP頁(yè)面進(jìn)行數(shù)據(jù)交互,所以通常都不會(huì)用到這兩個(gè)對(duì)象。如果想在Struts2程序中用到這兩個(gè)對(duì)象,也有解決方法
Struts2的Action并未直接與任何Servlet API耦合,這是Struts2的一個(gè)改良之處,因?yàn)锳ction類(lèi)不再與Servlet API耦合,能更輕松的測(cè)試該Action。但如何訪(fǎng)問(wèn)?
Web應(yīng)用中通常需要訪(fǎng)問(wèn)的Servlet API就是HttpServletRequest、HttpSession、ServletContext這3個(gè)類(lèi),分別代表JSP內(nèi)置對(duì)象中的request、session、application。
方法一:(一般推薦使用,IOC方式,只能獲得request,而response則得不到)
Struts2提供了ActionContext類(lèi),通過(guò)ActionContext類(lèi)訪(fǎng)問(wèn)Servlet API。
下面是ActionContext類(lèi)中包含的幾個(gè)常用方法。
1、public Object get(Object key):取得HttpServletRequest中key的值;
2、void put(String key,Object value):設(shè)置HttpServletRequest中key的值為value;
3、public Map getApplication():獲取封裝了ServletContext的Map對(duì)象;
4、void setApplication(Map application):設(shè)置ServletContext實(shí)例;
5、static ActionContext getContext():靜態(tài)方法,獲取系統(tǒng)的ActionContext實(shí)例;
6、Map getParameters():類(lèi)似于HttpServletRequest中的getParametersMap方法;
7、public Map getSession():獲取封裝了HttpSession的Map對(duì)象;
8、void setSession(Map session):直接傳入一個(gè)Map實(shí)例,將該Map實(shí)例里的key-value對(duì)轉(zhuǎn)換為session的屬性名和屬性值;
方法二:(不推薦,麻煩,非IOC方式,與Servlet API耦合大)
雖然Struts2提供了ActionContext來(lái)訪(fǎng)問(wèn)Servlet API,但這種訪(fǎng)問(wèn)不能直接獲得Servlet API,為了在Action中直接訪(fǎng)問(wèn)Servlet API,Struts2還提供了以下接口。
1、ServletContextAware:實(shí)現(xiàn)該接口的Action可以直接訪(fǎng)問(wèn)Web應(yīng)用的ServletContext實(shí)例;
2、ServletRequestAware:實(shí)現(xiàn)該接口的Action可以直接訪(fǎng)問(wèn)用戶(hù)請(qǐng)求對(duì)象的HttpServletRequest的實(shí)例;
3、ServletResponseAware:實(shí)現(xiàn)該接口的Action可以直接訪(fǎng)問(wèn)服務(wù)器響應(yīng)的HttpServletResponse的實(shí)例;
方法三:(非IOC方式,強(qiáng)烈推薦使用)
Struts2還提供了一個(gè)ServletActionContext,其靜態(tài)方法有:getPageContext()、getRequest() 、getResponse()、getServletContext()。
1、HttpServletRequest request=ServletActionContext.getRequest();
2、HttpServletResponse response=ServletActionContext.getResponse();
3、request.getSession().setAttribute("username","admin");
4、request.setAttribute("password","123456");
以上就是Struts2中Action訪(fǎng)問(wèn)Servlet API的幾種方法,如有疑問(wèn)請(qǐng)留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
- Action訪(fǎng)問(wèn)Servlet的API的簡(jiǎn)單實(shí)例
- 淺談Servlet的Cookie和Session機(jī)制
- SpringBoot項(xiàng)目找不到j(luò)avax.servlet.Filter的問(wèn)題及解決
- Servlet連接數(shù)據(jù)庫(kù)實(shí)現(xiàn)用戶(hù)登錄的實(shí)現(xiàn)示例
- SpringBoot詳細(xì)講解異步任務(wù)如何獲取HttpServletRequest
- JavaWeb之Servlet注冊(cè)頁(yè)面的實(shí)現(xiàn)示例
- 基于Cookie與Session的Servlet?API會(huì)話(huà)管理操作
相關(guān)文章
完美解決jsp頁(yè)面在IE8下文本模式自動(dòng)為(雜項(xiàng)Quirks)導(dǎo)致頁(yè)面顯示錯(cuò)位
下面小編就為大家?guī)?lái)一篇完美解決jsp頁(yè)面在IE8下文本模式自動(dòng)為(雜項(xiàng)Quirks)導(dǎo)致頁(yè)面顯示錯(cuò)位。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-06-06基于javaweb+jsp實(shí)現(xiàn)企業(yè)車(chē)輛管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了javaweb+jsp實(shí)現(xiàn)企業(yè)車(chē)輛管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-11-11json實(shí)現(xiàn)jsp分頁(yè)實(shí)例介紹(附效果圖)
json的既簡(jiǎn)單易懂,又傳輸迅速。并且能和javascript很好的融為一體;在不需要添加jar的前提下,能夠很好完成jsp分頁(yè)問(wèn)題,接下來(lái)為大家介紹下如何實(shí)現(xiàn)2013-04-04通用彈出層頁(yè)面(兼容IE、firefox)可關(guān)閉控制寬高及屏蔽背景
本人搜集整理了一個(gè)通用彈出層頁(yè)面(兼容IE、firefox)可關(guān)閉控制寬高及屏蔽背景,需要的朋友可以了解下2012-12-12servlet實(shí)現(xiàn)文件下載的實(shí)用類(lèi)分享
servlet文件下載類(lèi),為了防止客戶(hù)端瀏覽器直接打開(kāi)目標(biāo)文件,在響應(yīng)頭里加入強(qiáng)制下載的MIME類(lèi)型,大家參考使用吧2014-01-01使用JSP + JAVABEAN + XML 開(kāi)發(fā)的一個(gè)例子
使用JSP + JAVABEAN + XML 開(kāi)發(fā)的一個(gè)例子...2006-10-10