zoukankan      html  css  js  c++  java
  • struts2 的 ServletActionContext 和 actionContext,服务器代码测试, redirect 、dispatcher、chain、redirectAction

    一、ServletActionContext  和 actionContext

    HttpServletRequest request=ServletActionContext.getRequest();

    Httpsession session=request.getSession();

    ActionContext actionContext=ActionContext.getContext();

    Map<String,Object> map =actionContext.getSession();

    session  和map 维护的 东西是一致的 。。

    map 是 struts 为了 测试 方便 而设计的。

    二、服务器端 代码的单元 测试 :

    1. 容器内 测试  jetty

    2. Mock 测试 (继承httpServletRequest,httpSession等servlet API )

      如 jmock,easymock

    三、preparable 接口

      作用:完成 初始化 工作。 先与 getModel()(ModelDriven 接口方法,实现模型驱动)。

    四、action  结果类型:redirect 、dispatcher、chain、redirectAction

      dispatche 转发 ,执行完成后url 地址栏仍是原来的地址

      redirect 重定向到指定的url . 此时url 地址栏 是新地址。处理完成重定向到一个指定的视图资源,如jsp .参数和action处理结果都会丢失。

      redirectAction : 是redirect 的特例。。 处理完成后重定向到一个action。 请求参数和action 处理结果都会丢失

      chain: action 处理完成后 转发  (注意是转发) 到一个action 。 请求参数丢失。但是action 处理结果 不会  丢失。

      

      redirectAction 和chain  区别:

      1. redirectAction 在 浏览器中至少发出 两个请求 ,而 chain 是转发 ,只会发出一个请求,浏览器地址也是第一个action请求地址。

        chain 是在服务端直接处理完成后显示结果。 redirectAction 的浏览器地址要根据第二个action请求而定。

      2. redirectAction 需要在 配置文件中 配置 需要的参数 ,即 

        <param name="user">${usera}</> user为第二个 action 的参数。 usera 为第一个、

        使用Chain时使用param  传递 属性 是不行的。 

      chain 会把第一个 action 的处理结果 转发给第二个 action ,注意第二个 action 能够获得的参数是请求 第一个 action 时给的参数(注意:所以第一个action中你自定义的属性是无法传递给第二个action的 。。但是 使用redirectAction 是可以 通过param来传递你定义的属性) 

      

      

      

  • 相关阅读:
    dstat
    centos安装指定版本的golang
    APP防CC为什么复杂
    火狐浏览器的书签如何自动在新窗口打开?
    linux jdk版本随时切换
    centos7 yum安装java环境
    kangle清除缓存接口
    CC攻击原理及防范方法
    GET 和 POST 的区别 以及为什么 GET请求 比 POST请求 更快
    HTTP缓存机制
  • 原文地址:https://www.cnblogs.com/zhangchenglzhao/p/3681924.html
Copyright © 2011-2022 走看看