取得Map 类型的 request,session,application, HttpServletRequest,HttpSession,ServletContext的引用。

分访问 Map 类型和原始类型两种。

1、获取 Map 类型的request,session,application( Map 类型)的第一种方式,他们保存在都ActionContext中:

 package com.bjsxt.struts2.user.action;

 import java.util.Map;

 import com.bjsxt.struts2.user.model.User;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport; public class LoginAction1 extends ActionSupport{ private static final long serialVersionUID = -7767523825141043349L; private Map request;
private Map session;
private Map application; private User user; public LoginAction1(){
//在 对应方法中或者在构造方法中获取都一样
request = (Map)ActionContext.getContext().get("request");
session = ActionContext.getContext().getSession();
application = ActionContext.getContext().getApplication();
} public String execute(){
request.put("r1", "r1");
session.put("s1", "s1");
application.put("a1", "a1");
return SUCCESS;
} public User getUser() {
return user;
} public void setUser(User user) {
this.user = user;
} }

jsp页面的访问:

 <s:property value="#request.r1"/>
<s:property value="#session.s1"/>
<s:property value="#application.a1"/>

2、获取 Map 类型的request,session,application的第一种方式,一般用这种就行了:

实现了RequestAware,SessionAware,ApplicationAware 这三个接口,这种方式是通过Struts2把这三个对象注入给Action的。

 package com.bjsxt.struts2.user.action;

 import java.util.Map;

 import org.apache.struts2.interceptor.ApplicationAware;
import org.apache.struts2.interceptor.RequestAware;
import org.apache.struts2.interceptor.SessionAware; import com.bjsxt.struts2.user.model.User;
import com.opensymphony.xwork2.ActionSupport; /**
* 只用这种
* @author Administrator
*
*/
public class LoginAction2 extends ActionSupport implements RequestAware,SessionAware,ApplicationAware{ private static final long serialVersionUID = -7767523825141043349L; private Map<String, Object> request;
private Map<String, Object> session;
private Map<String, Object> application; private User user; public String execute(){
request.put("r1", "r1");
session.put("s1", "s1");
application.put("a1", "a1");
return SUCCESS;
} public User getUser() {
return user;
} public void setUser(User user) {
this.user = user;
} public Map<String, Object> getRequest() {
return request;
} public void setRequest(Map<String, Object> request) {
this.request = request;
} public Map<String, Object> getSession() {
return session;
} public void setSession(Map<String, Object> session) {
this.session = session;
} public Map<String, Object> getApplication() {
return application;
} public void setApplication(Map<String, Object> application) {
this.application = application;
} }

获取的方式跟第一种是一样的。

3、获取 HttpServletRequest,HttpSession,ServletContext (原始类型)的第一种方式:

 package com.bjsxt.struts2.user.action;

 import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionSupport; public class LoginAction3 extends ActionSupport{ private static final long serialVersionUID = -7767523825141043349L; private HttpServletRequest request;
private HttpSession session;
private ServletContext application; public LoginAction3(){
request = ServletActionContext.getRequest();
session = request.getSession();
application = session.getServletContext();
} public String execute(){ return SUCCESS;
}
}

取值,要是request、session、application中存在这个属性的话:

 <%=request.getAttribute("r1") %>
<%=session.getAttribute("s1") %>
<%=application.getAttribute("a1") %>

4、获取 HttpServletRequest,HttpSession,ServletContext (原始类型)的第二种方式:

 package com.bjsxt.struts2.user.action;

 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; public class LoginAction4 extends ActionSupport implements ServletRequestAware{ private static final long serialVersionUID = -7767523825141043349L; private HttpServletRequest request;
private HttpSession session;
private ServletContext application; public String execute(){
return SUCCESS;
} @Override
public void setServletRequest(HttpServletRequest request) {
this.request = request;
this.session = request.getSession();
this.application = session.getServletContext();
} }

取值方式和第三种一样。

补充:

<s:property value="#attr.r1"/> <s:property value="#attr.s1"/> <s:property value="#attr.a1"/>

这种获取方式会去ActionContext中遍历查找,所有的r1、s1、a1的值,一般情况下我们都会知道变量的值精确存放点,不推荐使用这个取值方式。

链接: http://pan.baidu.com/s/1pLk9ZCJ 密码: idbm

Struts2_访问Web元素的更多相关文章

  1. Struts2 访问web元素

    访问web元素的四种方法(耦合,依赖注入).(耦合,非依赖注入).(非耦合,依赖注入).(非耦合,非依赖注入) 耦合:可以得到HttpServletResponse,HttpServletReques ...

  2. Struts2学习---简单的数据校验、访问Web元素

    1.简单的数据校验 在action里面我们已经给出了一个数据校验: public String execute() { if(user.getUsername().equals("usern ...

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

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

  4. 01_12_Struts2_访问Web元素

    01_12_Struts2_访问Web元素 1. 配置struts.xml文件 <package name="login" namespace="/login&qu ...

  5. struts2 访问Web元素的4种方法

    完整代码 :Struts12AccessWebElement.rar 第一种也是最常用的一种方法实现这几个接口 RequestAware,SessionAware,ApplicationAware s ...

  6. sessionapplicationStruts2中访问web元素

    本文是一篇关于sessionapplication的帖子 取得Map类型request,session,application,实在类型 HttpServletRequest, HttpSession ...

  7. Struts2访问web元素的各种方法

    1.通过RequestAware,SessionAware,ApplicationAware获取: 在Struts2中不能直接访问Request,Session,Application元素,但是可以使 ...

  8. Structs复习 访问web元素

    Structs帮我们在action和http里建立了联系 主要有四种方式 我们主要用第二种(IOC 依赖容器注入 ) Jar包 web.XML <?xml version="1.0&q ...

  9. Struts2 学习笔记 09 访问Web元素

    我们想要访问Map类型request,session,application.真实类型HttpServletRequest,HttpSession,ServletContext的引用,并对它们进行操作 ...

随机推荐

  1. 添加fping监控

    第一步:安装fping服务 yum -y install fping 第二步:在zabbix-server服务端上启用fping服务 重启zabbix-server 第三步:在主机上添加fping监控 ...

  2. Web安全工程师(进阶)课程表

    01-SQL注入漏洞原理与利用 预备知识: 了解HTTP协议,了解常见的数据库.脚本语言.中间件.具备基本的编程语言基础. 授课大纲: 第一章:SQL注入基础 1.1 Web应用架构分析1.2 SQL ...

  3. Django 的 model form 组件

    Django 的 model form 组件 Model Form 组件的由来 之前介绍过 Django 的 Form 组件(Django的Form表单)使用方法,Form 组件能够帮我们做三件事: ...

  4. poj 3977 子集

    题目 题意:在一个集合中找到一个非空子集使得这个子集元素和的绝对值尽量小,和绝对值相同时保证元素个数尽量小 分析:1.二分枚举的思想,先分成两个集合: 2.枚举其中一个集合中所有的子集并且存到数组中, ...

  5. jquery深入学习

    样式操作: addclass();  //指定添加css类 removeclass();//移除指定css类 hasclass()://判断存不存在 toggleclass();//切换css类名,有 ...

  6. Jenkins自动化CI CD流水线之7--流水线自动化发布PHP项目

    一.前提 环境为:lnmp PHP项目:wordpress(此处我们下载一个wordpress的源码.将其模拟为我们的代码上传到我们的git仓库) 二.配置 1)创建job 2)参数化构建 3)配置p ...

  7. 【ACM】蛇形填数 - 逻辑怪

    蛇形填数 时间限制:3000 ms  |  内存限制:65535 KB 难度:3   描述 在n*n方陈里填入1,2,...,n*n,要求填成蛇形.例如n=4时方陈为:10 11 12 19 16 1 ...

  8. RTT之柿饼UI

    console.log("strings")//向单片机通过串口发送日志提示信息 this.setData({label1: { value : "Hello RT-Th ...

  9. Ordering Tasks UVA - 10305(拓扑排序)

    在一个有向图中,对所有的节点进行排序,要求没有一个节点指向它前面的节点. 先统计所有节点的入度,对于入度为0的节点就可以分离出来,然后把这个节点指向的节点的入度减一. 一直做改操作,直到所有的节点都被 ...

  10. Kure讲HTML_列表标签及表单标签

    首先我上个图来告诉大家什么是列表 左侧的这一部分就可以称为是列表或者叫树,其实我们可以通过div+css实现列表,可是考虑语义化的问题,我们还是看看html提供好的列表标签,html提供了两种列表,一 ...