8
.
Struts2
获取
request,session,application
与前台交互
①
Map request =
(Map)ActionContext.getContext().get(
"request"
);
Map session =
(Map)ActionContext.getContext().getSession();
Map application = (Map)ActionContext.getContext().getApplication();
②使用
IOC
依赖注入
基本只用到
session
首先:
Action implements
SessionAware
成员变量:
private
Map<String,
Object>
session
;
实现接口方法:
public
void
setSession(Map<String, Object>
session) {
//
TODO
Auto-generated method stub
this
.
session
= session;
}
把获取的
session
交给
struts2
来创建
9
.分模块配置文件
Struts.xml
文件中使用
<include file=”a.xml”/>
xml
文件中配置各自模块的
action
信息,多人开发,
include
多个,避免版本冲突!
10
.
OGNL
表达式
①可针对对象来在
jsp
页面上调用对象的方法,比
el
表达式高级
(el
只能调对象的属性值如:
user.username),ognl
可以使用
user.toString()
②可访问当前
action
里的普通方法
,
如:
UserAction
里方法
test();jsp
页面访问
<s:property value=”test()” />
③可访问其他类的静态属性和方法:
访问静态属性:
<
s:property
value
=
"@com.braint.struts2.util.TestUtil@STR"
/><
br
>
访问静态方法:
<
s:property
value
=
"@com.braint.struts2.util.TestUtil@test()"
/><
br
>
静态方法的访问,
struts.xml
配置里需设置
<
constant
name
=
"struts.ognl.allowStaticMethodAccess"
value
=
"true"
/>
④可创建类的实例:
<
s:property
value
=
"@new com.braint.struts2.util.TestUtil()"
/><
br
>
⑤访问集合:
结合访问对象与访问对象里的方法一样,可以通过访问
list,set
或
map
和获取集合里的值;
如:
<s:property value=”userList[0].name”
/>
效果同上
<s:property value=”userList.{name}[0]” />
单独
userList.{name}
效果是获取
userList
里的所有
name
属性的一个集合
<s:property value=”userList.size()”
/>
⑥更强大的过滤集合:
<s:property value=”userList.{?#this.name==’admin’}.name”
/>
userList.{?#this.name==’admin’}
表示遍历
userList
,返回
name
值为
admin
的对象
userList.{^#this.name==’admin’}
过滤后返回的对象里的第一个
,^
表示开头
userList.{$#this.name==’admin’}
过滤后返回的对象里的最后一个
,$
表示结尾
<s:property value=”userList[0].name
== null” />
空返回
flase;
非空
true
11
.
Struts2
标签
http://struts.apache.org/2.1.8/docs/tag-reference.html
在线标签文档
if,else if,else
iterator
list:
<
s:iterator
value
=
"{1, 2, 3}"
var
=
"test"
>
<
s:property
value
=
"#test"
/>
|
</
s:iterator
>
<
s:iterator
value
=
"userList"
var
=
"user"
>
<
s:property
value
=
"#user.name"
/>
|
</
s:iterator
>
注意点:
value
里取的
userList
必需在
action
里有成员变量且有
set,get
方法
Map:
与
list
类似
<
s:iterator
value
=
"#{1:’a’,
2:’b’, 3:’c’}"
var
=
"test"
>
<
s:property
value
=
"#test.key"
/>
#test.value
</
s:iterator
>
注意点:
map
声明必须在
{}
前加
#
,与
list
的区别