坚持每天写博文,积累下开发中的点点滴滴。 struts2是个让人爱又让人恨的东东,爱的灵活的插件机制,恨得是有很多原本在servlet中很简单,很容易理解的东东,到了这儿就要绕N个弯,比如说action之间传值这个问题。 方式一:resutl 返回类型为chain
<!-- lang: xml -->
<?xml version="1.0" encoding="UTF-8" ?>
<!-- lang: xml -->
<!DOCTYPE struts PUBLIC
<!-- lang: xml -->
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
<!-- lang: xml -->
"http://struts.apache.org/dtds/struts-2.3.dtd">
<!-- lang: xml -->
<struts>
<!-- lang: xml -->
<package name="index" extends="struts-default">
<!-- lang: xml -->
<action name="index_*" class="demo.IndexAction" method="{1}">
<!-- lang: xml -->
<result name="redirectB" type="chain">
<!-- lang: xml -->
<pram name="actionName">c_doB</pram>
<!-- lang: xml -->
<pram name="username">${username}</pram>
<!-- lang: xml -->
<pram name="pwd">${pwd}</pram>
<!-- lang: xml -->
</result>
<!-- lang: xml -->
</action>
<!-- lang: xml -->
<action name="c_*" class="demo.CAction" method="{1}">
<!-- lang: xml -->
<result>jsps/main.jsp</result>
<!-- lang: xml -->
</action>
<!-- lang: xml -->
</package>
<!-- lang: xml -->
</struts>
chain 方式缺点多多,虽然可以实现该功能,但需要谨慎使用
2.较为常用的redirect方式
<!-- lang: xml -->
<?xml version="1.0" encoding="UTF-8" ?>
<!-- lang: xml -->
<!DOCTYPE struts PUBLIC
<!-- lang: xml -->
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
<!-- lang: xml -->
"http://struts.apache.org/dtds/struts-2.3.dtd">
<!-- lang: xml -->
<struts>
<!-- lang: xml -->
<package name="index" extends="struts-default">
<!-- lang: xml -->
<action name="index_*" class="demo.IndexAction" method="{1}">
<!-- lang: xml -->
<result name="redirectB" type="redirectAction">
<!-- lang: xml -->
c_doB.action?username=${username}&pwd=${pwd}
<!-- lang: xml -->
</result>
<!-- lang: xml -->
</action>
<!-- lang: xml -->
<action name="c_*" class="demo.CAction" method="{1}">
<!-- lang: xml -->
<result>jsps/main.jsp</result>
<!-- lang: xml -->
</action>
<!-- lang: xml -->
</package>
<!-- lang: xml -->
</struts>
CAction源码:
<!-- lang: java -->
public class CAction extends ActionSupport {
<!-- lang: java -->
private String username;
<!-- lang: java -->
private String pwd;
<!-- lang: java -->
<!-- lang: java -->
public String doB(){
<!-- lang: java -->
System.out.println("userName:"+getUsername()+":"+getPwd());
<!-- lang: java -->
return SUCCESS;
<!-- lang: java -->
}
<!-- lang: java -->
<!-- lang: java -->
public String getUsername() {
<!-- lang: java -->
return username;
<!-- lang: java -->
}
<!-- lang: java -->
<!-- lang: java -->
public void setUsername(String username) {
<!-- lang: java -->
this.username = username;
<!-- lang: java -->
}
<!-- lang: java -->
<!-- lang: java -->
public String getPwd() {
<!-- lang: java -->
return pwd;
<!-- lang: java -->
}
<!-- lang: java -->
<!-- lang: java -->
public void setPwd(String pwd) {
<!-- lang: java -->
this.pwd = pwd;
<!-- lang: java -->
}
<!-- lang: java -->
}
IndexAction源码:
<!-- lang: java -->
public class IndexAction extends ActionSupport {
<!-- lang: java -->
<!-- lang: java -->
private String username;
<!-- lang: java -->
private String pwd;
<!-- lang: java -->
<!-- lang: java -->
public String doA() {
<!-- lang: java -->
setUsername("LiSi");
<!-- lang: java -->
setPwd("12345");
<!-- lang: java -->
return "redirectB";
<!-- lang: java -->
}
<!-- lang: java -->
<!-- lang: java -->
public String getUsername() {
<!-- lang: java -->
return username;
<!-- lang: java -->
}
<!-- lang: java -->
<!-- lang: java -->
public void setUsername(String username) {
<!-- lang: java -->
this.username = username;
<!-- lang: java -->
}
<!-- lang: java -->
<!-- lang: java -->
public String getPwd() {
<!-- lang: java -->
return pwd;
<!-- lang: java -->
}
<!-- lang: java -->
<!-- lang: java -->
public void setPwd(String pwd) {
<!-- lang: java -->
this.pwd = pwd;
<!-- lang: java -->
}
<!-- lang: java -->
}
此种方式也有缺点,就是参数会以get的方式传递。所以action之间跳转不到万不得已最好不要用。