下面我将详细讲解一下“Struts2 ActionContext 中的数据详解”的完整攻略。
1. 什么是ActionContext
ActionContext 是 Struts2 框架中的一个重要的类,它是一个 Map 对象,用于存储与请求执行过程有关的上下文信息。在 Struts2 中,每个请求都对应着一个请求上下文(ActionContext 对象),它负责将请求对象(Request)、响应对象(Response)、会话(Session)等各种信息传递给相应的 Action 类进行操作。
2. ActionContext 类的主要方法
(1)getContextMap
该方法返回一个 Map
示例代码:
Map<String, Object> contextMap = ActionContext.getContext().getContextMap();
contextMap.put("key", "value");
(2)getSession
该方法返回一个 Map
示例代码:
Map<String, Object> session = ActionContext.getContext().getSession();
session.put("username", "admin");
(3)getValueStack
getValueStack 方法返回一个 ValueStack 对象,它是一个栈结构,用于存储所有要在 JSP 页面上显示的数据。在 Struts2 中,Action 类中的所有成员变量都会被放入 ValueStack 中,可以在 JSP 页面上直接使用 OGNL 表达式来访问。
示例代码:
ValueStack valueStack = ActionContext.getContext().getValueStack();
valueStack.push("hello,world!");
(4)put
该方法用于往当前请求的上下文中存储数据(存储在 ContextMap 中)。
示例代码:
ActionContext.getContext().put("key", "value");
(5)get
该方法用于从当前请求的上下文中获取数据(从 ContextMap 中读取数据)。
示例代码:
Object value = ActionContext.getContext().get("key");
(6)setSession
该方法用于向当前请求对应的会话中存储数据。
示例代码:
ActionContext.getContext().setSession("username", "admin");
(7)getSession
该方法用于从当前请求对应的会话中获取数据。
示例代码:
Object username = ActionContext.getContext().getSession().get("username");
3. 示例
示例1:在 Action 类中向 ValueStack 存储数据,然后在 JSP 页面上显示
public class HelloWorldAction extends ActionSupport{
private String message;
public String execute() throws Exception {
message = "Hello Struts2!";
// 往 ValueStack 中存储数据
ActionContext.getContext().getValueStack().push(message);
return SUCCESS;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
在 JSP 页面上使用 EL 表达式来显示:
<body>
${message}
</body>
示例2:在 Action 类中往 Session 中存储数据,然后在 JSP 页面上显示
public class LoginAction extends ActionSupport{
private String username;
private String password;
public String execute() throws Exception {
if(username.equals("admin") && password.equals("123456")){
// 往 Session 中存储数据
ActionContext.getContext().getSession().put("username", username);
return SUCCESS;
}else{
return ERROR;
}
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
在 JSP 页面上使用 EL 表达式来显示:
<body>
Welcome ${session.username}!
</body>
好了,以上就是关于“Struts2 ActionContext 中的数据详解”的完整攻略,希望能对你有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Struts2 ActionContext 中的数据详解 - Python技术站