我是靠谱客的博主 单薄小甜瓜,这篇文章主要介绍Struts2 OGNL标签,现在分享给大家,希望可以做个参考。

1.设置jsp页面

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<%@ page language="java" pageEncoding="utf-8" contentType="text/html; charset=utf-8"%> <%@ taglib uri="/struts-tags" prefix="s"%> <html> <head> <title>My JSP 'index.jsp' starting page</title> </head> <body> 测试值栈:<br> <a href="${pageContext.request.contextPath}/ognl/ValueStackAction_test.action">test</a><br> <br> <br> <br> 测试ognl表达式的用法<br> <a href="${pageContext.request.contextPath}/ognl/OgnlAction_test.action?cid=9">test</a><br> 测试标签<br> <a href="${pageContext.request.contextPath}/ognl/OgnlTagAction_test.action?cid=9">test</a><br> </html>

这里写图片描述

2.配置struts_ognl.xml

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <package name="ognl" namespace="/ognl" extends="struts-default"> <action name="*_test" class="cn.itcast.ognl.{1}" method="test"> <result name="ValueStack">/ognl/ValueStackAction.jsp</result> <result name="ognl">/ognl/OgnlAction.jsp?msgxx=${msg}</result> <result name="ognltag">/ognl/OgnlTagAction.jsp</result> </action> </package> </struts>

这里写图片描述

3.struts.xml引入struts_ognl.xml

这里写图片描述

4.编写Action文件

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
package cn.itcast.ognl; import java.util.ArrayList; import java.util.List; import java.util.Map; import javax.servlet.ServletContext; import javax.servlet.http.HttpServletRequest; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionSupport; import com.opensymphony.xwork2.util.ValueStack; @SuppressWarnings("serial") public class OgnlTagAction extends ActionSupport { public String test(){ System.out.println("OgnlAction ************ test()"); HttpServletRequest request = ServletActionContext.getRequest(); request.setAttribute("username", "username_request"); request.setAttribute("password", "password_request"); Map sessionMap = ServletActionContext.getContext().getSession(); sessionMap.put("username", "username_session"); sessionMap.put("password", "password_session"); ServletContext sc = ServletActionContext.getServletContext(); sc.setAttribute("username", "username_application"); sc.setAttribute("password", "password_application"); //方法一:获取ValueStack对象 ValueStack valueStack1 = (ValueStack)request.getAttribute("struts.valueStack"); System.out.println("valueStack = "+valueStack1); /* * 插入的内容,实际上是先放置在一个map集合中,又把这个map集合放置在对象栈里 */ valueStack1.set("error", "error_valueStack"); valueStack1.set("msg", "msg_valueStack"); // valueStack1.getRoot().add(0, new Person()); valueStack1.getRoot().add(0,new Employee()); List<Person> list = new ArrayList<Person>(); for(int i = 0;i<10; i++){ Person person = new Person(i, "tom" + i , i+20); list.add(person); } request.setAttribute("persons", list); //方法二:获取ValueStack对象 /*ValueStack valueStack2 = ServletActionContext.getContext().getValueStack(); System.out.println("valueStack = "+valueStack2);*/ return "ognltag"; } }

property标签

这里写图片描述
使用方式:
这里写图片描述

结果显示:

这里写图片描述


set标签

这里写图片描述

使用方式:

这里写图片描述

结果显示:
这里写图片描述


push标签

这里写图片描述

使用方式:
这里写图片描述

结果显示:
这里写图片描述


bean标签

这里写图片描述


action标签

这里写图片描述

使用方式:
这里写图片描述
值为false的显示结果:
这里写图片描述

这里写图片描述

结果为true的显示结果:
这里写图片描述


iterator标签

这里写图片描述
这里写图片描述

使用方式:
这里写图片描述

结果显示:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
Iterator:标签用于对集合进行迭代,这里的集合包含ListSet和数组。 cn.itcast.ognl.Person@72df520e cn.itcast.ognl.Person@2384500d cn.itcast.ognl.Person@43a397b2 cn.itcast.ognl.Person@293c49cf cn.itcast.ognl.Person@3511ca2f cn.itcast.ognl.Person@22f0eee1 cn.itcast.ognl.Person@77d307b2 cn.itcast.ognl.Person@3f9e7493 cn.itcast.ognl.Person@3bf77f86 cn.itcast.ognl.Person@75d5552b 0~~tom0~~20 1~~tom1~~21 2~~tom2~~22 3~~tom3~~23 4~~tom4~~24 5~~tom5~~25 6~~tom6~~26 7~~tom7~~27 8~~tom8~~28 9~~tom9~~29 返回当前迭代了几个元素:1 返回当前迭代元素的索引:0 返回当前被迭代元素的索引是否是偶数:false 返回当前被迭代元素的索引是否是奇数:true 返回当前被迭代元素是否是第一个元素:true 返回当前被迭代元素是否是最后一个元素:false 返回当前迭代了几个元素:2 返回当前迭代元素的索引:1 返回当前被迭代元素的索引是否是偶数:true 返回当前被迭代元素的索引是否是奇数:false 返回当前被迭代元素是否是第一个元素:false 返回当前被迭代元素是否是最后一个元素:false 返回当前迭代了几个元素:3 返回当前迭代元素的索引:2 返回当前被迭代元素的索引是否是偶数:false 返回当前被迭代元素的索引是否是奇数:true 返回当前被迭代元素是否是第一个元素:false 返回当前被迭代元素是否是最后一个元素:false 返回当前迭代了几个元素:4 返回当前迭代元素的索引:3 返回当前被迭代元素的索引是否是偶数:true 返回当前被迭代元素的索引是否是奇数:false 返回当前被迭代元素是否是第一个元素:false 返回当前被迭代元素是否是最后一个元素:false 返回当前迭代了几个元素:5 返回当前迭代元素的索引:4 返回当前被迭代元素的索引是否是偶数:false 返回当前被迭代元素的索引是否是奇数:true 返回当前被迭代元素是否是第一个元素:false 返回当前被迭代元素是否是最后一个元素:false 返回当前迭代了几个元素:6 返回当前迭代元素的索引:5 返回当前被迭代元素的索引是否是偶数:true 返回当前被迭代元素的索引是否是奇数:false 返回当前被迭代元素是否是第一个元素:false 返回当前被迭代元素是否是最后一个元素:false 返回当前迭代了几个元素:7 返回当前迭代元素的索引:6 返回当前被迭代元素的索引是否是偶数:false 返回当前被迭代元素的索引是否是奇数:true 返回当前被迭代元素是否是第一个元素:false 返回当前被迭代元素是否是最后一个元素:false 返回当前迭代了几个元素:8 返回当前迭代元素的索引:7 返回当前被迭代元素的索引是否是偶数:true 返回当前被迭代元素的索引是否是奇数:false 返回当前被迭代元素是否是第一个元素:false 返回当前被迭代元素是否是最后一个元素:false 返回当前迭代了几个元素:9 返回当前迭代元素的索引:8 返回当前被迭代元素的索引是否是偶数:false 返回当前被迭代元素的索引是否是奇数:true 返回当前被迭代元素是否是第一个元素:false 返回当前被迭代元素是否是最后一个元素:false 返回当前迭代了几个元素:10 返回当前迭代元素的索引:9 返回当前被迭代元素的索引是否是偶数:true 返回当前被迭代元素的索引是否是奇数:false 返回当前被迭代元素是否是第一个元素:false 返回当前被迭代元素是否是最后一个元素:true

这里写图片描述


if/elseif/else标签

这里写图片描述
使用方式:
这里写图片描述
结果显示:
这里写图片描述


url标签

这里写图片描述

使用方式:
这里写图片描述

结果显示:
这里写图片描述


ognl操作集合

这里写图片描述


这里写图片描述


这里写图片描述


这里写图片描述

使用方式:
这里写图片描述

结果显示:
这里写图片描述

上面全部的ognl标签使用源码jsp页面

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
<%@ page language="java" pageEncoding="utf-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <%@ taglib uri="/struts-tags" prefix="s"%> <html> <head> <title>My JSP 'index.jsp' starting page</title> <meta http-equiv="description" content="This is my page"> </head> <style type="text/css"> .oddClass{ background-color: red;} .evenClass{ background-color:blue;} </style> <body> ognlTag.jsp<br> -------------------------------------------------------------------------------------------------------<br> property标签用于输出指定值:<br> <s:property value="#request.username"/><br> <s:property value="#request.username11" default="xxxxx"/><br> <s:property value="%{'<hr>hr的使用'}" escape="false"/><br> -------------------------------------------------------------------------------------------------------<br> set标签用于将某个值放入指定范围:<br> <s:set value="#request.username" var="xxx"/> <s:property value="#xxx"/><br> <s:set value="#session.username" var="xxx" scope="request"/> <s:property value="#request.xxx"/><br> <s:set value="#application.username" var="xxx" scope="page"/> <s:property value="#attr.xxx"/><br> -------------------------------------------------------------------------------------------------------<br> push:将对象放入栈顶,不能放入其他范围,当标签结束,会从栈顶删除。<br> <s:push value="#request.username"> <s:property/><br><s:debug></s:debug> </s:push> -------------------------------------------------------------------------------------------------------<br> Action:通过指定命名空间和action名称,该标签允许在jsp页面直接调用Action <br> <s:action name="OgnlAction_test" namespace="/ognl" executeResult="fasle" /> -------------------------------------------------------------------------------------------------------<br> Iterator:标签用于对集合进行迭代,这里的集合包含List、Set和数组。<br> <s:iterator value="#request.persons" var="person"> <s:property value="#person"/><br> </s:iterator> <br><br> <s:iterator value="#request.persons" var="person"> <s:property value="#person.id"/>~~<s:property value="#person.name" />~~<s:property value="#person.age" /><br> </s:iterator> <br><br> <s:iterator value="#request.persons" var="person" status="st"> 返回当前迭代了几个元素:<s:property value="#st.count"/><br> 返回当前迭代元素的索引:<s:property value="#st.index"/><br> 返回当前被迭代元素的索引是否是偶数:<s:property value="#st.even"/><br> 返回当前被迭代元素的索引是否是奇数:<s:property value="#st.odd"/><br> 返回当前被迭代元素是否是第一个元素:<s:property value="#st.first"/><br> 返回当前被迭代元素是否是最后一个元素:<s:property value="#st.last"/><br> </s:iterator> <br><br> <table border="1"> <s:iterator value="#request.persons" var="person" status="st"> <tr class="<s:property value="#st.even?'evenClass':'oddClass'" />"> <td><s:property value="#person.id" /></td> <td><s:property value="#person.name" /></td> <td><s:property value="#person.age" /></td> </tr><br> </s:iterator> </table><br><br> -------------------------------------------------------------------------------------------------------<br> if/elseif/else 基本的流程控制.‘If’标签可单独使用也可以和‘Else If’标签和(或)一个多个‘Else’一起使用 <br> <table border="1"> <s:iterator value="#request.persons" var="person" status="st"> <tr class="<s:property value="#st.even?'evenClass':'oddClass'" />"> <td><s:property value="#person.id" /></td> <td><s:property value="#person.name" /></td> <td><s:property value="#person.age" /></td> <td><s:if test="#person.age<24">少年</s:if> <s:elseif test="#person.age<26">中年</s:elseif> <s:else>老年</s:else></td> </tr><br> </s:iterator> </table> -------------------------------------------------------------------------------------------------------<br> url:该标签用于创建url,可以通过"param"标签提供request参数. <br> <s:url action="OgnlAction_test" namespace="/ognl" var="myurl"></s:url> <a href="<s:property value='#myurl'/>">测试test</a><br> -------------------------------------------------------------------------------------------------------<br> 使用ognl操作list和数组. <br> <s:iterator value="{1,2,3,4}" var="list"> <s:property value="#list"/><br> </s:iterator> <br><br> <s:iterator value="{'s1','s2','s3','s4'}" var="list"> <s:property value="#list"/><br> </s:iterator> ognl也可直接创建集合对象. <br> <s:iterator value="#request.persons" var="person"> <s:property value="#person.name"/><br> </s:iterator> 使用ognl操作map <br> <s:iterator value="#{'01':'java','02':'php','03':'.net','04':'c++'}" var="abcd"> <s:property value="#abcd.key"/>~~<s:property value="#abcd.value"/><br> </s:iterator> -------------------------------------------------------------------------------------------------------<br> 集合的投影(只输出部分属性) <br> <s:iterator value="#request.persons.{name}" var="person"> <s:property value="#person"/><br> </s:iterator> 集合的过滤<br> <s:iterator value="#request.persons.{?#this.age>24}" var="person"> <s:property value="#person.age"/><br> </s:iterator> 集合的投影和过滤<br> <s:iterator value="#request.persons.{?#this.age>24}.{name}" var="person"> <s:property value="#person"/><br> </s:iterator> </body> </html>

最后

以上就是单薄小甜瓜最近收集整理的关于Struts2 OGNL标签的全部内容,更多相关Struts2内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(60)

评论列表共有 0 条评论

立即
投稿
返回
顶部