struts2在action中获取request、session、application,并传递数据
假设仅仅是通过request、session、application传递数据,则不须要获取对应的对象也能够传递数据,代码例如以下:
ScopeAction.java:
package com.itheima.action; import com.opensymphony.xwork2.ActionContext; public class ScopeAction { public String execute() {
/*
* 我们这里不通过字段(加入setXXX、getXXX方法)传递数据,我们想着通过域(request、session、application)
* 传递数据。怎么样才干做到呢?struts2採用低侵入式,action与servlet没有不论什么关联,怎么才干获取域并传递数据呢,
* 这时就用到了ActionContext类
*/
ActionContext context = ActionContext.getContext();
context.getApplication().put("application", "application域");//通过ServletContext域传递数据
context.getSession().put("session", "session域");//通过Session域传递数据
context.put("request", "request域");//通过Request域传递数据
return "success";
}
}
struts2.xml:
<action name="scopeAction_*" class="com.itheima.action.ScopeAction" method="{1}">
<result name="success">/msg.jsp</result>
</action>
msg.jsp:
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
</head>
<body>
${applicationScope.application }<br/>
${sessionScope.session }<br/>
${requestScope.request }<br/>
</body>
</html>
地址栏:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbTYzMTUyMTM4Mw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
=============================================================================================
上述方式没有获取到域对象。这里我们也能够通过其它方法获取域对象:
在上述的ScopeAction中加入例如以下方法:
public String doexe() {
HttpServletRequest request = ServletActionContext.getRequest();
request.setAttribute("request", "请求域");
ServletContext context = ServletActionContext.getServletContext();
context.setAttribute("application", "应用域");
HttpSession session = request.getSession();
session.setAttribute("session", "会话域");
// HttpServletResponse response = ServletActionContext.getResponse();
return "success";
}
其它和上述不变。然后地址栏中输入:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbTYzMTUyMTM4Mw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
===============================================================================================
另外另一种方式就是通过框架注入:
Scope2Action.java:
package com.itheima.action; import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.interceptor.ServletResponseAware;
import org.apache.struts2.util.ServletContextAware; public class Scope2Action implements ServletRequestAware, ServletResponseAware, ServletContextAware{ private HttpServletRequest request;
private HttpServletResponse response;
private ServletContext servletContext;
@Override
public void setServletContext(ServletContext arg0) {
this.servletContext = arg0;
} @Override
public void setServletResponse(HttpServletResponse arg0) {
this.response = arg0;
} @Override
public void setServletRequest(HttpServletRequest arg0) {
this.request = arg0;
} public String execute() {
request.setAttribute("request", "请 求 域");
request.getSession().setAttribute("session", "会 话 域");
servletContext.setAttribute("application", "应 用 域");
return "success";
} }
struts2.xml:
<action name="scope2Action" class="com.itheima.action.Scope2Action">
<result name="success">/msg.jsp</result>
</action>
struts2在action中获取request、session、application,并传递数据的更多相关文章
- struts2 action中获取request session application的方法
共四种方式: 其中前两种得到的是Map<String,Object> 后两种得到的才是真正的request对象 而Map就是把request对象中的属性取出做成了键值对而已. [方法一] ...
- Struts2 在Action中获取request、session、servletContext的三种方法
首页message.jsp: <body> ${requestScope.req }<br/> ${applicationScope.app }<br/> ${se ...
- Struts2的Action中获取request对象的几种方式?
通过ActionContext.getSession获取 通过ServletActionContext.getRequest()获取 通过SessionAware接口注入 通过ServletReque ...
- 9.Struts2在Action中获取request-session-application对象
为避免与Servlet API耦合在一起,方便Action类做单元测试. Struts2对HttpServletRequest.HttpSession.ServletContext进行了封装,构造了三 ...
- 在Struts2的Action中获得request response session几种方法
转载自~ 在Struts2中,从Action中取得request,session的对象进行应用是开发中的必需步骤,那么如何从Action中取得这些对象呢?Struts2为我们提供了四种方式.分别为se ...
- struts2的action中获得request response session 对象
在struts2中有两种方式可以得到这些对象 1.非IoC方式 要获得上述对象,关键Struts 2中com.opensymphony.xwork2.ActionContext类.我们可以通过它的静态 ...
- 160317(一)、在非action中获取request
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes() ...
- Struts2初学 Struts2在Action获取内置对象request,session,application(即ServletContext)
truts2在Action中如何访问request,session,application(即ServletContext)对象???? 方式一:与Servlet API解耦的方式 可以使用 ...
- 在struts2的action中操作域对象(request、session)
在struts2的Action中,操作域对象一共有三种方式: 1.ActionContext(与servelt API无关联): //相当于request ActionContext.getConte ...
随机推荐
- 深入了解Token认证的来龙去脉
Token 是在服务端产生的,如果前端使用用户名/密码向服务端请求认证,服务端认证成功,那么在服务端会返回 Token 给前端.前端可以在每次请求的时候带上 Token 证明自己的合法地位. 不久 ...
- 资源帖:CV代码库搜集
2013计算机视觉代码合集一: 原文链接:http://www.yuanyong.org/blog/cv/cv-code-one 切记:一定要看原文链接 原文链接: http://blog.csdn. ...
- php常用方法一
1.用户名用***替换 /** * 用户名中间用***替换 * @param string $str 需要替换的字符串 * @param int $len 需要替换的位数 * @param strin ...
- 00--Linux常用命令大全
系统信息 arch 显示机器的处理器架构(1) uname -m 显示机器的处理器架构(2) uname -r 显示正在使用的内核版本 dmidecode -q 显示硬件系统部件 - (SMBIOS ...
- Kafka学习笔记(4)----Kafka的Leader Election
1. Zookeeper的基本操作 zookeeper中的节点可以持久化/有序的两个维度分为四种类型: PERSIST:持久化无序(保存在磁盘中) PERSIST_SEQUENTIAL:持久化有序递增 ...
- Python 数据清洗--处理Nan
参考:http://blog.sina.com.cn/s/blog_13050351e0102xfis.html https://www.sogou.com/link?url=DOb0bgH2eKh1 ...
- Javase 简单练习
public class Test10 { public static void main(String[] args) { System.out.println("------------ ...
- [置顶]
HTTP 幂等性概念和应用
转自:http://coolshell.cn/articles/4787.html HTTP 幂等性概念和应用 [ 感谢 Todd 同学 投递本文 ] 基于 HTTP 协议的 Web API 是时下最 ...
- 工作中常见的Git本地分支与远程分支同步场景
Git 是一个开源的分布式版本控制系统,可以有效.高速地处理从很小到非常大的项目版本管理. 一直以来本人使用 Git 处理分支都是现用现查,一是因为怕出错,二还是因为懒,作为一名四年开发经验的前端 ...
- VUE 利用 webpack 给生产环境和发布环境配置不同的接口地址
转载地址: https://blog.csdn.net/gebitan505/article/details/58166055 VUE 利用 webpack 给生产环境和发布环境配置不同的接口地址 前 ...