Struts2中获取Web元素request、session、application对象的四种方式
我们在学习web编程的时候,一般都是通过requet、session、application(servletcontext)进行一系列相关的操作,request、session、和application他们都是web开发最常用和最实用的对象,有了它们可以大大方便开发人员进行开发和操作。但是在struts2中,基本都是action,这些个方法都是没有requet、session、application,所以如何获取这几个常用对象,也成了大家都比较关注的问题,下面我就来演示下,如何在struts2中来获取这三个对象。
方式一:通过ActionContext对象来获取
package com.action.day01; import java.util.Map; import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport; /**
* 取map类型的request、session、servletcontext
* 通过ActionContext对象来获取
* @author Administrator
*
*/
public class AccessWebElementAction extends ActionSupport {
private Map<String, Object> request;
private Map<String, Object> session;
private Map<String, Object> application; public AccessWebElementAction() {
request = (Map<String, Object>) ActionContext.getContext().get("request");
session = ActionContext.getContext().getSession();
application = ActionContext.getContext().getApplication();
} public String getWebElement() {
//将数据存到requet中
request.put("r1", "r1");
//将数据存到session中
session.put("s1", "s1");
//将数据存到application中
application.put("a1", "a1");
return SUCCESS;
}
}
方式二:通过实现RequestAware, SessionAware, ApplicationAware这三个接口的方式来获取(最常用)
package com.action.day01; import java.util.Map; import org.apache.struts2.interceptor.ApplicationAware;
import org.apache.struts2.interceptor.RequestAware;
import org.apache.struts2.interceptor.SessionAware; import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport; /**
* 取map类型的request、session、servletcontext 通过是实现RequestAware, SessionAware,
* ApplicationAware 然后把我们定义的变量传递进去,进行初始化,由容器自动办帮我们创建,我们只是传递个参数变量进去接收对象即可
*
* @author Administrator
*
*/
public class AccessWebElementAction2 extends ActionSupport implements RequestAware, SessionAware, ApplicationAware {
private Map<String, Object> request;
private Map<String, Object> session;
private Map<String, Object> application;
public String getWebElement() {
// 将数据存到requet中
request.put("r1", "r1");
// 将数据存到session中
session.put("s1", "s1");
// 将数据存到application中
application.put("a1", "a1");
return SUCCESS;
} @Override
public void setApplication(Map<String, Object> application) {
this.application = application;
} @Override
public void setSession(Map<String, Object> session) {
this.session = session;
} @Override
public void setRequest(Map<String, Object> request) {
this.request = request;
}
}
方式三:通过ServletActionContext对象来获取Http类型的request、session、application
package com.action.day01; import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionSupport; /**
* 取Http类型的request、session、servletcontext 通过ServletActionContext对象来获取
*
* @author Administrator
*
*/
public class AccessWebElementAction3 extends ActionSupport {
private HttpServletRequest request;
private HttpSession session;
private ServletContext application; public AccessWebElementAction3() {
request = ServletActionContext.getRequest();
session = ServletActionContext.getRequest().getSession();
application = ServletActionContext.getServletContext();
} public String getWebElement() {
// 将数据存到requet中
request.setAttribute("r1", "r1");
// 将数据存到session中
session.setAttribute("s1", "s1");
// 将数据存到application中
application.setAttribute("a1", "a1");
return SUCCESS;
}
}
方式四:通过实现ServletRequestAware接口获取HttpServletRequest对象,进而通过request对象获取session和application对象
package com.action.day01; import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession; import org.apache.struts2.ServletActionContext;
import org.apache.struts2.interceptor.ServletRequestAware; import com.opensymphony.xwork2.ActionSupport; /**
* 取Http类型的request、session、servletcontext 通过实现ServletRequestAware接口来获取
*
* @author Administrator
*
*/
public class AccessWebElementAction4 extends ActionSupport implements ServletRequestAware {
private HttpServletRequest request;
private HttpSession session;
private ServletContext application; public AccessWebElementAction4() { session = request.getSession();
application = request.getServletContext();
} public String getWebElement() {
// 将数据存到requet中
request.setAttribute("r1", "r1");
// 将数据存到session中
session.setAttribute("s1", "s1");
// 将数据存到application中
application.setAttribute("a1", "a1");
return SUCCESS;
} @Override
public void setServletRequest(HttpServletRequest request) {
// 使用我们定义的属性来获取容器自动创建的HttpServletRequest对象
this.request = request; }
}
至此,在struts2中方式,获取request、sessioin、application对象三种方法已经说明完毕了,有不足的地方,希望大家多多提意见!
Struts2中获取Web元素request、session、application对象的四种方式的更多相关文章
- Struts2中访问web元素的四种方式
Struts2中访问web元素的四种方式如下: 通过ActionContext来访问Map类型的request.session.application对象. 通过实现RequestAware.Sess ...
- springMVC中获取request和response对象的几种方式(RequestContextHolder)
springMVC中获取request和response对象的几种方式 1.最简单方式:参数 2.加入监听器,然后在代码里面获取 原文链接:https://blog.csdn.net/weixin_4 ...
- struts2获取web元素(request、session、application)
一.Action中获取 第一种方式: 通过ActionContext,这种方式取到的对象是Map类型 import java.util.Map; import com.opensymphony.xwo ...
- java中获取类加载路径和项目根路径的5种方式分析
package my; import Java.io.File; import java.io.IOException; import java.net.URL; public class MyUrl ...
- Asp.NET设置Session过期时间的四种方式
在Asp.net中,可以有四处设置Session的过期时间: 一.全局网站(即服务器)级 IIS-网站-属性-Asp.net-编辑配置-状态管理-会话超时(分钟)-设置为120,即为2小时,即120分 ...
- tomcat 设置session过期时间(四种方式)
1.在tomcat-->conf-->servler.xml文件中定义: <Context path="/test" docBase="/test&qu ...
- JavaScript中定义对象的四种方式
最近在阅读< JavaScript 高级程序设计>,未免遗忘读过的内容,就打算以博客的形式做些读书笔记.今天介绍的是 JavaScript 中的四种定义对象的方法,除了这四种方法,还有工厂 ...
- Java反射获取类对象的三种方式
package demo01; /* * 获取一个类的class文件对象的三种方式 * 1.对象获取 * 2.类名获取 * 3.Class类的静态方法获取 */ public class Reflec ...
- struts2 action中获取request session application的方法
共四种方式: 其中前两种得到的是Map<String,Object> 后两种得到的才是真正的request对象 而Map就是把request对象中的属性取出做成了键值对而已. [方法一] ...
随机推荐
- [svc]linux测速软件speedtest-cli
linux测速软件: https://github.com/sivel/speedtest-cli 以下是我在gentoo上测的
- struts2异常处理机制
一.处理一般异常(javaBean异常) struts2进行异常处理首先需要添加exception拦截器,而默认拦截器栈已经加入了这个拦截器,所以不用特意的声明.在Struts 2框架中,采用声明式异 ...
- 479. Second Max of Array【easy】
Find the second max number in a given array. Notice You can assume the array contains at least two n ...
- Missing separate debuginfos, use: debuginfo-install
环境:CentOS6.2 64位 操作:使用gdb调试C++查询MySQL数据库的程序 原因: 解决办法: 1. 修改文件/etc/yum.repos.d/CentOS-Debuginfo.repo ...
- Lucene用法10个小结 (zhuan)
http://www.cfanz.cn/index.PHP?c=article&a=read&id=303149 *********************************** ...
- OpenGL ES 简单教程
什么是OpenGL ES? OpenGL ES (为OpenGL for Embedded System的缩写) 为适用于嵌入式系统的一个免费二维和三维图形库. 为桌面版本号OpenGL 的一个子集. ...
- Linux网络编程wait()和waitpid()的讲解
本文讲的是关于wait和waitpid两者的区别与联系.为避免僵尸进程的产生,无论我们什么时候创建子进程时,主进程都需要等待子进程返回,以便对子进程进行清理.为此,我们在服务器程序中添加SIGCHLD ...
- hdu6149 Valley Numer II 分组背包+状态压缩
/** 题目:hdu6149 Valley Numer II 链接:http://acm.hdu.edu.cn/showproblem.php?pid=6149 题意: 众所周知,度度熊非常喜欢图. ...
- hdu4746 Mophues 莫比乌斯
/** 题目:hdu4746 Mophues 链接:http://acm.hdu.edu.cn/showproblem.php?pid=4746 题意:求x,y在给定范围内gcd(x,y)分解素因子的 ...
- [Python基础]Python中remove,del和pop的区别
以a=[1,2,3] 为例,似乎使用del, remove, pop一个元素2 之后 a都是为 [1,3], 如下:http://Novell.Me >>> a=[1,2,3] &g ...