一般登录过程分成两步,一步是打开登录页面, 一步是输入用户名和密码登录

现在B/S架构的系统好多时候都只在客户端的cookie信息保留一个jsessionId,然后每次请求的时候在请求的头信息的cookie中带上JsessionID,服务器根据jsessionId来判断是否是合法的输入,

那我们怎么样通过jmeter去提取JessionId呢?

1、首先添加在登录的请求接口中添加一个beanshell前置处理器(后置处理器也可以,可以判断是否登录成功,在决定是否保留这个jsessionid)

对应的代码如下

import java.util.regex.Matcher;

import java.util.regex.Pattern;

String str=prev.getResponseHeaders();

log.info("head="+str);

// 把要匹配的字符串写成正则表达式,然后要提取的字符使用括号括起来

// 在这里,我们要提取最后一个数字,正则规则就是“一个数字加上大于等于0个非数字再加上结束符”

Pattern p = Pattern.compile("[A-Za-z0-9]{32}");

Matcher m = p.matcher(str);

log.info("m = "+m);

if(m.find()) {  

            Object result = m.group(0);

            log.info("head="+result);

}

第一步先找到前一次请求的头信息, prev.getResponseHeaders();, 再次知道我们要找的字符串的正则表达式规则"[A-Za-z0-9]{32}"),说明是32位的字符串,只包含数字和字母,通过匹配正则表达式,找到对应的jsessionID, 运行完的结果发现找到了正确的jsessionid

最后再调用Java代码保存这些jessionID就好

保存这些JessionId有什么用呢?

可以真正模拟多用户请求, 通过
CSV Data Set Config 组件把数据引用回来, 每一个请求都带上不同的jessionId, 每个请求就是不同用户了,

那为什么我们不用同一个用户开启多个线程去模拟多用户呢? 同一个用户调用同一个请求, 可能有些程序会拒绝这种不合理情况, 比如说下单,前一个线程下单还没有走完, 同一个用户的另一个线程又开始下单,这种第二个请求可能会被服务器给拒绝, 但是我们把每个线程使用不同jsessionId给带回来,就不会存在这个问题了

最新文章

  1. [收藏]C++简单五子棋
  2. 反应堆模式最牛的那篇论文--由solidmango执笔翻译
  3. Apache Spark技术实战之2 -- PackratParsers实例
  4. 《苹果开发之Cocoa编程》挑战2 创建一个数据源 练习
  5. 甲骨文推动Java进军“物联网”
  6. Flash Recovery Area
  7. flutter 本地存储 (shared_preferences)
  8. 重写COMBOXEDIT
  9. backbond Model方法(set)
  10. python+selenium基础之XPATH轴定位(第二篇)
  11. 全网最详细的一个超级好用的命令行工具【Cmder】是什么?
  12. 获取数据库连接对象Connection
  13. Centos7——selinux配置
  14. Struts2学习资料
  15. RxJS之AsyncSubject
  16. Debug 路漫漫-03
  17. SQL 实践和技巧 <2>
  18. Web 使用反射获得一个对象的所有get方法
  19. mongoDB的shell数组操作器
  20. Download/Attach source-code/java-docs with maven dependencies

热门文章

  1. VxWorks嵌入式系统几种常用的延时方法
  2. Regex 正则替换指定范围全部字符串
  3. Axure RP一个专业的快速原型设计工具
  4. 事件驱动的Java框架
  5. IOS开发之XCode学习010:定时器和视图对象
  6. jsp学习笔记之:4种基本语法
  7. es6学习笔记--解构赋值
  8. 【BZOJ4698】Sandy的卡片(后缀数组)
  9. [POI2014]KUR-Couriers
  10. 来谈谈JAVA面向对象 - 鲁班即将五杀,大乔送他回家??