Struts2 ActionContext 中的数据详解

下面我将详细讲解一下“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技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • Java编程调用微信分享功能示例

    下面将详细讲解“Java编程调用微信分享功能示例”的完整攻略。 准备工作 1.获取微信开发者账号 要调用微信分享功能,首先需要先去微信公众平台申请开发者账号。 2.注册开发者账户 如果你还没有微信公众平台的账号,请先注册账户并绑定一个公众号。 3.开通JS接口权限 在微信公众平台中,需要先开通JS接口权限,该权限可以开启微信的网页开发能力,包括调用微信分享功…

    Java 2023年5月26日
    00
  • Spring MVC的优点与核心接口_动力节点Java学院整理

    Spring MVC的优点与核心接口 Spring MVC的优点 简化了Web开发流程 与Spring框架集成紧密 支持RESTful风格的请求 可通过配置文件灵活配置 Spring框架底层的支持,如IoC和AOP,便于扩展 Spring MVC的核心接口 DispatcherServlet:核心控制器,接收请求并转发到相应的处理逻辑 HandlerMapp…

    Java 2023年5月16日
    00
  • 如何把JAR发布到maven中央仓库的几种方法

    下面是如何将JAR包发布到Maven中央仓库的几种方法的完整攻略: 方法一:使用Maven发布插件 首先,在你的项目中加入Maven发布插件: <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <art…

    Java 2023年5月20日
    00
  • SpringSecurity注销设置的方法

    下面是关于SpringSecurity注销设置的方法的完整攻略: 1. 设置注销页面 首先,我们需要在SpringSecurity配置中指定注销页面的URL。我们可以在XML配置文件中加入以下配置: <http> <!–省略其他配置–> <logout logout-url="/logout" logou…

    Java 2023年5月20日
    00
  • 详解SpringBoot定制@ResponseBody注解返回的Json格式

    接下来我将详细讲解“详解SpringBoot定制@ResponseBody注解返回的Json格式”的完整攻略。本攻略主要包括以下内容: 什么是@ResponseBody注解 @ResponseBody注解返回的默认Json格式 定制@ResponseBody注解返回的Json格式 1. 什么是@ResponseBody注解 @ResponseBody注解是S…

    Java 2023年5月26日
    00
  • java JVM原理与常识知识点

    Java JVM原理与常识知识点 Java虚拟机(Java Virtual Machine,JVM)是Java语言实现跨平台的核心部件。它是一个用来执行Java字节码的虚拟机,Java源文件被编译成能够运行在JVM上的字节码文件。因此,深入了解JVM的原理是Java编程中必不可少的一部分。 本文将从以下几个方面进行讲解Java JVM原理与常识知识点:- J…

    Java 2023年5月24日
    00
  • java打印指定年月的日历

    Java 打印指定年月的日历 1. 概述 本教程将介绍如何使用 Java 打印指定年月的日历,本教程不需要使用任何第三方库。 2. 步骤 2.1 步骤一:获取指定日期的 Calendar 对象 java.util.Calendar 类是表示日历的抽象类。它提供了许多静态工厂方法来获取实例, 例如 getInstance() 返回一个默认时区的当前日期和时间的…

    Java 2023年5月26日
    00
  • Xml中使用foreach遍历对象实现代码

    下面就为你详细讲解使用foreach遍历对象实现代码的攻略。 1. 前置条件 在Xml中使用foreach遍历对象,需要先了解以下几点: XML – Extensible Markup Language(可扩展标记语言) foreach循环语句 如何通过XPath表达式获取XML节点 2. 步骤 2.1 导入XML文件 首先,需要将XML文件读取到程序中,可…

    Java 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部