struts2:在Action中使用Servlet的API,设置、读取各种内置对象的属性
有两种方式可以实现在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,设置、读取各种内置对象的属性相关推荐
- jsp 将页面中的值导入java中_JavaWeb - JSP:概述和语法,内置对象,JavaBean 组件,MVC 设计模式
JSP 的概述 概念 JSP 是 Java Server Pages 的简称,跟 Servlet 一样可以动态生成 HTML 响应, JSP 文件命名为 xxx.jsp. 与 Servlet 不同,J ...
- JSP和Servlet的区别和联系 JSP 内置对象和作用
JSP和Servlet的区别和联系 1.jsp经编译后就变成了Servlet. (JSP的本质就是Servlet,JVM只能识别java的类,不能识别JSP的代码,Web容器将JSP的代码编译成JVM ...
- java struts2 ajax_在struts2的Action中返回Ajax数据
author:z_xiaofei168 如何在struts2的action中返回数据(普通字符串.图片)给ajax核心中的XMLHttpRequest对象. 今天下午做项目,就是用户注册是时候,登录名 ...
- java喜好设置_Java中使用Preferences 的 API设置用户偏好
Preferences的中文意思即偏好或喜好的意思,也就是说同一个程序在每次运行完后,可以通过Preferences来记录用户的偏好,下次启动时,程序会利用这些信息来了解用户的喜好.而这些信息个人理解 ...
- JSP中的九个内置对象
2019独角兽企业重金招聘Python工程师标准>>> 一.JSP运行原理 每个JSP 页面在第一次被访问时,WEB容器都会把请求交给JSP引擎(即一个Java程序)去处理.JSP引 ...
- JavaWeb学习总结(十七)——JSP中的九个内置对象
一.JSP运行原理 每个JSP 页面在第一次被访问时,WEB容器都会把请求交给JSP引擎(即一个Java程序)去处理.JSP引擎先将JSP翻译成一个_jspServlet(实质上也是一个servlet ...
- jsp中的内置对象(9个)、作用
jsp内置对象 定义:可以不加声明就在JSP页面脚本(Java程序片和Java表达式)中使用的成员变量 JSP共有以下9种基本内置组件(可与ASP的6种内部组件相对应): 1.request对象 客户 ...
- JavaWeb学习总结(十七):JSP中的九个内置对象
一.JSP运行原理 每个JSP 页面在第一次被访问时,WEB容器都会把请求交给JSP引擎(即一个Java程序)去处理.JSP引擎先将JSP翻译成一个_jspServlet(实质上也是一个servlet ...
- JavaWeb学习总结(二)——JSP中的九个内置对象
一.JSP运行原理 每个JSP 页面在第一次被访问时,WEB容器都会把请求交给JSP引擎(即一个Java程序)去处理.JSP引擎先将JSP翻译成一个_jspServlet(实质上也是一个servlet ...
最新文章
- php 结构体_PHP底层原理知其然知其所以然
- C# “Thread类Suspend()与Resume()已过时” 解决方法(利用ManualResetEvent类)
- PHP安装memcache扩展
- Android项目:使用pulltorefresh开源项目扩展为下拉刷新上拉加载更多的处理方法,监听listview滚动方向...
- java 类型转换_java中的基本数据类型的转换
- testufo测试刷新率测试_上手体验微星电竞显示器PAG301CR:200Hz高刷新率只是它的小亮点...
- 一个社交电商小程序配套的平台接
- 【OpenCV】Retinex图像增强(SSR,MSR,MSRCR)
- 队列、栈以及双端队列
- 如何注册Google Voice账号(电话号码)
- 小程序梦想贩卖机v2-1.0.88-带4插件(2022.9.8更新)
- 七夕表白代码(动画爱心)
- 2022年油价的暴涨让你意识到了什么?
- ai智能语音机器人的新风向
- MySQL数据库期末考试试题及参考答案(01)
- 抖音广告多少种,这些你知道吗?
- 浅谈从信息化到数字化时代下的业财一体化
- C++zlib库实现的GZIP压缩解压缩工具类【多图警告^_^】
- linux如何修改机器名,简单修改Linux主机名
- CMMI将能力成熟度分为5个级别