Struts2向页面传值的三种方式

首先,我们看一下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";
	}
}

猜你喜欢

转载自blog.csdn.net/tangmingxin0529/article/details/80943211