九、在动作类中访问ServletAPI

、方式一:(简单,推荐使用)ServletActionContext

public String execute() throws Exception {

        //获取Servlet的相关对象引用,HttpServletRequest HttpSession HttpServletResponse ServletContext

        //PageContext等等

        HttpServletRequest request = ServletActionContext.getRequest();

        PageContext pc = ServletActionContext.getPageContext();

        HttpServletResponse response = ServletActionContext.getResponse();

        ServletContext sc = ServletActionContext.getServletContext();

        HttpSession session = request.getSession();

        //打印相关对象引用

        System.out.println(request);

        System.out.println(pc);

        System.out.println(response);

        System.out.println(sc);

        System.out.println(session);

        return
"none";

    }

 

 

  1. 方式二:(麻烦)

    动作类实现特定的接口。就必须实现特定的方法,调用动作方法前,框架会把响应的对象给注入进来。

    public
    class UserAction implements ServletRequestAware, ServletResponseAware, ServletContextAware {

        private HttpServletRequest request;

        private HttpServletResponse response;

        private ServletContext sc;

        public String execute() {

            //打印相关对象引用

            System.out.println(request);

            System.out.println(response);

            System.out.println(sc);

            return
    "none";

        }

     

        //在调用动作方法执行前,框架会把ServletContext对象给注入进来

        @Override

        public
    void setServletContext(ServletContext sc) {

            this.sc = sc;

            

        }

        //在调用动作方法执行前,框架会把HttpServletResponse对象给注入进来

        @Override

        public
    void setServletResponse(HttpServletResponse response) {

            this.response = response;

            

        }

        //在调用动作方法执行前,框架会把HttpServletRequest对象给注入进来

        @Override

        public
    void setServletRequest(HttpServletRequest request) {

            this.request = request;

            

        }

    }

     

     

    原理:是一个拦截器给你注入进来的。struts-default.xml

    <interceptor name="servletConfig" class="org.apache.struts2.interceptor.ServletConfigInterceptor"/>

    一看源码便知。

     

九、在动作类中访问ServletAPI的更多相关文章

  1. 如何在WebSocket类中访问Session

    我最近正在做一个基于websocket的webQQ,最后代码会开源带github上,所以过程中我就不贴所有的代码啦~就贴问题的关键. 我在WebSocket里发消息的时候需要用到session,因为在 ...

  2. “全栈2019”Java第七十九章:类中可以嵌套接口吗?

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  3. cc31a_demo--CppPrimer_静态成员与继承-在派生类中访问基类中的static成员的方法

    //*基类中的static成员,在整个继承层次中只有一个实例 //*在派生类中访问基类中的static成员的方法 //1.基类名::成员名 //2.子类名::成员名 //3.对象.成员名 //4.指针 ...

  4. C# 类中访问修饰符的优先级与用法(public, internal, protected, private)

    首先:类成员的访问级别是以类的访问级别为上限的! 也就是类的访问级别低时,类成员的访问级别高也无法突破类的访问级别 public级别,作用域是这个解决方案() internal级别,作用域是整个装配集 ...

  5. 10--动作系统(四)动作类中的reverse方法

    上一篇文章在使用持续动作过程中遇到不少问题,以获取动作类的反系动作尤为突出.所以今天把动作类找了个遍,先将大部分动作类是否实现reverse方法总结如下: T表示实现F表示没有实现. 观察可以发现带T ...

  6. ruby在类中访问@,类外访问调用方法

    class Box def initialize(w,h) @width,@height=w,h end def printWidth puts @width end def printHeight ...

  7. Struts2的Action中访问servletAPI方式

    struts2的数据存放中心为ActionContext,其是每次请求来时都会创建一个ActionContext,访问结束销毁,其绑定在ThreadLocal上,由于每次访问web容器都会为每次请求创 ...

  8. java类中访问属性

    package first; public class for_protect { private int age=10; int number = 100; public void show(){ ...

  9. C++——派生类中的访问——可见性问题

    C++中派生类对基类成员的访问形式主要有以下两种: 1.内部访问:由派生类中新增成员对基类继承来的成员的访问. 2.对象访问:在派生类外部,通过派生类的对象对从基类继承来的成员的访问.今天给大家介绍在 ...

随机推荐

  1. 关于gcd函数解最大公约数

    数学知识:由于两个数的乘积等于这两个数的最大公约数与最小公倍数的积.即(a,b)×[a,b]=a×b.所以,求两个数的最小公倍数,就可以先求出它们的最大公约数,然后用上述公式求出它们的最小公倍数.例如 ...

  2. ubuntu 修改静态IP和DNS

    1.修改配置文件/etc/network/interfacesroot@ubuntu:~# sudo vi /etc/network/interfaces 添加以下内容:auto eth0       ...

  3. 90、 Android UI模板设计

    第一步:自定义xml属性 新建一个android项目,在values文件夹中新建一个atts.xml的文件,在这个xml文件中声明我们一会在使用自定义控件时候需要指明的属性.atts.xml < ...

  4. ubuntu命令查补

    Linux删除目录的命令有:rm,rm命令删除目录虽说比较简单,不过一旦所操作的目录非空时,就会让你陷入深深的苦恼之中 rm -rf 目录名字: -r 就是向下递归,管理有多少级目录,一并删除 -f ...

  5. spring和springmvc之间的整合

    一.springmvc就是运行在spring的环境下,这两者是否需要进行整合,即:是不是要把service .dao . 事务 .和其它框架的整合放在springmvc的配置文件中.这样子在技术层面上 ...

  6. mysql 非安装版本就可以用, 用于打包用

    http://blog.csdn.net/iihero/article/details/5596401 http://blog.csdn.net/iihero/article/details/5596 ...

  7. VisualVM 性能分析概述

    VisualVM是一个免费的Java应用监控.分析工具. 简单说来,VisualVM是一种集成了多个JDK命令行工具的可视化工具,它能为您提供强大的分析能力.所有这些都是免费的!它囊括的命令行工具包括 ...

  8. select into from 和 insert into select 的用法和区别

    select into from 和 insert into select都是用来复制表,两者的主要区别为: select into from 要求目标表不存在,因为在插入时会自动创建.insert ...

  9. (Array) 一个 N*N 的矩阵,每一行从左到右有序,每一列从上到下有序,都是递增,写个程序,判断一个数是否在矩阵中。

    int search(int d[N][N], int key) { int i1, i2, j1, j2; i1 = j1 = 0; i2 = j2 = N-1; while(i1 < i2 ...

  10. Regional Changchun Online--Ponds

    网址:http://acm.hdu.edu.cn/showproblem.php?pid=5438 Ponds Time Limit: 1500/1000 MS (Java/Others)    Me ...