web.xml配置如下:
- < filter >
- < filter-name > struts2 </ filter-name >
- < filter-class >
- org.apache.struts2.dispatcher.FilterDispatcher
- </ filter-class >
- </ filter >
- < filter-mapping >
- < filter-name > struts2 </ filter-name >
- < url-pattern > /* </ url-pattern >
- </ filter-mapping >
struts.xml配置如下:
- < package name = "tags" extends = "struts-default" >
- < action name = "tags" class = "com.mengya.action.TagsAction" >
- < result name = "success" > /tags.jsp </ result >
- </ action >
- </ package >
TagsAction如下:
- public class TagsAction extends ActionSupport {
- private String username;
- private String password;
- @Override
- public String execute() throws Exception {
- this .addFieldError( "actionError" , "error!!" );
- return SUCCESS;
- }
- public String getPassword() {
- return password;
- }
- public void setPassword(String password) {
- this .password = password;
- }
- public String getUsername() {
- return username;
- }
- public void setUsername(String username) {
- this .username = username;
- }
- }
public class TagsAction extends ActionSupport {
private String username;
private String password;
@Override
public String execute() throws Exception {
this.addFieldError("actionError", "error!!");
return SUCCESS;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
}
Dog Bean如下:
- public class Dog {
- private String dogName;
- public String getDogName() {
- return dogName;
- }
- public void setDogName(String dogName) {
- this .dogName = dogName;
- }
- @Override
- public String toString() {
- return "Dog:DogName=" + dogName;
- }
- }
public class Dog {
private String dogName;
public String getDogName() {
return dogName;
}
public void setDogName(String dogName) {
this.dogName = dogName;
}
@Override
public String toString() {
return "Dog:DogName=" + dogName;
}
}
页面struts标签使用如下:
- < a href = "tags.action?username=u&password=p&age=9" > Struts2Tags </ a >
- < body >
- < ol >
- < li >
- property:
- < s:property value = "username" />
- </ li >
- < li >
- property 取值为字符串:
- < s:property value = "'username'" />
- </ li >
- < li >
- property 设定为默认值:
- < s:property value = "admin" default = "管理员" />
- </ li >
- < li >
- property 设定为HTML:
- < s:property value = "'<hr/>'" escape = "false" />
- </ li >
- < hr />
- < li >
- set 设定mengya的值(默认为Request和ActionContext):
- < s:set var = "mengya" value = "username" > </ s:set >
- </ li >
- < li >
- set 从request中取值:
- < s:property value = "#request.mengya" />
- </ li >
- < li >
- set 从ActionContext中取值:
- < s:property value = "#mengya" />
- </ li >
- < li >
- set 设定范围:
- < s:set var = "adminPassword" value = "password" scope = "session" />
- </ li >
- < li >
- set 从相应的范围取值:
- < %=session.getAttribute("adminPassword")% >
- </ li >
- < li >
- set 从相应的范围取值:
- < s:property value = "#session.adminPassword" />
- </ li >
- < hr >
- < li >
- bean 定义bean,并使用bean的param来设定的新属性值
- < s:bean name = "com.mengya.bean.Dog" > </ s:bean >
- < %-- 没有指定var则在 </ s:bean > 之前会构造一个对象放在椎顶在 </ s:bean > 结束之前则放到了actionContext中 --% >
- </ li >
- < li >
- bean 定义bean,并使用bean的param来设定的新属性值
- < s:bean name = "com.mengya.bean.Dog" var = "myDog" >
- < s:param name = "dogName" value = "'myDog'" > </ s:param >
- </ s:bean >
- 取出值:
- < s:property value = "#myDog" />
- </ li >
- < hr >
- < li >
- include 包含静态英文html
- < s:include value = "/include1.html" > </ s:include >
- </ li >
- < li >
- include 包含静态中文html
- < s:include value = "/include2.html" > </ s:include >
- </ li >
- < li >
- < font color = "red" > %的用法:%是将%{}中的内空强转成ognl表达示而不是普通字符串 </ font >
- < s:set var = "incPage" value = "'/include1.html'" > </ s:set >
- < br >
- < s:include value = "incPage" > </ s:include >
- < br >
- < s:include value = "%{incPage}" > </ s:include >
- < %-- 将incPage作为ognl表达式 --% >
- </ li >
- < li >
- fielderror:
- < s:fielderror key = "actionError" theme = "simple" > </ s:fielderror >
- </ li >
- < hr >
- < li >
- if elseif else: age =
- < s:property value = "#parameters.age[0]" />
- < s:if test = "#parameters.age[0]<0" >
- age error!
- </ s:if >
- < s:elseif test = "#parameters.age[0]<20" >
- to young!
- </ s:elseif >
- < s:else >
- OK!
- </ s:else >
- |
- < s:set var = "age" value = "#parameters.age[0]" > </ s:set >
- < s:if test = "age<0" >
- age error!
- </ s:if >
- < s:elseif test = "age<20" >
- to young!
- </ s:elseif >
- < s:else >
- ok!
- </ s:else >
- |
- < s:if test = "#parameters.aaa==null" > null </ s:if >
- </ li >
- < li >
- 遍历集合:
- < br >
- < s:iterator value = "{'aa','bb','cc'}" >
- < s:property /> |
- </ s:iterator >
- </ li >
- < li >
- 自定义变量:
- < br >
- < s:iterator value = "{'aa','bb','cc'}" var = "temp" >
- < s:property value = "#temp" /> | < s:property
- value = "#temp.toUpperCase()" />
- </ s:iterator >
- </ li >
- < li >
- 使用status:
- < br >
- < s:iterator value = "{11,22,33}" status = "status" >
- < s:property /> |遍历过的总元素: < s:property value = "#status.count" /> |当前元素索引: < s:property
- value = "#status.index" /> |当前值是否为偶数: < s:property
- value = "#status.even" /> |当前值是否为奇数: < s:property
- value = "#status.odd" /> |当前值是否为第一个: < s:property
- value = "#status.first" /> |当前值是否为最后一个: < s:property
- value = "#status.last" />
- < br />
- </ s:iterator >
- </ li >
- < s:debug > </ s:debug >
- </ ol >
- 总结:
- $用于i18n和struts配置文件
- #用于得到ActionContext的值
- %将原本的文本属性解析为OGNL表达式,对于本来就是OGNL的属性不起做用
- </ body >