1 struts2的UI标签
导入struts2的标签库
1 <%@ taglib prefix="s" uri="/struts-tags"%>
1 <div>
2 用户名:
3 <s:textfield name="uname"></s:textfield>
4 </div>
5 <div>
6 密 码:
7 <s:password name="upwd"></s:password>
8 </div>
9 <!-- #用来定义ognl表达式 -->
10 <div>
11 性 别:
12 <s:radio list="#{1:'男',2:'女'}" name="sex"></s:radio>
13 </div>
14 <div>
15 爱 好:
16 <s:checkboxlist list="#{1:'吃',2:'喝',3:'拉',4:'撒'}" name="hobby"></s:checkboxlist>
17 </div>
18 <!-- listKey="属性" listValue="属性" -->
19 <div>
20 城 市:
21 <s:select list="#request.clist" listKey="cid" listValue="cname"></s:select>
22 </div>
23 <div>
24 简 介:
25 <s:textarea name="intro" cols="30" rows="5"></s:textarea>
26 </div>
27 <div>
28 头 像:
29 <s:file name="img"></s:file>
30 </div>
31 <div>
32 <s:submit></s:submit>
33 <s:reset></s:reset>
34 </div>
2 ognl表达式
El:表达式,完成web对象中数据的访问
Ognl:对象图形导航语言(属性链 a.b.c),struts2框架 的表达式语言,必须集
struts2的标签进行使用
2.1 Action的上下文
ActionContext为Action的上下文对象,本质就一个Map集合
每次请求会创建一个Action的对象,而与Action关联的有一个ActionContext对象
ActionContext和当前线程是进行了绑定的(只要服务器创建一个线程对象,就会绑定一个ActionContext对象)
Struts2中的Action是线程安全的。Action是多例的。
Ognl表达式是为访问Action的上下文对象(Map)
ValueStack:是被默认的访问的对象,如果需要访问Map中的数据必须明确指定
ActionContext:ognl表达式访问该对象
——root(valueStack,被默认访问的饿对象)
———request
———session
———application
———attr
———paramters
总结:
Action是多例,而且线程安全
Ation的上下文对象的结构:
----valutStack
———request
———session
———application
———attr
———paramters
Ognl就是struts2用来访问ActionContext的,ActiontContext保存了当前Action的对象,与Action相关的错误信息,客户端请求的参数
2.2 ognl表达式的使用
访问默认的valuestack
<s:property value=”ognl”/>
访问Map(Stack Context)
<s:property value=”#ognl”/>
<s:property value=”#session.key”/>
<s:property value=”#request.key”/>
<s:property value=”#application.key”/>
<s:property value=”#attr.key”/>
<s:property value=”#paramters.uname”/>
访问静态属性
<s:property value=”@java.lang.Integer@MAX_VALUE”/>
调用静态方法
<constant name="struts.ognl.allowStaticMethodAccess" value="true"></constant>
<s: property value=”@java.lang.Integer@parseInt(‘123’)”/>
调用Action的方法
<s: property value=”sayHi(‘xxxxx’)”/>
使用ognl表达式能访问的数据使用el表达式通用可以访问
Jstl+el
Strutstag+ognl+el(只能用在数据的显示,不能作为strutstag的属性值出现):
Ognl中的其他符号 % , $
2.3 struts2的逻辑标签
1 <s:iterator value="#ulist" var="uu" status="st">
2 <s:if test="#st.index%2==0">
3 <div style="background-color: red">
4 <s:property value="#st.index" />
5 ==
6 <br />
7 <s:property value="#uu.uname" />
8 --
9 <br /><!-- 默认访问栈顶 -->
10 ${uu.uname }----el
11 <br />
12 </div>
13 </s:if>
14 <s:else>
15 <div style="background-color: yellow">
16 <s:property value="#st.index" />
17 ==
18 <br />
19 <s:property value="#uu.uname" />
20 --
21 <br /><!-- 默认访问栈顶 -->
22 ${uu.uname }----el
23 <br />
24 </div>
25 </s:else>
26 </s:iterator>
3 struts2数据回显
在数据的录入界面,当提交的时候,有错误数据存在,返回该页面的时候数据不能全部消失。
数据更新的更新。