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日

相关文章

  • 在IDEA中安装MyBatis Log Plugin插件,执行mybatis的sql语句(推荐)

    接下来我将详细讲解在IDEA中安装MyBatis Log Plugin插件的过程及使用方法。 步骤一:安装MyBatis Log Plugin插件 打开IDEA,从菜单栏选择“File” > “Settings”(或者使用快捷键“Ctrl + Alt + S”)。 在弹出的窗口中选择“Plugins”,然后点击“Browse repositories”…

    Java 2023年5月20日
    00
  • maven搭建spring项目(图文教程)

    我来详细讲解“maven搭建spring项目(图文教程)”的完整攻略。 一、环境要求 在开始前,请确保你已经安装了以下环境: JDK 1.8或以上 Maven 二、创建Maven项目 打开命令行工具,进入一个空的目录,执行以下命令: mvn archetype:generate -DgroupId=com.example -DartifactId=sprin…

    Java 2023年5月19日
    00
  • spring mvc中@RequestBody注解的作用说明

    在 Spring MVC 中,@RequestBody 注解用于将 HTTP 请求体映射到一个对象上。本文将详细讲解 @RequestBody 注解的作用说明,并提供两个示例说明。 1. @RequestBody 注解的作用说明 @RequestBody 注解用于将 HTTP 请求体映射到一个对象上。当我们使用 @RequestBody 注解时,Spring…

    Java 2023年5月18日
    00
  • Spring 注解

    @SpringBootApplication 申明让spring boot自动给程序进行必要的配置,这个配置等同于: @Configuration ,@EnableAutoConfiguration 和 @ComponentScan 三个配置。 @RequestMapping 提供路由信息,负责URL到Controller中的具体函数的映射。 @Respon…

    Java 2023年5月9日
    00
  • Java中Future和FutureTask的示例详解及使用

    Java中Future和FutureTask的示例详解及使用 1. 简介 Java中的Future和FutureTask都是用于异步执行任务的工具类。在某些场景下,任务执行需要花费较长时间,为了避免阻塞主线程或者降低用户体验,可以使用Future和FutureTask来实现任务的异步执行和结果的获取。 Future用于表示异步任务的结果,并提供了相应的方法来…

    Java 2023年5月26日
    00
  • javaweb实现文件上传小功能

    我将为您详细讲解“javaweb实现文件上传小功能”的完整攻略。 在网页中添加上传文件的html代码 文件上传小功能需要用到前端页面,一般使用html代码实现。可以使用form表单来实现文件上传,具体实现可以参考以下示例: <form action="fileupload.jsp" enctype="multipart/f…

    Java 2023年5月31日
    00
  • Java Runtime类详解_动力节点Java学院整理

    这里是针对“Java Runtime类详解_动力节点Java学院整理”的完整攻略。 什么是Java Runtime类? Java Runtime类是Java程序运行环境的一部分。它提供了许多重要的运行时方法,例如在程序运行时执行其他程序、获取JVM的空闲内存量、强制垃圾回收等。本身是一个单例类,通过获取 Runtime.getRuntime() 实例获得。 …

    Java 2023年5月20日
    00
  • 深入理解TextView实现Rich Text–在同一个TextView设置不同字体风格

    深入理解TextView实现Rich Text的攻略如下: 1. 了解Spannable接口 TextView实现富文本的关键在于使用Spannable接口。Spannable是一个接口,用于控制文本的呈现方式,可以在TextView中实现不同的文本样式。 Spannable接口提供了许多实现富文本的方法,如ForegroundColorSpan、Backg…

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