Struts2的值棧詳解
ssh中頁面和action之間資料儲存和傳遞有多種方式,URL傳值,模型驅動,表單傳值,以及我們本文要介紹的值棧等。每種方式都有它的特點和適用範圍,小編根據自身的適用經驗和網上的查詢結果,對值棧的基本原理和適用方法做了一個彙總。
1 值棧是什麼?
一句話概括,值棧是對應每一個請求物件的資料儲存中心。Struts2的一個很重要的特點就是引入了值棧。之前我們通過快取或者模型驅動在action和頁面之間傳遞資料,資料混亂,並且
難以管理,快取還有時間和數量限制,使用起來非常的困難。值棧的引入解決了這個問題,它可以統一管理頁面和action之間的資料,供action、result、
況下不需要考慮值棧在哪裡,裡面有什麼,只需要去獲取自己需要的資料就可以了,大大的降低了開發人員的工作量和邏輯複雜性。
2 值棧能幹什麼?
值棧能夠執行緒安全的為每個請求提供公共的資料存取服務。每當有請求訪問時,Struts2都會為每個請求建立一個新的值棧,也就是說,值棧和請求時一一對應的,不同的請求,值棧也
不一樣,值棧封裝了一次請求所有操作的相關資料。正是因為值棧和請求的對應關係,因而值棧能保證每個請求訪問資料時的執行緒安全。
3 值棧有什麼?
狹義值棧:主要用力啊存取動態EL運算需要的值和結果,當然ognlValueStack物件主要是用來支援OGNL
action例項,這樣就可以通過OGNL來訪問action例項中的屬性的值了
OGNL表示式運算的值
OGNL表示式產生的中間變數,比如Struts2標籤,在JSP中使用標籤,可以訪問值棧中的資料。
廣義值棧:指的是ActionContext物件,actioncontext物件是action執行的上下文,每個actioncontext都是一個容器,包含著action執行所需要的資料,比如引數,會話等。
actioncontext中存放了很多的值,比如:
request
request的attribute:請求中的屬性,他的資料型別是map,存放著請求物件的屬性資料,這些資料和請求物件的attribute是聯動的。
session的attribute:會話中的屬性,資料型別是map這些屬性和會話物件的attribute是聯動的。
application的attribute:應用中的屬性,資料型別是map。
valuestack:也就是狹義值棧,actioncontext以valuestack為OGNL訪問的根,也即是說,在預設情況下,OGNL預設訪問valuestack裡面的值。
4 值棧如何使用?
valuestack是存放在actioncontext中的,它是通過OGNL表示式來訪問的,我們可以在JSP頁面通過Struts2標籤來訪問資料。valuestack首先是一個堆疊,所以他滿足堆疊的使用特點,當值棧中存在多個物件,且有相同屬性時,值棧會按照從棧頂到棧底的順序,尋找第一個匹配的物件。
獲取值棧:ValueStack testValueStack =ActionContext.getContext().getValueStack();
如何使用:valuestack主要方法如下:
<span style="font-size:18px;"> testValueStack.push(Object arg0); 向棧頂壓入一個物件。
testValueStack.pop(); 獲取值棧的頂層物件,並且移走這個物件。
testValueStack.peek(); 獲取頂層物件,但是不移走這個物件
testValueStack.set(String arg0, objectarg1); 向值棧中新增一個物件。
testValueStack.setValue(String arg0,object arg1); 向值棧中新增一個物件。</span>
應用:action中程式碼:
<span style="font-size:18px;">publicString execute() {
// 查詢熱門商品、放到值棧中
List<Product>hotProductList = productService.findHotProduct();
ActionContext.getContext().getValueStack()
.set("hotProductList",hotProductList);
return"success";
}</span>
jsp程式碼:
定義Struts2標籤
<span style="font-size:18px;"><%@tagliburi="/struts-tags" prefix="s"%> </span>
訪問值棧資料
<span style="font-size:18px;"><s:iteratorvar="p" value="hotProductList"></span>
相關推薦
Struts2的值棧詳解
ssh中頁面和action之間資料儲存和傳遞有多種方式,URL傳值,模型驅動,表單傳值,以及我們本文要介紹的值棧等。每種方式都有它的特點和適用範圍,小編根據自身的適用經驗和網上的查
值棧詳解(ValueStack)
什麼是值棧 之前web階段,在servlet裡面進行操作,把資料放到域物件裡面,在頁面中使用el表示式獲取到。域物件在一定範圍內,存值和取值。 在struts2裡面提供了本身的一種儲存機制,類似於域物件,是值棧,可以存值和取值。 在action裡面把資料
【基於初學者的SSH】struts2 值棧的詳解與struts2標簽庫+ognl表達式
radi ring etl action 值棧 多選 https submit 技術分享 一:什麽是值棧:struts2裏面本身提供的一種存儲機制,類似於域對象,值棧,可以存值和取值 特點:先進後出,最上面的元素叫做棧頂,也叫壓棧。 <s:debug><
C# 定時器傳值問題詳解
ati bll main 實例 詳解 use object handle source //傳參數定時器 private static System.Timers.Timer aTimer; Main(ApprovalID); public static void
(十)Struts2 值棧/OGNL
下界 ads gre char void world 獲取值 efi expr 值棧是一組對象,按照提供的順序存儲以下這些對象: 序號對象和說明 1 Temporary對象 實際中存在各種在頁面執行期間創建的temporary對象。例如,JSP標簽循環集合的當前叠代值
struts2使用配置詳解
doc jsp 特定 ext mes struts-2 system 瀏覽器 con struts2.xml的文件配置 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC
struts2值棧存取數據小結(使用ognl表達式)
color idt 直接 com ble per 小結 如果 ges 前言:使用ognl和struts2標簽庫的時候要在 jsp頁面 中 加入這麽一行 <%@ taglib uri="/struts-tags" prefix="s" %> struts(統
Struts2 值棧總結(ValueStack)
由於 壓入 system 因此 getc 進行 接口 上下文 通過 1、獲取值棧 1 //獲取值棧的第一種方式 2 ValueStack valueStack1 = (ValueStack) ServletActionContext.getRequest(
Struts2的Action詳解
Struts2的Action詳解Struts2中的action,主要是完成業務邏輯操作。Action替代在servlet中完成的作用。Action的學習主要有兩點如何創建一個struts2的action如果訪問一個struts2的action1. Action類創建方式(三種)創建一個pojo類Pojo(pl
[轉載][C++]C++11 左值、右值、右值引用詳解
找到 延長 引用 () 字面量 別名 賦值 例子 左值 我之前以為左值就是等號左邊的值,右值就是等號右邊的值。 我 太天真 ?_? 原文地址:https://blog.csdn.net/hyman_yx/article/details/52044632 (侵刪 ------
struts2值棧命名的一個bug
turn 如果 class ima 應該 方法 src inf code Action中的的屬性名和值棧中屬性名應該數絕對對應的關系,但是如果引用名和get方法寫成如下形式: private List<User> uList; public List
Java中返回值的詳解
package text 希望 得到 輸出 turn void 方法 dem package com.company; //java中main()函數中調用其他方法的兩種方式//1.實例化對象 public class returnDemo { public s
第21講 struts2值棧OGNL訪問JavaBean,List集合 Map物件
一,OGNL訪問JavaBean 1在專案HeadFirstStruts2chapter04 ,新建com.cruise.model包,Student類,name age屬性,全參構造和無參構造,package com.cruise.model;public class 
JVM 虛擬機器棧詳解
棧幀 棧幀 (Stack Frame) 是用於支援虛擬機器進行方法呼叫和方法執行的資料結構,它是虛擬機器執行時資料區中的虛擬機器棧 (Virtual Machine Stack)的棧元素 。棧幀儲存了方法的區域性變量表、運算元棧、動態連線和方法返回地址等資訊。每一個方能從
Kafka:無丟失提取kafka的值,詳解kafka的消費過程
目錄: 1、需求 2、程式碼步鄹 3、程式碼展現 4、pom.xml檔案 5、結果展現 ——————————————————————————————————– 1、需求 前提:將org.apache.spark.streaming.kafka.KafkaCluster這個類抽出來變成Kafka
C++11 左值、右值、右值引用詳解(轉載)
左值、右值 在C++11中所有的值必屬於左值、右值兩者之一,右值又可以細分為純右值、將亡值。在C++11中可以取地址的、有名字的就是左值,反之,不能取地址的、沒有名字的就是右值(將亡值或純右值)。舉個例子,int a = b+c, a 就是左值,其有變數名為a,通過&a
struts2值棧
OGNL 1.1 OGNL的全稱是Object Graph Navigation Language(物件圖導航語言),它是一種強大的表示式語言 1.2 OgnlContext(ongl上下文)其實就是Map OgnlContext=根物件(1)+非根物件(N
專案經理三大法寶之一掙值管理詳解
1.什麼是掙值管理 2.掙值管理三大基本引數 3.掙值管理評價指標 4.掙值管理如何用於完工估算 正文: 工作分解結構(WBS),關鍵路徑法(CPM),還有掙值管理(EVM)是專案經理必須掌握的三大法寶。 WBS是專案範圍定義清楚以後進行的工作,主要是分解出可
第21講 struts2值棧OGNL訪問JavaBean,List集合 Map物件
一,OGNL訪問JavaBean 1在專案HeadFirstStruts2chapter04 ,新建com.cruise.model包,Student類,name age屬性,全參構造和無參構造,package com.cruise.model;public class St
Struts2配置檔案詳解
個框架配置檔案是使用它的核心所以有很大的必要了解 配置檔案(分多個檔案配置是為了分組開發) 記住struts的配置檔案要配置到src根目錄下 struts-base.xml檔案詳解這是struts2的基礎配置檔案必須的 <?xml version="1.0