java struts2值棧ognl_Struts2的值棧和OGNL牛逼啊

Struts2的值棧和OGNL牛逼啊

一 值棧簡介:

值棧是對應每個請求對象的一套內存數據的封裝,Struts2會給每個請求創建一個新的值棧,值棧能夠線程安全的為每個請求提供公共的數據存取服務。

二 OGNL介紹:

(1)基本數據:

OGNL 是對象圖導航語言Object-GraphNavigationLanguage的縮寫,它是一種功能強大的表達式語言。

OGNL 訪問ValueStack數據

OGNL 訪問ActionContext數據

訪問某個范圍下的數據要用#

#parameters 請求參數 request.getParameter(...);

#request 請求作用域中的數據 request.getAttribute(...);

#session 會話作用域中的數據 session.getAttribute(...);

#application 應用程序作用域中的數據 application.getAttribute(...);

#attr 按照 page request session application 順序查找值

我們以例子理解這部分內容,設置HelloAction:

1 public class HelloAction extendsActionSupport{2 private static final long serialVersionUID = 1L;3 @Override4 public String execute() throwsException {5 //狹義上的值棧

6 ActionContext actionContext=ActionContext.getContext();7 ValueStack valueStack=actionContext.getValueStack();8 valueStack.set("name", "張三(ValueStack)");9 valueStack.set("age", 11);10 //session中的值

11 Map session=actionContext.getSession();12 session.put("name","王五(session)");13 session.put("age","13");14 //application中的內容

15 Map application=actionContext.getApplication();16 application.put("name", "趙六(application)");17 application.put("age","14");18 returnSUCCESS;19 }20 }

Struts.xml文件的配置:

1

2

3

4

5 success.jsp

6

7

8

前端頁面success.jsp

1

2 pageEncoding="utf-8"%>

3

4

5

6

7

8

Insert title here

9

10

11 request.setAttribute("name","李四(request)");12 request.setAttribute("age","12");13 %>

14

15 值棧 獲取的數據:

16

17

18 前臺傳遞的數據:

19

20

21 request中的數據:

22

23

24 session中的數據:

25

26

27 application的數據:

28

29

30 attr取值 :

31

32

33

34

首先,是取值方式,

①值棧 直接取 比如說是name age就可以使用這種方式value=”name”??value=”age”

②page頁面傳遞的數據 比如說是name age使用這種方式value="#parameters.name”??value="#parameters.age”

③requset設置的值 使用的方式?value="#request.name"????value="#request.age"

④session設置的值使用的方式?value="#session.name"??????value="#session.age"

⑤application設置的值使用的方式value="#application.name"???value="#application.age"

之后attr的取值方式是按照page request session applicaiton這個順序取得。

例如:attr獲取的是request的值

713bac651d55278c32801cf1f41dd834.png

(2)OGNL訪問靜態方法和屬性

Mystatic類:

1 public classMyStatic {2

3 public static final String str="yxs";4

5 public staticString printUrl(){6

7 System.out.println("http://www.yxs.com");8

9 return "http://www.yxs.com";10

11 }12

13 }

Static.jsp直接訪問:

1

2 訪問靜態屬性:

3 訪問靜態方法:

4

結果:

e0f3e302532cfe7db496216abcaac772.png

(3)OGNL 訪問復雜對象

我們以javaBean對象為例:Student類

1 public classStudent {2 privateString name;3 private intage;4 publicStudent() {5 super();6 //TODO Auto-generated constructor stub

7 }8 public Student(String name, intage) {9 super();10 this.name =name;11 this.age =age;12 }13 publicString getName() {14 returnname;15 }16 public voidsetName(String name) {17 this.name =name;18 }19 public intgetAge() {20 returnage;21 }22 public void setAge(intage) {23 this.age =age;24 }25 }

Success.jsp文件:

1

2

3 ognl的javaBean值:

4

5

6 ognl的List集合:

7

8

9

10

11

12

13

14

15 ognl的Map:

16

17

18

19

20

21

22

HelloAction文件代碼:

1 public class HelloAction extendsActionSupport{2 private static final long serialVersionUID = 1L;3 private Student student;//javaBean

4 private Liststudents;//list

5 private MapstudentMap;//Map

6 publicStudent getStudent() {7 returnstudent;8 }9

10 public voidsetStudent(Student student) {11 this.student =student;12 }13

14 public ListgetStudents() {15 returnstudents;16 }17

18 public void setStudents(Liststudents) {19 this.students =students;20 }21

22 public MapgetStudentMap() {23 returnstudentMap;24 }25

26 public void setStudentMap(MapstudentMap) {27 this.studentMap =studentMap;28 }29

30 @Override31 public String execute() throwsException {32 //TODO Auto-generated method stub

33

34 students=new ArrayList();35 student=new Student("小八",12);36 students.add(new Student("小酒",13));37 students.add(new Student("小石",14));38 students.add(new Student("十一",15));39 studentMap=new HashMap();40 studentMap.put("goodStudent", new Student("學霸",20));41 studentMap.put("badStudent", new Student("學渣",19));42 returnSUCCESS;43 }44 }

顯示結果:

da76e84e4c1b29ed8eed845c1dee4804.png

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/271219.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/271219.shtml
英文地址,請注明出處:http://en.pswp.cn/news/271219.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

還在用 Notepad++嗎? 盤點五款更好用的文本編輯器

來自:oschina.net/news/110987/no-notepad-plus-plus | 責編:樂樂正文 Notepad 一直飽受爭議,2018年開始然后引發了大家的關注,這里師長作為技術媒體,不方便帶啥節奏,具體事件內容請大家自行百度。其實作…

python3列表_Python3 列表List(十一)

list是一種有序可重復的集合,可以隨時添加和刪除其中的元素。序列是Python中最基本的數據結構。序列中的每個元素都分配一個數字 - 它的位置,或索引,第一個索引是0,第二個索引是1,依此類推。Python有6個序列的內置類型…

ubuntu14.04 boost動態庫找不到 libboost_system.so.1.58.0

error while loading shared libraries: : cannot open shared object file: No such file or directory 解決辦法:向ld.so.conf文件中添加libboost_system.so.1.58.0所在的目錄路徑sudo vim /etc/ld.so.conf sudo ldconfig http://blog.csdn.net/smallfish0315/ar…

SQL語言:嵌入式SQL知識筆記

1、概念SQL提供了將SQL語句嵌入到某種高級語言中的使用方式,通常采用預編譯的方法將SQL語句嵌入高級語言中。采用的方法由DBMS的預處理程序對源程序進行掃碼、識別出SQL語句,把它們轉換為主語言調用語句,這樣可以讓主語言編譯程序能識別它&am…

Mysql bat腳本編寫_第一次編寫bat腳本

** 前言 **今天中午在宿舍不想做什么事,于是想到傻怡的電腦太卡了,多方面原因造成的,多軟件安裝于系統盤、安裝了沒用的殺毒軟件等等,但是對于windows系統來說呢,使用時間長了,會有很多的緩存文件、日志文件…

python 關閉窗口事件_關于python:如何在Tkinter中處理窗口關閉事件?

如何在Python Tkinter程序中處理窗口關閉事件(用戶單擊" X"按鈕)?Tkinter支持一種稱為協議處理程序的機制。在這里,術語協議是指應用程序和窗口管理器之間的交互。最常用的協議稱為WM_DELETE_WINDOW,用于定義當用戶使用窗口管理器顯…

windows+caffe(三)——求取圖片的均值

這個要在圖片已經轉化成lmdb格式下才能求均值。。。 1.查看caffe根目錄下的bin是否存在compute_image_mean.exe(用的happey大神的) 如果沒有存在,你需要打開MainBuilder.sln,右鍵compute_image_mean-僅用于項目-僅生成compute_ima…

硬盤知識:硬盤中藍盤、綠盤、黑盤、紅盤有什么區別?

今天給大家介紹一下電腦硬盤中藍盤、綠盤、黑盤、紅盤有什么區別?我們平常說的藍盤、黑盤、紅盤、綠盤這些通常指的是西部數據旗下所產的硬盤,通過各自的特點進行了上述的分類。從外觀上我們可以通過硬盤上貼的紙的顏色來區分。綠盤:監控盤&a…

java 框架mvc_JAVA框架-MVC模式

MVCMVC 模式代表 Model-View-Controller(模型-視圖-控制器) 模式。這種模式用于應用程序的分層開發。Model(模型) - 模型代表一個存取數據的對象或 JAVA POJO。它也可以帶有邏輯,在數據變化時更新控制器。View(視圖) - 視圖代表模型包含的數據的可視化。Controller(…

python selenium 獲取同一元素的多個屬性_python+selenium如何獲取元素中并列的屬性值?...

獲取標簽內容使用element.attribute()方法獲取dom元素的內容,如:dr driver.find_element_by_id(tooltip)dr.get_attribute(data-original-title) #獲取tooltip的內容dr.text #獲取該鏈接的text獲取標簽屬性linkdr.find_element_by_id(tooltip)link.valu…

ndk學習6: 使用gdb調試ndk程序一

生成debug版程序 方法一: 使用ndk-build編譯時&#xff0c;加上如下參數NDK_DEBUG1&#xff0c;之后生成so文件之外&#xff0c;還會生成gdbobserver,gdb.setup調式文件 方法二: 修改AndroidManifest.xml文件,增加debuggable屬性為true <application android:debuggable&quo…

后端:C#操作Mongodb用法筆記

MongoDB 是一個基于分布式文件存儲的數據庫。由 C 語言編寫。旨在為 WEB 應用提供可擴展的高性能數據存儲解決方案。今天主要給大家介紹一下C#編程語言下Mongodb的用法。開發環境為VS2015示例主要包括數據的增刪改查、分頁查詢、文件存儲等功能。有需要的朋友可以一起學習一下。…

計算機語言分為三種:機器語言、匯編語言和高級語言

計算機語言有哪幾種&#xff1f; 計算機語言分為三種&#xff1a;機器語言、匯編語言和高級語言 1.機器語言 機器語言是用二進制代碼表示計算機能直接識別和執行的一種機器指令的集合&#xff0c;它是計算機的設計者通過計算機的硬件結構賦予計算機的操作功能。 優點&#…

asp php java_ASP\JSP\PHP相比各有什么優缺點?

展開全部ASP、JSP、和PHP的優點e5a48de588b662616964757a686964616f31333366306538和缺點&#xff1a;一、ASP優點:1、無需編譯2、易于生成3、獨立于瀏覽器4、面向對象5、與任何ActiveX scripting 語言兼容6、源程序碼不會外漏缺點:1、Windows本身的所有問題都會一成不變的也累…

js變量提升_學習筆記:JS中的作用域和預解析

知識總結&#xff1a;謝靜賢、湯昊在javascript中作用域是非常重要的&#xff0c;本文將會說明作用域以及我們在工作&#xff0c;以及面試中的一些面試題&#xff0c;如果有不足的地方希望大家可以評論指出來&#xff0c;自己一定會及時的改正錯誤&#xff0c;避免大家走入一些…

ArcGIS Engine開發之旅09--幾何對象和空間參考

1.Geometry Geometry 是 GIS 中使用最為廣泛的對象集之一&#xff0c;用戶在創建、刪除、編輯和進行地理分析的時候&#xff0c;就是處理一個包含幾何形體的矢量對象&#xff1b;除了顯示要素意外&#xff0c;控件對象選擇&#xff0c;要素符號化&#xff0c;標注要素&#xf…

項目管理:軟件工程相關知識筆記

1、軟件工程概念介紹軟件工程是指應用計算機科學、數學、管理科學等原理&#xff0c;以工程化的原則和方法來解決軟件問題的工程&#xff0c;其主要目的是提高軟件生產率、提高軟件質量、降低軟件成本。2、軟件工程學的組成軟件開發技術&#xff1a;軟件開發方法學、軟件工具、…