1. 程式人生 > >怎樣在struts2的Action中獲取request、response、session物件。

怎樣在struts2的Action中獲取request、response、session物件。

使用習慣servlet技術之後,
在進行後臺操作的時候通常會用到 request、response、session這些伺服器物件,
request 通常用來接收前臺傳來的引數,
在 struts 中通常都用自動注入的方式解決,
respone 是後臺處理完成後向前臺輸出結果的一個物件,
這個在 struts 也給了對應的處理方案,比如根據返回值的不同跳轉不同的介面,或者傳入一些值。
session 最常見的一種使用場景就是一些常用資料的記錄和短時間的資料對比,
比如記錄一些登陸資訊,在跳轉頁面或者進行後臺操作的時候減少對資料庫的訪問而直接在 session 中取。
雖然 struts 對這些情況都有了一些對應的解決方案,但是有時候還是需要使用到這些東西。
那麼怎樣獲取他們就成了一個問題。
大概我知道的有下面3種方法:
1)在方法中,用 ActionContext 獲取:

ActionContext ac = ActionContext.getContext();
ac.put("request","request物件");
ac.put("response","response物件");

這裡是獲取了 ActionContext ,這個類是 action 的上下文,裡面包含很多在action執行過程中需要使用的資料,比如:session, parameters, locale等,資料結構是對映結構,即鍵值對的形式,直接能取到的伺服器物件只有 session,其他的是可以通過自行設定的,這個上下文最大的好處就是後臺和頁面都可以自由的使用它,所以你自定義的一些變數,只需要在頁面上用 el 表示式便可以輕鬆取出。
在第一行程式碼中直接使用了 ActionContext.getContext(); 就說明了獲取上下文是一個靜態的方法,所以在非 action 類中都是可以呼叫的,但是 ActionContext 只有在一次請求的時候才會生成,但是在僅僅啟動伺服器的一些執行緒中是沒有對應的上下文的。

2)獲取HttpXXX物件:

HttpServletRequest request = ServletActionContext.getRequest();
request.getSession();
HttpServletResponse response = ServletActionContext.getResponse();

這裡用到了 ServletActionContext 這個類的父類便是 ActionContext ,這個類的擴充套件就是能夠直接獲取到 request、response、servletContext 和 pageContext 這四大物件,所以這裡也可以用這種方式或者這些伺服器物件。

3)實現struts提供的介面:

public class TestAction extends ActionSupport implements ServletRequestAware, ServletResponseAware, ServletContextAware{
    private HttpServletRequest request;
    private ServletContext servletContext;
    private HttpServletResponse response;

    public void setServletRequest(HttpServletRequest req) {
        this.request=req;
    }

    public void setServletResponse(HttpServletResponse res) {
        this.response=res;
    }

    public void setServletContext(ServletContext sc) {
        this.servletContext=sc;
    }

    req.getSession();
}

這樣就可以直接獲取 request、resposne、servletContext、session 物件了。

對於request和session也可以通過以下形式:

public class TestAction extends ActionSupport implements RequestAware,SessionAware{
    private Map<String,Object> request;
    private Map<String,Object> session;

    public void setSession(Map<String, Object> session) {
        this.session=session;
    }

    public void setRequest(Map<String, Object> request) {
        this.request=request;
    }
}

這樣也能夠獲取 session 和 request 物件,只不過這裡struts耦合了這兩個物件,轉換成了Map型別,但是使用起來還是很方便的。

上面就是在 struts 框架中, Action 怎麼取出對應伺服器物件的方法。如有不對,歡迎指出。

相關推薦

ssm框架獲取requestresponse

根據 屬性 使用 兩個 framework 容器 resp private ssm 有時候需要在Controller、service中使用HttpServletRequest或HttpServletResponse對象,這裏記下3種方法 1.直接在Controller接

spring MVC獲取requestresponse:

log clas pos stc body stat response ons style spring MVC中獲取request和response: HttpServletRequest request = ((ServletRequestAttributes)

SpringBoot方法獲取RequestResponse

很多時候方法中沒有帶引數HttpServletRequest 和HttpServletResponse ,但是我們需要用到這個引數。 場景: 我們將使用者的登陸資訊存入了redis以token作為Key,在某些地方需要獲取使用者資訊,我們就需要獲取請求頭中的token。

AOP日誌:aspect獲取requestresponse的方法

RequestAttributes ra = RequestContextHolder.getRequestAttributes(); ServletRequestAttributes sra = (ServletRequestAttributes)ra; HttpServletRequest re

spring獲取requestresponse

在spring專案中,我們通常有幾種方法可以獲取request物件,1直接引數獲取 @RequestMapping("/path") public String getReqAndRes(HttpServletRequest request, HttpServlet

怎樣在struts2的Action獲取requestresponsesession物件

使用習慣servlet技術之後, 在進行後臺操作的時候通常會用到 request、response、session這些伺服器物件, request 通常用來接收前臺傳來的引數, 在 struts 中通常都用自動注入的方式解決, respone 是後臺處理

struts2在action獲取requestsessionapplication,並傳遞數據

ride b2c 傳遞 sets content context 分享 https fcm 假設僅僅是通過request、session、application傳遞數據,則不須要獲取對應的對象也能夠傳遞數據,代碼例如以下: ScopeAction.java: packa

SpringMvc4獲取requestresponse物件的方法

springMVC4中獲取request和response物件有以下兩種簡單易用的方法: 1、在control層獲取 在control層中獲取HttpServletRequest和HttpServle

struts之Action獲取requestresponse物件的方法

1、訪問或新增request/session/application屬性 public String scope() throws Exception{     ActionContext ctx = ActionContext.getContext();    

ASP.NETRequestResponseServer對象

.html languages asa 地址欄 判斷 nsf 一次 服務 tco Request對象 Response.Write(Request.ApplicationPath) //應用根路徑Request.AppRelativeCurrentExecutionFile

ServletrequestresponseServletContext 及其常用方法

request物件的類是HttpServletRequest request的常見方法: request.getRequestURL(): 瀏覽器發出請求時的完整URL,包括協議 主機名 埠(如果有)request.getRequestURI(): 瀏覽器發出請求的資源名部分,去掉了協議和主機名reque

Servlet(四):requestresponseCookieSession

相關文章: Servlet(一):Web專案的開發流程 Servlet(二):簡介 Servlet(三):生命週期詳解he常見錯誤 reqeuest請求 作用: request物件中封存了當前請求的所有請求資訊 注意: request物件

C#webclient(httpRequestResponsepostget)在winform的使用

題外話::04年到07年搞了四年多的C#,突然發現,居然還能撿起來解決客戶的需求,很是欣喜,裝了VS2010,突然又喜歡上了用C#寫東西。前段時間用C#寫了一個通過SAP 呼叫codeproject的中介軟體,最近打算利用業餘時間用C#寫一個SAP與外部系統介面的EDI系統,

mui開發獲取單選按鈕復選框的值

nbsp ++ element pretty 按鈕 選擇 return null 單選按鈕的值 js獲取單選按鈕的值 function getVals(){ var res = getRadioRes(‘rds‘); if(res == null){mui.

MVC 在視圖獲取當前的ControllerAction的方式

style 視圖 out action pan size 獲取 cti span 在視圖中獲取Controller和Action的方式: Controller: @ViewContext.RouteData.Route.GetRouteData(this.Context)

Servletrequest對象重定向和轉發的差別(6)

current https 命令 相對 eba 進入 file before redirect 1.這裏所說的request對象指的是HttpServletRequest對象,它代表client的請求,當client通過HTTP協議訪問server時。HTTP請求頭

C# 選擇檔案選擇資料夾開啟檔案(或者資料夾) 路徑獲取檔案全路徑目錄副檔名檔名稱 追加拷貝刪除移動檔案建立目錄 修改檔名資料夾名!!

https://www.cnblogs.com/zhlziliaoku/p/5241097.html 1、選擇檔案用OpenDialog OpenFileDialog dialog = new OpenFileDialog(); dialog.Multiselect = true;/

Struts2Action獲取Session

Struts2Action中獲取Session目前知道的有三種方式,先寫篇部落格記錄下來,方便查閱 第一種: 與Servlet API 解耦合的方式 ActionContext.getContext().getSession(); 第二種: 與Servlet API 耦合的方式

C#路徑獲取檔案全路徑目錄副檔名檔名稱

1 #region 程式集 mscorlib.dll, v4.0.0.0 2 // C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\mscorlib.dll 3 #endreg

JS獲取節點的兄弟子節點的各種問題

JS中獲取節點的兄弟、父、子節點,一般情況下通過這種方式獲取: var chils= s.childNodes; //得到s的全部子節點 var par=s.parentNode; //得到s的父節點 var ns=s.nextSibling; //獲得s的下一