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来传递你定义的属性)
struts2 的 ServletActionContext 和 actionContext,服务器代码测试, redirect 、dispatcher、chain、redirectAction的更多相关文章
- struts2中 ServletActionContext与ActionContext区别
1. ActionContext 在Struts2开发中,除了将请求参数自动设置到Action的字段中,我们往往也需要在Action里直接获取请求(Request)或会话(Session)的一些信息, ...
- Linux下四款Web服务器压力测试工具(http_load、webbench、ab、siege)介绍
一.http_load程序非常小,解压后也不到100Khttp_load以并行复用的方式运行,用以测试web服务器的吞吐量与负载.但是它不同于大多数压力测试工具,它可以以一个单一的进程运行,一般不会把 ...
- Nodejs开源项目里怎么样写测试、CI和代码测试覆盖率
测试 目前主流的就bdd和tdd,自己查一下差异 推荐 mocha和tape 另外Jasmine也挺有名,angularjs用它,不过挺麻烦的,还有一个选择是qunit,最初是为jquery测试写的, ...
- MQTT再学习 -- 搭建MQTT服务器及测试
最近在搞 PM2.5 采集,需要用到 MQTT 传输协议.协议部分看了几天的,讲的七七八八.本身在 intel 上有 写好的MQTT 的源码,现在的工作其实也就是移植到单片机上或者DM368板卡上.不 ...
- RMS:不能对生产服务器使用测试清单
问题说明:在使用office软件RMS加密时报:不能对生产服务器使用测试清单,或者使用 rmsbulk.exe进行RMS加密时,报不能连接到RMS服务器. 解决办法: 请到https://suppor ...
- Spring+SpringMVC+MyBatis+easyUI整合优化篇(三)代码测试
日常啰嗦 看到标题你可能会问为什么这一篇会谈到代码测试,不是说代码优化么?前两篇主要是讲了程序的输出及Log4j的使用,Log能够帮助我们进行bug的定位,优化开发流程,而代码测试有什么用呢?其实测试 ...
- phpstorm-----实现实时编辑服务器代码
phpstorm是一款功能强大.广大码农钟爱的编辑器,也是我最常用的编辑器.这里介绍一个偷懒的功能. 用sftp协议与远程服务器相连接,实现直接编辑服务器代码的功能.而效果就是ctrl+s不仅可以保存 ...
- IDEA远程调试服务器代码
先在idea添加一个remote,host填服务器ip,port填监听服务器端口,默认5005 然后在服务器tomcat catalina.sh 添加(红色部分): JAVA_OPTS="$ ...
- git代码同步服务器代码需要注意的问题
魔鬼藏在细节之中,git代码同步服务器代码需要注意的问题 1. 全文件夹覆盖 git pull 当前文件夹 2. 覆盖前做代码备份 mv origin origin_20190404_bak
随机推荐
- 学习笔记:Zepto笔记
1.Zepto对象不能自定义事件 例如执行:$({}).bind('cust',function(){}); 结果:TypeError:Object#hasnomethod'addEventListe ...
- 1.纯 CSS 创作一个按钮文字滑动特效 + 弹幕(残缺)
原文地址:1# 视频演示如何用纯 CSS 创作一个按钮文字滑动特效 扩展后地址:https://scrimba.com/c/cJkzMfd HTML代码: <html> <head& ...
- PHP Token(令牌)设计 避免重复提交
设计目标: 避免重复提交数据. 检查来路,是否是外部提交 匹配要执行的动作(如果有多个逻辑在同一个页面实现,比如新增,删除,修改放到一个PHP文件里操作) 这里所说的token是在页面显示的时候,写到 ...
- Springboot spring data jpa 多数据源的配置01
Springboot spring data jpa 多数据源的配置 (说明:这只是引入了多个数据源,他们各自管理各自的事务,并没有实现统一的事务控制) 例: user数据库 global 数据库 ...
- 使用seaborn制图(箱型图)
import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns # 设置风格, ...
- Ping ip能ping通,ping计算机名ping不通,网络共享不能访问
名称 协议 端口 NetBIOS Name Service UDP 137 NetBIOS Datagram Service UDP 138 NetBIOS Session Service TCP 1 ...
- 13 python 常用的内置方法介绍
1.isinstance(obj,cls)和issubclass(sub,super) isinstance(obj,cls)检查是否obj是否是类 cls 的对象 class Foo(object) ...
- UIScrollView判断用户划到底部 (可用于实现loading more)
-(void)scrollViewDidScroll:(UIScrollView *)scrollView { //当scrollview中content的竖直位移加上scrollView的高度大于等 ...
- ubuntu16.04 dpkg强制安装 teamviewer
dpkg遇到安装有依赖,而依赖的包有无法安装的时候,可以试试强制安装: .90154_amd64.deb 虽然报错,但是安装后还是可以使用. 如果使用: .90154_amd64.deb 提示下面错误 ...
- CSS中不透明度继承问题的处理
关于CSS中不透明度的设置,除了兼容方面的问题,还有不透明度继承问题,这里只讨论下后者. 那么, 什么时候会发生不透明度继承问题? 当文档结构中有父子嵌套关系的时候,并且父元素有不透明度属性设置时,会 ...