JSP页面如何请求Action中的数据(通过Request,Session,
Application)?
Struts:
<package name="login" extends="struts-default" namespace="/login">
<action name="login*" class="com.bjsxt.struts2.user.action.LoginAction{1}">
<result>/user_login_success.jsp</result>
</action>
</package>
Action(红色字体部分为常用方法):
import java.util.Map;
import org.apache.struts2.interceptor.ApplicationAware;
import org.apache.struts2.interceptor.RequestAware;
import org.apache.struts2.interceptor.SessionAware;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class LoginAction2 extends ActionSupport implements RequestAware,SessionAware, ApplicationAware {
private Map request;
private Map session;
private Map application;
//通过(DI dependency injection(控制反转)或 IoC inverse of control(依赖注入))
//初始化request,session,application。
public String execute() {
request.put("r1", "r1");
session.put("s1", "s1"); (一般情况下只使用这种方法。)
application.put("a1", "a1");
return SUCCESS;
}
@Override
public void setRequest(Map request) {
this.request = request;
}
@Override
public void setSession(Map session) {
this.session = session;
}
@Override
public void setApplication(Map application) {
this.application = application;
}
}
Jsp(index):
<body>
<br />
<form name="f" action="" method="post">
用户名:<input type="text" name="name"/>
密码:<input type="text" name="password"/>
<br />
<input type="button" value="submit1" οnclick="javascript:document.f.action='login/login1';document.f.submit();" />
</form>
</body>
Jsp(display):
<body>
User Login Success!
<br />
<s:property value="#request.r1"/> | <%=request.getAttribute("r1") %> <br />
<:property value="#session.s1"/>| <%=session.getAttribute("s1") %> <br />
<s:property value="#application.a1"/> | <%=application.getAttribute("a1") %> <br />
<s:property value="#attr.a1"/><br />
<s:property value="#attr.s1"/><br />
<s:property value="#attr.r1"/><br />
br />