方法:Action实现RequestAware,SessionAware等,属性Map, 并override相应方法(public void setSession)。
eg.
package com.bjsxt.struts2.user.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<String, Object> request;
private Map<String, Object> session;
private Map<String, Object> application;
//DI dependency injection
//IoC inverse of control
public String execute() {
request.put("r1", "r1");
session.put("s1", "s1");
application.put("a1", "a1");
return SUCCESS;
}
@Override
public void setRequest(Map<String, Object> request) {
this.request = request;
}
@Override
public void setSession(Map<String, Object> session) {
this.session = session;
}
@Override
public void setApplication(Map<String, Object> application) {
this.application = application;
}
}
介绍:Struts2拿到HttpRequest将之映射为MapRequest,然后找到相应的Action,接着Struts2利用反射机制了解Action是否实现了xxxAware。若是,则将MapRequest内容保存入Action的属性Map xxx中(调用的是Action中的public void setXXX),于是Action就获得了web元素,然后可通过put( , )方法往里面写值。
输出的JSP页面可以通过<s:property value="#key" /> 来获取StackContext中的内容,通过<s:property value="key"来获得ValueStack中的内容。
<s:debug></s:debug>可调出StackContext和ValueStack。
浙公网安备 33010602011771号