Struts2學習筆記(四):action中訪問request,session以及applicationContext等web資源的方法
在struts2的action中有時會需要訪問request,session以及applicationContext等web資源,這裡我總結了四種可行的方法,供讀者參考。
(1)使用ActionContext
<pre name="code" class="java"><pre name="code" class="html">package com.jiajia.actions; import java.util.Map; import com.opensymphony.xwork2.ActionContext; public class TestActionContext { public String execute(){ //獲取actionContext物件 ActionContext context = ActionContext.getContext(); //ActionContext中獲取的application是一個Map,裡面可以儲存需要的引數。 Map<String, Object> application = context.getApplication(); //在application中放置一個引數applicationAttr application.put("applicationAttr", "通過ActionContext的getApplication()方法獲取application"); //ActionContext中獲取的session也是一個Map Map<String, Object> session = context.getSession(); //在session中放置一個引數 session.put("sessionAttr", "通過ActionContext的getSession()方法獲取session"); //ActionContext中獲取的request也是一個Map,但獲取方法有別於session和application //ActionContext中並沒有getRequest()方法(我還不理解為什麼會這樣) Map<String, Object> request = (Map<String, Object>) context.get("request"); //在request中放置一個引數 request.put("requestAttr", "通過ActionContext的get(\"request\")方法獲取request"); return "success"; } }
(2)使用ServletActionContext
<pre name="code" class="java">package com.jiajia.actions; import javax.servlet.ServletContext; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import org.apache.struts2.ServletActionContext; /** * @author jiajia * 該類主要用來測試通過ServletActionContext類來 * 直接獲取request、session以及application的方法 */ public class TestServletActionContext { public String execute(){ ServletContext application = ServletActionContext.getServletContext(); HttpServletRequest request = ServletActionContext.getRequest(); HttpSession session = request.getSession(); //在application中放置一個引數applicationAttr application.setAttribute("applicationAttr", "通過ServletActionContext.getServletContext()獲取application"); //在session中放置一個引數 session.setAttribute("sessionAttr", "通過ServletActionContext.getRequest().getSession()獲取session"); //在request中放置一個引數 request.setAttribute("requestAttr", "通過ServletActionContext.getRequest()獲取request"); return "success"; } }
(3)實現RequestAware, SessionAware, ApplicationAware介面
(4)實現ServletRequestAware, ServletContextAware介面package com.jiajia.actions; import java.util.Map; import org.apache.struts2.interceptor.ApplicationAware; import org.apache.struts2.interceptor.RequestAware; import org.apache.struts2.interceptor.SessionAware; /** * @author jiajia * 該類主要用來測試通過實現RequestAware, SessionAware, ApplicationAware介面,struts會自動向 * 物件中注入Map型別的application、session、以及request屬性 */ public class TestAware implements RequestAware, SessionAware, ApplicationAware{ Map<String, Object> application; Map<String, Object> session; Map<String, Object> request; @Override public void setApplication(Map<String, Object> arg0) { this.application = arg0; } @Override public void setSession(Map<String, Object> arg0) { this.session = arg0; } @Override public void setRequest(Map<String, Object> arg0) { this.request = arg0; } public String execute(){ //在application中放置一個引數applicationAttr application.put("applicationAttr", "通過實現ApplicationAware介面獲取application"); //在session中放置一個引數 session.put("sessionAttr", "通過實現SessionAware介面獲取session"); //在request中放置一個引數 request.put("requestAttr", "通過實現RequestAware介面獲取request"); return "success"; } }
package com.jiajia.actions;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.apache.struts2.ServletActionContext;
import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.util.ServletContextAware;
public class TestServletAware implements ServletRequestAware,
ServletContextAware {
ServletContext application;
HttpServletRequest request;
HttpSession session;
@Override
public void setServletContext(ServletContext arg0) {
this.application = arg0;
}
@Override
public void setServletRequest(HttpServletRequest arg0) {
this.request = arg0;
}
public String execute(){
session = request.getSession();
//在application中放置一個引數applicationAttr
application.setAttribute("applicationAttr",
"通過實現ServletContextAware介面獲取application");
//在session中放置一個引數
session.setAttribute("sessionAttr",
"通過實現ServletRequestAware介面獲取request再呼叫getSession()獲取session");
//在request中放置一個引數
request.setAttribute("requestAttr",
"通過實現ServletRequestAware介面獲取request");
return "success";
}
}
上述四種方法中(1)和(3)與原始Servlet API是沒有耦合的,但功能也相對較弱,(2)和(4)與原始Servlet API是緊密耦合的,可以提供完整的servlet中的功能
完整示例程式碼:http://download.csdn.net/detail/jiajia333666/9050793
相關推薦
Struts2學習筆記(四):action中訪問request,session以及applicationContext等web資源的方法
在struts2的action中有時會需要訪問request,session以及applicationContext等web資源,這裡我總結了四種可行的方法,供讀者參考。 (1)使用ActionContext <pre name="code" class="java
shell編程學習筆記(四):Shell中轉義字符的輸出
特殊 進制 .sh 簡單 轉義 版本 col 輸出 asc 通過echo可以輸出字符串,下面看一下怎麽輸出特殊轉義字符,首先我先列出來echo的轉義字符: \\ 輸入\ \a 輸出警告音 \b 退格,即向左刪除一個字符 \c 取消輸出行末的換行符,和-n選項
Unity3D之Mecanim動畫系統學習筆記(四):Animation State
大致 面板 輸入 jpg any 動畫播放 速度 nsf 顯示 動畫的設置 我們先看看Animation Clip的一些設置: Loop time:動畫是否循環播放。 下面出現了3個大致一樣的選項: Root Transform Rotation:表示為播放動畫
.net core 2.0學習筆記(四):遷移.net framework 工程到.net core
編譯 its evel hashtable ref 學習筆記 inline null 創建 在遷移.net core的過程中,第一步就是要把.net framework 工程的目標框架改為.net core2.0,但是官網卻沒有提供轉換工具,需要我們自己動手完成了
java學習筆記(四):import語法
employee sign cnblogs java 調用 變量賦值 temp 職位 求職 Import 語法是給編譯器尋找特定類的適當位置的一種方法。 創建一個Employee 類,包括四個實體變量姓名(name),年齡(age),職位(designation)和薪水(s
HADOOP學習筆記(四):HBase
系統 唯一性 創建時間 必須 就是 入口 計算 hfile mapreduce HBase簡介 Hbase是分布式、面向列的開源數據庫(其實準確的說是面向列族)。HDFS為Hbase提供可靠的底層數據存儲服務,MapReduce為Hbase提供高性能的計算能力,Zooke
javaweb學習筆記(四):會話管理(1)
目錄 會話管理 1.概念 2.cookie技術 2.1 Cookie一般處理流程 2.2 Cookie類 會話管理 1.概念 一次會話: 開啟瀏覽器 -> 訪問一些伺服器內容 -> 關閉瀏覽器。(瀏覽器A給伺服器傳送請求,訪問web程式,該次會話就
學習筆記(四):使用K近鄰演算法檢測WebShell
1.資料蒐集 載入ADFA-LD中正常樣本資料: def load_adfa_training_files(rootdir): x=[] y=[] list = os.listdir(rootdir) for i in
Scala學習筆記(四):apply方法說明
調用 我們 val sca 關鍵字 語法糖 方式 rgs 類型 當scala中類或者對象有一個主要用途的時候,apply方法就是一個很好地語法糖。請看下面一個簡單的例子: class Foo(foo: String) {} object Foo { def appl
Python3學習筆記(四):用Python實現深度優先
這裡主要是用Python實現下深度優先的概念,由於程式碼寫得比較隨意,就沒有封裝成類,而是寫成一個函式 用一個列表做為實驗資料,模擬成二叉樹結構,用遞迴的方式不斷獲取二叉樹上的左節點,一直到左節點 序號超出列表範圍,然後迴歸獲取右節點,以此來實現深度優先。 以下是程式碼
安卓開發學習筆記(四):Android Stuidio無法實現隱式Intent是為什麼?
1 package com.example.lenovo.activitytest; 2 3 import android.support.v7.app.AppCompatActivity; 4 import android.os.Bundle; 5 import android.view
圖解演算法學習筆記(四):快速排序
本章內容:學習分而治之,快速排序 1) 示例1: 假設你是農場主,有一小塊土地,你要將這塊地均勻分成方塊,且分出的方塊儘可能大。如何分? 你要將這塊地均勻分成方塊,且分出的方塊要儘可能大。顯然,下面的分法不符合要求。 此時,你應該使用D&C策略(div
python學習筆記(四):核心模組方法
核心模組1、__builtin__模組:一、數學運算類abs(x) 求絕對值 1、引數可以是整型,也可以是複數 2、若引數是複數,則返回複數的模 complex([real[, imag]]) 建立一個複數 divmod(a, b) 分別取商和餘數 注意:整型
各種音視訊編解碼學習詳解之 編解碼學習筆記(四):Mpeg系列——Mpeg 4
最近在研究音視訊編解碼這一塊兒,看到@bitbit大神寫的【各種音視訊編解碼學習詳解】這篇文章,非常感謝,佩服的五體投地。奈何大神這邊文章太長,在這裡我把它分解成很多小的篇幅,方便閱讀。大神部落格傳送門:https://www.cnblogs.com/skyofbitbit
Python3+OpenCV學習筆記(四):影象濾波基礎(均值、高斯、中值、雙邊)
OpenCV中還可以在影象上進行繪圖操作,由於資料都比較完善,所以附上鍊接,自行參悟。 好了,進入正題。在一張影象,在資料儲存或傳輸的過程中,或多或少都會引入噪聲,常見的影象噪聲如高斯噪聲、瑞利噪聲、椒鹽噪聲等,可參加連結:數字影象噪聲 為了避免噪聲對影象資訊進行干擾或
SpringBoot學習筆記(四):SpringBoot整合Mybatis-Plus+程式碼生成
簡介 官網:http://baomidou.oschina.io/mybatis-plus-doc/ 平時業務程式碼不復雜的時候我們寫什麼程式碼寫的最多,就是我們的SQL語句啊,配置那麼多的Mapper.xml,還要配置什麼resultMap這些東西,還要去管理paramtype
朱老師ARM裸機學習筆記(四):S5PV210啟動過程詳解
常用器件特性 記憶體: SRAM 靜態記憶體 特點就是容量小、價格高,優點是不需要軟體初始化直接上電就能用 DRAM 動態記憶體 特點就是容量大、價格低,缺點就是上電後不能直接使用,需要軟體初始化後才可以使用。 微
PostgreSQL學習筆記(四):運算子&函式
文章目錄 1 運算子&函式 1.1 運算子 1.1.1 算數運算子 1.1.2 關係運算符 1.1.3 邏輯運算子 1.2 函式 1.2.
PE檔案學習筆記(四):重定位表(Relocation Table)解析
1、重定位表的作用 重定位表(Relocation Table)用於在程式載入到記憶體中時,進行記憶體地址的修正。為什麼要進行記憶體地址的修正?我們舉個例子來說:test.exe可執行程式需要三個動態連結庫dll(a.dll,b.dll,c.dll),假設te
Struts2學習筆記(一):struts2開發環境配置
寫在前面:本人雖然接觸JavaWeb開發有一段時間了,但之前一直迫於專案需求,需要什麼就簡單的去學習什麼,只求實現功能。過程中雖然也有收穫,但更多的時候,看到別人的程式碼總感覺自己的程式碼慘不忍睹,而且往往會走很多的彎路。痛定思痛決心重頭系統學習相關知識點,在這裡寫部落格