首先,我们看一下struts的配置文件
<!-- name:包名,用于被别的包调用或继承
extends:继承哪个包,会继承该包下配置信息和拦截器等等
namespace:选填,url连接必须加入namespace属性值。如下:/new/action.xxx
-->
<package name="test" namespace="/new" extends="struts-default">
<!--action相当于以前的servlet的概念,对应一个请求,name为请求的url地址;class为处理请求的action类 -->
<action name="login" class="com.studyStruts.action.LoginAction">
<!-- 相当于请求处理后要跳转的位置,name为return的值 -->
<result name="success">/success.jsp</result>
<result name="fail">/fail.jsp</result>
</action>
</package>
从action向jsp传值的三种方式
a. 第一种:通过属性的set方法来传值b. 第二种:通过 servlet Api
c. 第三种:通过 ActionContext 传值
以下配置了三个请求,都是一样的,我们看下action实现
<struts>
<package name="default" namespace="/" extends="struts-default">
<action name="index" class="com.xxy.action.TestAction" method="execute">
<result>/index1.jsp</result>
</action>
<action name="index2" class="com.xxy.action.Test2Action" method="execute">
<result>/index2.jsp</result>
</action>
<action name="index3" class="com.xxy.action.Test3Action" method="execute">
<result>/index3.jsp</result>
</action>
</package>
</struts>
1:通过get方法传值
/**
* 第一种:通过 属性的get方法来传值
*/
public class TestAction {
private String name;
public String execute() {
System.out.println(name);
return "success";
}
public String getName() {
return "张三";
}
public String setName(String name) {this.name=name;}}
2:通过servlet传值
/**
* 第二种:通过 servlet Api
*/
public class Test2Action {
public String execute() {
String name = "data123";
HttpServletRequest request = ServletActionContext.getRequest();
request.setAttribute("name", name);
return "success";
}
}
3:通过 ActionContext 传值
import com.opensymphony.xwork2.ActionContext;
/**
* 第三种:通过 ActionContext 传值
*/
public class Test3Action {
public String execute(){
String data = "mydatas。。。。。";
ActionContext.getContext().put("data3", data);
return "success";
}
}