struts2 action中获取request session application的方法

共四种方式:

其中前两种得到的是Map<String,Object>  后两种得到的才是真正的request对象

而Map就是把request对象中的属性取出做成了键值对而已。

【方法一】

public class LoginAction {
	private Map request;
	private Map session;
	private Map application;

	public String execute() {
		request = (Map)ActionContext.getContext().get("request");
		session = ActionContext.getContext().getSession();
		application = ActionContext.getContext().getApplication();
		request.put("username1", "jingjing1");
		session.put("username2", "jingjing2");
		application.put("username3", "jingjing3");
		return "success";
	}
}

取出结果

 <body>
    <%
       String username1 = (String)request.getAttribute("username1");
       String username2 = (String)session.getAttribute("username2");
       String username3 = (String)application.getAttribute("username3");
    %>
    <%=username1 %>
    <%=username2 %>
    <%=username3 %>
  </body>

【方法二】

public class LoginAction implements RequestAware,SessionAware,ApplicationAware {
	private Map<String, Object> request;
	private Map<String, Object> session;
	private Map<String, Object> application;

	public void setRequest(Map<String, Object> request) {
		// TODO Auto-generated method stub
		this.request = request;
	}

	public void setSession(Map<String, Object> session) {
		// TODO Auto-generated method stub
		this.session = session;
	}

	public void setApplication(Map<String, Object> application) {
		// TODO Auto-generated method stub
		this.application = application;
	}
	public String execute() {
		request.put("username1", "jingjing11");
		session.put("username2", "jingjing222");
		application.put("username3", "jingjing33");
		return "success";
	}
}

【方法三】

public class LoginAction {
	private HttpServletRequest request;
	private HttpSession session;
	private ServletContext application;
	public String execute() {

		request = ServletActionContext.getRequest();
		session = request.getSession();
		application = session.getServletContext();

		//application = ServletActionContext.getRequest().getSession().getServletContext();

		request.setAttribute("aaa", "aaa");
		session.setAttribute("bbb", "bbb");
		application.setAttribute("ccc", "ccc");

		return "success";
	}
}

【方法四】

public class LoginAction implements ServletRequestAware {
	private HttpServletRequest request;
	private HttpSession session;
	private ServletContext application;

	public void setServletRequest(HttpServletRequest request) {
		// TODO Auto-generated method stub
		this.request = request;
		this.session = request.getSession();
		this.application = session.getServletContext();
	}

	public String execute() {
		request.setAttribute("111", "111");
		session.setAttribute("222", "222");
		application.setAttribute("333", "333");
		return "success";
	}
}

HttpServletRequest方法总结:

HttpServletRequest接口是继承自ServletRequest接口的,增加了和HTTP相关的一些方法

getScheme() 方法返回请求的计划,比如http,https或者ftp.

getServerName() 方法返回被发送请求的服务器的主机名

getServerPort() 方法返回被发送请求的端口号。

getContextPath() 返回请求地址的根目录,以"/"开关,但不是以"/"结尾。

一个常用的获得服务器地址的连接字符串是:

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

 

getCookies() 取得cookie

getMethod() 取得请求方法,如get,post或put

getRequestURL() 取得请求URL(统一资源定位符)

getRequestURI() 取得请求URI(统一资源标识符)

getSession() 取得对应session

public HttpSession getSession();

public HttpSession getSession(boolean create);

返回与这个请求关联的当前的有效的session。如果调用这个方法时没带参数,那么在没有session与这个请求关联的情况下,将会新建一个session。如果调用这个方法时带入了一个布尔型的参数,只有当这个参数为真时,session才会被建立。

 

ServletRequestAware与RequestAware的区别

ServletRequestAware——提供对HttpServletRequest对象的访问

RequestAware ——通过Map来提供对所有request属性的访问

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

原文地址:https://www.cnblogs.com/skiwnchqhh/p/10333988.html

时间: 2024-08-26 13:44:35

struts2 action中获取request session application的方法的相关文章

Spring 中获取 request 的几种方法,及其线程安全性分析

概述在使用Spring MVC开发Web系统时,经常需要在处理请求时使用request对象,比如获取客户端ip地址.请求的url.header中的属性(如cookie.授权信息).body中的数据等.由于在Spring MVC中,处理请求的Controller.Service等对象都是单例的,因此获取request对象时最需要注意的问题,便是request对象是否是线程安全的:当有大量并发请求时,能否保证不同请求/线程中使用不同的request对象.这里还有一个问题需要注意:前面所说的"在处理请

Struts2里如何取得request,session,application

第一种:取得MAP类型的request,session,application在java文件里写 package com.xjtu.st; import java.util.Map; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; public class LoginAction extends ActionSupport{ private Map reques

struts2 中属性驱动(其实就是struts2 action 中处理 request 的参数【old 方式servlet api 封装数据到javabean中(or beanutils)】),这里属性驱动是新方式

1.属性驱动 a\  一般的set 1 public class UserAction extends ActionSupport { 2 3 private String username; 4 private String password; 5 6 public void setUsername(String username) { 7 this.username = username; 8 } 9 10 public void setPassword(String password) {

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方法)传递数据,我们想着

Action类中获取request等对象的方法

struts2中的action类中,SevletActionContext可以获取 session对象则通过ActionContext.getContext().getSession().put("name",value);存放值  ActionContext.getContext().getSession().get("name"); 获取值

struts2 访问或添加request/session/application属性

第一种方法: ActionContext ctx = ActionContext.getContext(); ctx.put("r1", list);//向request中添加属性 ctx.getSession().put("s1",list);//向session中添加属性 ctx.getApplication().put("a1", list);//向application中添加属性 HttpSession session =null; se

160317(一)、在非action中获取request

HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();             HttpSession session = request.getSession();

9.Struts2在Action中获取request-session-application对象

为避免与Servlet API耦合在一起,方便Action类做单元测试. Struts2对HttpServletRequest.HttpSession.ServletContext进行了封装,构造了三个Map对象来替代这三种对象. 注意,这三个对象与Servlet API中的三个对象是相同的. 即,在Action中放入Session中信息,在JSP页面中是可以读出来的. 方式一:通过使用ActionContext类获取 在Struts2框架中,通过Action的执行上下文类ActionConte

在Struts2 Action中快速简便的访问Request、Session等变量

前言——正常情况下如何在Action中获取到这些变量 全部方法(共四种)可以参考:http://blog.csdn.net/itmyhome1990/article/details/7019476 这里采用其中一种作为示例,即利用ServletActionContext上下文来完成: 1 public class LoginAction { 2 private HttpServletRequest request; 3 private HttpSession session; 4 private