我们在学习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对象的四种方式的更多相关文章

  1. Struts2中访问web元素的四种方式

    Struts2中访问web元素的四种方式如下: 通过ActionContext来访问Map类型的request.session.application对象. 通过实现RequestAware.Sess ...

  2. springMVC中获取request和response对象的几种方式(RequestContextHolder)

    springMVC中获取request和response对象的几种方式 1.最简单方式:参数 2.加入监听器,然后在代码里面获取 原文链接:https://blog.csdn.net/weixin_4 ...

  3. struts2获取web元素(request、session、application)

    一.Action中获取 第一种方式: 通过ActionContext,这种方式取到的对象是Map类型 import java.util.Map; import com.opensymphony.xwo ...

  4. java中获取类加载路径和项目根路径的5种方式分析

    package my; import Java.io.File; import java.io.IOException; import java.net.URL; public class MyUrl ...

  5. Asp.NET设置Session过期时间的四种方式

    在Asp.net中,可以有四处设置Session的过期时间: 一.全局网站(即服务器)级 IIS-网站-属性-Asp.net-编辑配置-状态管理-会话超时(分钟)-设置为120,即为2小时,即120分 ...

  6. tomcat 设置session过期时间(四种方式)

    1.在tomcat-->conf-->servler.xml文件中定义: <Context path="/test" docBase="/test&qu ...

  7. JavaScript中定义对象的四种方式

    最近在阅读< JavaScript 高级程序设计>,未免遗忘读过的内容,就打算以博客的形式做些读书笔记.今天介绍的是 JavaScript 中的四种定义对象的方法,除了这四种方法,还有工厂 ...

  8. Java反射获取类对象的三种方式

    package demo01; /* * 获取一个类的class文件对象的三种方式 * 1.对象获取 * 2.类名获取 * 3.Class类的静态方法获取 */ public class Reflec ...

  9. struts2 action中获取request session application的方法

    共四种方式: 其中前两种得到的是Map<String,Object>  后两种得到的才是真正的request对象 而Map就是把request对象中的属性取出做成了键值对而已. [方法一] ...

随机推荐

  1. hadoop修改

    https://github.com/medcl/elasticsearch-analysis-ik/releases hadoop-/etc/hadoop/core-site.xml <con ...

  2. 我的高效编程的秘诀--开发环境的重要性(IOS)

    我觉得一个好的开发环境,能够让一个开发者的工作效率提高两倍以上,也能够让一个小白看上去不那么蠢: 开发环境不是仅仅安装一个xcode这种ide就OK了,在我看来开发环境的部署范围比較广泛,以下我来说说 ...

  3. linux 下面压缩,解压.rar文件以及rar,unrar实例

    http://www.rarlab.com/download.htm [root@bass src]# wget http://www.rarlab.com/rar/rarlinux-x64-5.4. ...

  4. iOS-获取苹果商店iPhone应用程序编号APPID-应用中跳转到AppStore中的其他应用

    iOS-获取苹果商店iPhone应用程序编号APPID-应用中跳转到AppStore中的其他应用 一 获取苹果商店iPhone应用程序编号APPID 1 在mac上打开itunes  选择中的A 然后 ...

  5. vue中config/index.js:配置的详细理解

    当我们需要和后台分离部署的时候,必须配置config/index.js: 用vue-cli 自动构建的目录里面  (环境变量及其基本变量的配置) var path = require('path') ...

  6. ubutun:从共享文件夹拷贝文件尽量使用cp命令而不是CTRL+C/V

    为了方便,VBOX安装的Ubuntu,并在硬盘上创建了一个与Windows的共享文件夹sharefolder方便在两个系统之间传文件 但是经常发现的问题就是从sharefolder中拷贝文件到ubun ...

  7. VisualStudio“在查找预编译头使用时跳过"解决方案

    解决方案1:确保所有的cpp文件都包含了stdafx.h,且确保stdafx.h是第一个#include指令(经尝试,可行) 解决方案2:去掉预编译头 项目->属性->配置属性->c ...

  8. JS学习笔记(5)--一道返回整数数组的面试题(经验之谈)

    说明: 1. 微信文章里看到的,作者是马超 网易高级前端技术经理,原文在网上搜不到,微信里可以搜“为什么你的前端工作经验不值钱?”,里面写着“转载自网易实践者社区”.(妈蛋,第二天网上就有了http: ...

  9. 基于jQuery仿Flash横向切换焦点图

    给各网友分享一款基于jQuery仿Flash横向切换焦点图.利用Flash可以制作很多漂亮的图片相册应用,今天我们要用jQuery来实现这样的效果.它是一款仿Flash的横向图片切换焦点图插件,可以自 ...

  10. jQuery和JS对比

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...