Action中获取ServletAPI,三种方式

(1)通过ActionContext获取(只是获取并操作了域空间,并不是真正的ServletAPI对象)

  在struts2框架中,通过Action的执行上下文类ActionContext,可以获取request/session/application对象。

  ActionContext ctx = ActionContext.getContext();

  Map<String,Object> application = ctx.getApplication();

  Map<String,Object> session= ctx.getSession();

  ActionContext对象本身就是request的储存空间,直接向context中存入数据就可以认为向request中存入数据

例:向request域空间中放入数据

  ActionContext.getContext().put("request","value"); 

  在jsp页面中进行取值${requestScope.request }El表达式 

   向Session域空间中放入数据

  ActionContext.getContext().getSession().put("session","value");

  在jsp页面中进行取值${sessionScope.session }El表达式

   向Application(application 其实就是ServletContext)域空间中放入数据

  ActionContext.getContext().getApplication().put("application","value");

  在jsp页面中进行取值${applicationScope.application}El表达式

  (以上方法获取不到response)

(2)通过ServletActionContext获取真正的servletAPI对象

例:向request对象中放入数据:

  HttpServletRequest req = ServletActionContext.getRequest(); //得到request对象

  req.setAttribute("request","value");  

  向Session对象中放入数据:

  req.getSession().setAttribute("session","value");

  向Application对象中放入数据:

  ServletActionContext.g.getServletContext().setAttribute("app", "value");

  (jsp页面展示数据的时候通第一种方式是相同的)

(3)通过实现特定借口来获取(1:比较麻烦。2:Action方法被污染了,不是单纯的pojo类了)

  

 package com.bjyinfu.struts.actions;

 import java.util.Map;

 import org.apache.struts2.ServletActionContext;
import org.apache.struts2.interceptor.ApplicationAware;
import org.apache.struts2.interceptor.RequestAware;
import org.apache.struts2.interceptor.SessionAware; public class GetServletAPIAction implements RequestAware,SessionAware,ApplicationAware { private Map<String,Object> req;
private Map<String,Object> app;
private Map<String,Object> ses; public String execute(){
req.put("servletReq", 13);
ses.put("servletSes", 15);
app.put("servletApp", 17); return "servlet";
} @Override
public void setRequest(Map<String, Object> request) {
this.req = request;
} @Override
public void setApplication(Map<String, Object> application) {
this.app = application;
} @Override
public void setSession(Map<String, Object> session) {
this.ses = session;
}
}

  (通过此处了解到,成员变量和属性不是同一个东西,属性是setter或者getter方法将,set或者get去掉并将首字母改成小写,这是属性名)

ServletAPI的获取的更多相关文章

  1. 5.Struts2框架中的ServletAPI如何获取

    1.完全解耦合的方式 如果使用该种方式,Struts2框架中提供了一个类,ActionContext类,该类中提供一些方法,通过方法获取Servlet的API 一些常用的方法如下 * static A ...

  2. Struts2 入门

    一.Struts2入门案例 ①引入jar包 ②在src下创建struts.xml配置文件 <?xml version="1.0" encoding="UTF-8&q ...

  3. 初识Struts2

    一.Struts2入门案例 ①引入jar包 ②在src下创建struts.xml配置文件 <?xml version="1.0" encoding="UTF-8&q ...

  4. 三 Struts2 添加返回数据

    一.struts2如何获取servletAPI1.解耦和的方式获取封装后的Map对象,这种获取的map对象只有存取数据的功能. Map request = (Map) ActionContext.ge ...

  5. Struts2之初体验

    Struts21.了解Struts2 请求调度框架Struts2是一个MVC框架Struts2类库:Struts2-core Struts2核心XWork-core xwork核心 Struts2的构 ...

  6. struts中日期处理以及文件下载

    日期处理 对于jsp提交的基本数据类型和日期格式为yyyy-MM-dd的自动转换为相应的 对于其它的日期格式需要自定义转换器 局部类型转换器 1,写转换器类(继承StrutsTypeConverter ...

  7. struts2学习笔记--总结获取servletAPI的几种方式

    struts2的Action放弃了request,response等ServletAPI,使得在业务层上更加独立,在有时候使用struts2进行Web开发的时候,不可避免的要在action中使用ser ...

  8. Action中获取servletAPI对象的方法

    1.ServletActionContext:可以从中获取当前Action对象需要的一切ServletAPI的相关对象: 常用的方法: 1.获取HttpServletRequest:ServletAc ...

  9. struts2框架学习笔记3:获取servletAPI

    Struts2存在一个对象ActionContext(本质是Map),可以获得原生的request,response,ServletContext 还可以获得四大域对象(Map),以及param参数( ...

随机推荐

  1. cut的用法

    1.基本功能 从文件或标准输入的每行中删除指定的部分. 2.基本用法 cut -[cdf] [FILE] 3.例子 $ ls -l total 2944 -rwxr-xr-x 1 zach pubs ...

  2. Filter自动登录

    Dao层略过 Domain略过 Service层过 Web层 Select逻辑 获取表单数据,Web-service--Dao返回用户信息 如果返回不为null否则,重定向到登录页面.则判断用户是否勾 ...

  3. CC2530入门教程-02】CC2530的通用I/O端口输入和输出控制

    第2课  CC2530的通用I/O端口输入和输出控制 广东职业技术学院  欧浩源 一.CC2530的引脚概述 CC2530微控制器采用QFN40封装,有40 个引脚.其中,有21个数字I/O端口,其中 ...

  4. v9 频道页如果有下级栏目跳转到第一个栏目链接

    {if $CATEGORYS[$catid]['child']==1} {php $firstarr = explode(',',$CATEGORYS[$catid]['arrchildid']);} ...

  5. 音乐API之QQ音乐

    欢迎大家来到我的博客,这是我在博客园写的第一篇文章,但不会是最后一篇,希望大家多多关注我,支持我哦!正文开始,今天我们要讲的是QQ音乐的API,都是来源于官方的地址,以前我也想写一个,但百度谷歌之后都 ...

  6. 【Android Developers Training】 15. 启动一个Activity

    注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...

  7. java基础(10) -线程

    线程 相当于轻量级进程,线程在程序中是独立的.并发的执行路径,每个线程有它自己的堆栈.自己的程序计数器和自己的局部变量.但是,与分隔的进程相比,进程中的线程之间的隔离程度要小.它们共享内存.文件句柄和 ...

  8. servlet导出Excel

    package khservlet; import java.io.IOException;import java.io.PrintWriter;import java.sql.*; import j ...

  9. Java jvm级别native关键词、JNI详解

    1.native关键词的引入 再完美的编程语言也有自己的不足之处,当然Java也不例外,Java的不足之处除了体现在运行速度(这点往往被一些其他编程语言使用者所诟病)上要比传统的C++慢许多之外,Ja ...

  10. 浅入深出之Java集合框架(上)

    Java中的集合框架(上) 由于Java中的集合框架的内容比较多,在这里分为三个部分介绍Java的集合框架,内容是从浅到深,如果已经有java基础的小伙伴可以直接跳到<浅入深出之Java集合框架 ...