日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2023/12/10 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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的值

(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

結果:

(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 }

顯示結果:

總結

以上是生活随笔為你收集整理的java struts2值栈ognl_Struts2的值栈和OGNL牛逼啊的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。