有两种方式可以实现在Action中使用Servlet的API。一种是使用org.apache.struts2.ServletActionContext类,另一种是使用com.opensymphony.xwork2.ActionContext类。

struts2推荐的是使用第二种方式:使用ActionContext类来对request、session和application对象进行操作。

方式一:使用ServletActionContext类(紧耦合)

1. 创建控制层

package com.clzhang.struts2.demo4;import org.apache.struts2.ServletActionContext;public class ServletActionContextTestAction {private String usernameRequest;private String usernameSession;private String usernameApplication;public String getUsernameApplication() {return usernameApplication;}public String getUsernameRequest() {return usernameRequest;}public void setUsernameRequest(String usernameRequest) {this.usernameRequest = usernameRequest;}public String getUsernameSession() {return usernameSession;}public void setUsernameSession(String usernameSession) {this.usernameSession = usernameSession;}public void setUsernameApplication(String usernameApplication) {this.usernameApplication = usernameApplication;}public String execute() {usernameRequest = "request级别的用户名:张三";usernameSession = "session级别的用户名:李四";usernameApplication = "application级别的用户名:赵五";ServletActionContext.getRequest().setAttribute("usernameRequest",usernameRequest);ServletActionContext.getRequest().getSession().setAttribute("usernameSession", usernameSession);ServletActionContext.getServletContext().setAttribute("usernameApplication", usernameApplication);return "showResult";}
}

2. 修改配置文件struts.xml

        <action name="servletActionContextTest" class="com.clzhang.struts2.demo4.ServletActionContextTestAction"><result name="showResult">/struts2/demo4/showResult.jsp</result></action>

3. 创建显示JSP文件(showResult.jsp)

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ page isELIgnored="false"%>
<%@ taglib uri="/struts-tags" prefix="s"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><body>#request.usernameRequest值是:<s:property value="#request.usernameRequest" /><br />#session.usernameSession值是:<s:property value="#session.usernameSession" /><br />#application.usernameApplication值是:<s:property value="#application.usernameApplication" /><br /></body>
</html>

4. 测试

打开IE,输入地址:http://127.0.0.1:8080/st/struts2/servletActionContextTest.action

结果如下:

方式二:使用ActionContext类(松耦合)

1. 创建控制层

package com.clzhang.struts2.demo4;import java.util.Map;import com.opensymphony.xwork2.ActionContext;public class ActionContextTestAction {public String execute() {// 第一种方法向request对象中放数据// 因为ActionContext类没有getRequest()这样的方法,所以需要使用下面的方式获取request对象Map request = (Map) ActionContext.getContext().get("request");request.put("requestValue", "this is reqeustValue");// 第二种方法向request对象中放数据ActionContext.getContext().put("otherrequest","this is otherrequest value");Map session = (Map) ActionContext.getContext().getSession();session.put("sessionValue", "this is sessionValue");Map application = (Map) ActionContext.getContext().getApplication();application.put("applicationValue", "this is applicationValue");return "showScopeValue";}
}

2. 修改配置文件struts.xml

        <action name="actionContextTest" class="com.clzhang.struts2.demo4.ActionContextTestAction"><result name="showScopeValue">/struts2/demo4/showScopeValue.jsp</result></action>

3. 创建显示JSP文件(showScopeValue.jsp)

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib uri="/struts-tags" prefix="s"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><body>request:<s:property value="#request.requestValue" /><br /><br />otherrequest:<s:property value="#request.otherrequest" /><br /><br />session:<s:property value="#session.sessionValue" /><br /><br />application:<s:property value="#application.applicationValue" /><br /><br /></body>
</html>

4. 测试

打开IE,输入地址:http://127.0.0.1:8080/st/struts2/actionContextTest.action

结果如下:

struts2:在Action中使用Servlet的API,设置、读取各种内置对象的属性相关推荐

  1. jsp 将页面中的值导入java中_JavaWeb - JSP:概述和语法,内置对象,JavaBean 组件,MVC 设计模式

    JSP 的概述 概念 JSP 是 Java Server Pages 的简称,跟 Servlet 一样可以动态生成 HTML 响应, JSP 文件命名为 xxx.jsp. 与 Servlet 不同,J ...

  2. JSP和Servlet的区别和联系 JSP 内置对象和作用

    JSP和Servlet的区别和联系 1.jsp经编译后就变成了Servlet. (JSP的本质就是Servlet,JVM只能识别java的类,不能识别JSP的代码,Web容器将JSP的代码编译成JVM ...

  3. java struts2 ajax_在struts2的Action中返回Ajax数据

    author:z_xiaofei168 如何在struts2的action中返回数据(普通字符串.图片)给ajax核心中的XMLHttpRequest对象. 今天下午做项目,就是用户注册是时候,登录名 ...

  4. java喜好设置_Java中使用Preferences 的 API设置用户偏好

    Preferences的中文意思即偏好或喜好的意思,也就是说同一个程序在每次运行完后,可以通过Preferences来记录用户的偏好,下次启动时,程序会利用这些信息来了解用户的喜好.而这些信息个人理解 ...

  5. JSP中的九个内置对象

    2019独角兽企业重金招聘Python工程师标准>>> 一.JSP运行原理 每个JSP 页面在第一次被访问时,WEB容器都会把请求交给JSP引擎(即一个Java程序)去处理.JSP引 ...

  6. JavaWeb学习总结(十七)——JSP中的九个内置对象

    一.JSP运行原理 每个JSP 页面在第一次被访问时,WEB容器都会把请求交给JSP引擎(即一个Java程序)去处理.JSP引擎先将JSP翻译成一个_jspServlet(实质上也是一个servlet ...

  7. jsp中的内置对象(9个)、作用

    jsp内置对象 定义:可以不加声明就在JSP页面脚本(Java程序片和Java表达式)中使用的成员变量 JSP共有以下9种基本内置组件(可与ASP的6种内部组件相对应): 1.request对象 客户 ...

  8. JavaWeb学习总结(十七):JSP中的九个内置对象

    一.JSP运行原理 每个JSP 页面在第一次被访问时,WEB容器都会把请求交给JSP引擎(即一个Java程序)去处理.JSP引擎先将JSP翻译成一个_jspServlet(实质上也是一个servlet ...

  9. JavaWeb学习总结(二)——JSP中的九个内置对象

    一.JSP运行原理 每个JSP 页面在第一次被访问时,WEB容器都会把请求交给JSP引擎(即一个Java程序)去处理.JSP引擎先将JSP翻译成一个_jspServlet(实质上也是一个servlet ...

最新文章

  1. php 结构体_PHP底层原理知其然知其所以然
  2. C# “Thread类Suspend()与Resume()已过时” 解决方法(利用ManualResetEvent类)
  3. PHP安装memcache扩展
  4. Android项目:使用pulltorefresh开源项目扩展为下拉刷新上拉加载更多的处理方法,监听listview滚动方向...
  5. java 类型转换_java中的基本数据类型的转换
  6. testufo测试刷新率测试_上手体验微星电竞显示器PAG301CR:200Hz高刷新率只是它的小亮点...
  7. 一个社交电商小程序配套的平台接
  8. 【OpenCV】Retinex图像增强(SSR,MSR,MSRCR)
  9. 队列、栈以及双端队列
  10. 如何注册Google Voice账号(电话号码)
  11. 小程序梦想贩卖机v2-1.0.88-带4插件(2022.9.8更新)
  12. 七夕表白代码(动画爱心)
  13. 2022年油价的暴涨让你意识到了什么?
  14. ai智能语音机器人的新风向
  15. MySQL数据库期末考试试题及参考答案(01)
  16. 抖音广告多少种,这些你知道吗?
  17. 浅谈从信息化到数字化时代下的业财一体化
  18. C++zlib库实现的GZIP压缩解压缩工具类【多图警告^_^】
  19. linux如何修改机器名,简单修改Linux主机名
  20. CMMI将能力成熟度分为5个级别

热门文章

  1. ITK:创建高斯内核
  2. ITK:重新运行管道不断变化的最大可能的地区
  3. VTK:可视化算法之FindCellIntersections
  4. VTK:可视化算法之LOxGrid
  5. VTK:InfoVis之DelimitedTextReader
  6. VTK:图片之ImageSlice
  7. OpenCV相机使用的实例(附完整代码)
  8. Qt Creator启动调试器
  9. k8s pod里访问不到外部ip_K8S中的Service的存在理由
  10. tensorflow中tf.get_variable()函数详解