分别介绍两种方法来取得request、session、application和 HttpServletRequest、HttpSession、ServletContext
这里是第一种方法,不过不常用,过于依赖于容器
- public class LoginAction extends ActionSupport {
- private Map request;
- private Map session;
- private Map application;
- public LoginAction1() {
- request = (Map)ActionContext.getContext().get("request" );
- session = ActionContext.getContext().getSession();
- application = ActionContext.getContext().getApplication();
- }
- public String execute() {
- request.put("r1" , "r1" );
- session.put("s1" , "s1" );
- application.put("a1" , "a1" );
- return SUCCESS;
- }
- }
public class LoginAction extends ActionSupport {
private Map request;
private Map session;
private Map application;
public LoginAction1() {
request = (Map)ActionContext.getContext().get("request");
session = ActionContext.getContext().getSession();
application = ActionContext.getContext().getApplication();
}
public String execute() {
request.put("r1", "r1");
session.put("s1", "s1");
application.put("a1", "a1");
return SUCCESS;
}
}
第二种方法:这种方法最常用!!!! struts标签访问,加“#”。
//只用这种方法!!!这种方法最常用(而且中间涉及到一种思想:控制反转或称依赖注入)
- package dalei;
- 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.ActionSupport;
- public class Action_02 extends ActionSupport implements RequestAware,
- SessionAware, ApplicationAware {
- //IoC inverse of control(控制反转)
- //DI dependency injection(依赖注入)
- private Map<String, Object> request;
- private Map<String, Object> session;
- private Map<String, Object> application;
- //因为是Map类型的数据,所以不能再用以前的setAttribute。
- public String execute() {
- request.put("r1" , "r1" );
- session.put("s1" , "s1" );
- application.put("a1" , "a1" );
- return SUCCESS;
- }
- //负责把三个元素new()出来,容器帮忙来初始化。
- @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;
- }
- }
- Action_02.java
package dalei;
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.ActionSupport;
public class Action_02 extends ActionSupport implements RequestAware,
SessionAware, ApplicationAware {
//IoC inverse of control(控制反转)
//DI dependency injection(依赖注入)
private Map<String, Object> request;
private Map<String, Object> session;
private Map<String, Object> application;
//因为是Map类型的数据,所以不能再用以前的setAttribute。
public String execute() {
request.put("r1", "r1");
session.put("s1", "s1");
application.put("a1", "a1");
return SUCCESS;
}
//负责把三个元素new()出来,容器帮忙来初始化。
@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;
}
}
Action_02.java
- <action name= "er" class = "dalei.Action_02" >
- <result>
- /hello.jsp
- </result>
- </action>
<action name="er"class="dalei.Action_02">
<result>
/hello.jsp
</result>
</action>
struts.xml
struts中,jsp页面取context中的值:
- <s:property value="#request.r1" /> | <%=request.getAttribute( "r1" ) %><br>
- <s:property value="#session.s1" /> | <%=session.getAttribute( "s1" ) %><br>
- <s:property value="#application.a1" /> | <%=application.getAttribute( "a1" )%><br>
- <s:debug />
- hello.jsp
……
<%@taglib uri="/struts-tags" prefix="s" %>
……
<body>
……
<s:property value="#request.r1"/> | <%=request.getAttribute("r1") %><br>
<s:property value="#session.s1"/> | <%=session.getAttribute("s1") %><br>
<s:property value="#application.a1"/> | <%=application.getAttribute("a1")%><br>
<s:debug />
……
</body>
……
hello.jsp
第三种方法
- import javax.servlet.ServletContext;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpSession;
- import org.apache.struts2.ServletActionContext;
- import com.opensymphony.xwork2.ActionSupport;
- public class LoginAction3 extends ActionSupport {
- private HttpServletRequest request;
- private HttpSession session;
- private ServletContext application;
- public LoginAction3() {
- request = ServletActionContext.getRequest();
- session = request.getSession();
- application = session.getServletContext();
- }
- public String execute() {
- request.setAttribute("r1" , "r1" );
- session.setAttribute("s1" , "s1" );
- application.setAttribute("a1" , "a1" );
- return SUCCESS;
- }
- }
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class LoginAction3 extends ActionSupport {
private HttpServletRequest request;
private HttpSession session;
private ServletContext application;
public LoginAction() {
request = ServletActionContext.getRequest();
session = request.getSession();
application = session.getServletContext();
}
public String execute() {
request.setAttribute("r1", "r1");
session.setAttribute("s1", "s1");
application.setAttribute("a1", "a1");
return SUCCESS;
}
}
第四种方法
- import javax.servlet.ServletContext;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpSession;
- import org.apache.struts2.interceptor.ServletRequestAware;
- import com.opensymphony.xwork2.ActionSupport;
- public class LoginAction extends ActionSupport implements ServletRequestAware {
- private HttpServletRequest request;
- private HttpSession session;
- private ServletContext application;
- public String execute() {
- request.setAttribute("r1" , "r1" );
- session.setAttribute("s1" , "s1" );
- application.setAttribute("a1" , "a1" );
- return SUCCESS;
- }
- @Override
- public void setServletRequest(HttpServletRequest request) {
- this .request = request;
- this .session = request.getSession();
- this .application = session.getServletContext();
- }
- }