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

现在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给带回来,就不会存在这个问题了

jmeter 前置处理器提取用户cookie信息 比如jsessionid的更多相关文章

  1. Jmeter(十六) - 从入门到精通 - JMeter前置处理器(详解教程)

    1.简介 前置处理器是在发出“取样器请求”之前执行一些操作.如果将前置处理器附加到取样器元件,则它将在该取样器元件运行之前执行.前置处理器最常用于在取样器请求运行前修改其设置,或更新未从响应文本中提取 ...

  2. JMeter—前置处理器(九)

    参考<全栈性能测试修炼宝典JMeter实战>第六章 JMeter 元件详解中第四节前置处理器前置处理器用来处理请求前的一些准备工作,比如参数设置.环境变变量设置等 一.BeanShell ...

  3. JMeter学习笔记--JMeter前置处理器

    前置处理器被用来修改作用域内的采样器 HTML 链接解析器:解析从服务器得到的HTML响应,并从中提取链接和表单,使用perl型的正则表达式来寻求匹配项. HTML URL重写修饰符:使用URL重写来 ...

  4. Jmeter 前置处理器 BeanShell_PreProcessor 适用思考

    首先摘抄一段官方文档的话: Before invoking the script, some variables are set up in the BeanShell interpreter: lo ...

  5. Jmeter利用正则表达式提取器提取登录cookie供下一步使用

    最近在学Jmeter,遇到需要登录之后才能进行下一步操作的场景,网上查了各位大神的资料,东拼西凑总算是做好满足需求了,写一下经过和步骤吧. 一.正常调用 按正常流程添加线程组.HTTP请求(登录和添加 ...

  6. Jmeter BeanShell前置处理器、取样器、后置处理器

    前置处理器:BeanShell PreProcessor取样器 :BeanShell Sampler后置处理器:BeanShell PostProcessor 1.前置 import org.apac ...

  7. .NET跨平台之旅:ASP.NET Core从传统ASP.NET的Cookie中读取用户登录信息

    在解决了asp.net core中访问memcached缓存的问题后,我们开始大踏步地向.net core进军——将更多站点向asp.net core迁移,在迁移涉及获取用户登录信息的站点时,我们遇到 ...

  8. jQuery cookie插件保存用户登陆信息

    通过jquery cookie插件保存用户登录信息. 代码: <html>  <head>  <title>cookies.html</title>  ...

  9. 利用Cookie保存用户身份信息实现免登录

    <%@page import="sun.misc.BASE64Encoder"%> <%@page import="java.util.Base64.E ...

随机推荐

  1. memcache 查看memcache的运行状态

    memcache的运行状态可以方便的用 stats 命令显示. 首先用telnet 127.0.0.1 11211这样的命令连接上memcache,然后直接输入stats就可以得到当前memcache ...

  2. linux内核升级(ubuntu12.04从3.13.0升级到3.4.0 )

    花了一天的时间,终于把ubuntu12.04 的linux内核版本从3.13.0升级到3.4.0 升级后,系统更加稳定.具体步骤:# wget http://www.kernel.org/pub/li ...

  3. Procedure execution failed 2013 - Lost connection to MySQL server during query

    1 错误描述 Procedure execution failed 2013 - Lost connection to MySQL server during query 2 错误原因 由错误描述可知 ...

  4. GitHub 错误解决

    1. The file will have its original line endings in your working directory. git config --global core. ...

  5. 在.Net Core中使用MongoDB的入门教程(一)

    首先,我们在MongoDB的官方文档中看到,MongoDb的2.4以上的For .Net的驱动是支持.Net Core 2.0的. 所以,在我们安装好了MangoDB后,就可以开始MangoDB的.N ...

  6. 【转】Nginx的启动、停止与重启

    Nginx的启动.停止与重启 启动 启动代码格式:nginx安装目录地址 -c nginx配置文件地址 例如: [root@LinuxServer sbin]# /usr/local/nginx/sb ...

  7. Linux之shell编程

    一.Bash变量 1) Bash变量与变量分类 1. 定义:变量是计算机内存的单元,其中存放的值可以改变 2. 变量命令规则 #变量名必须以字母或下划线开头,名字中间只能由字母.数字和下划线组成 #变 ...

  8. [BZOJ1212][HNOI2004]L语言

    BZOJ Luogu sol 设\(f_i\)表示文章的前\(i\)个字符是否可以被理解.每次匹配要暴跳\(fail\)到根,转移就是\(f_i|=f_{i-len}\),其中\(len\)是某个可以 ...

  9. MSIL实用指南-加载null、string、long、float、double等值

    本篇讲述怎么加载null.string值.long值.float值.double值. 加载null不需要参数值,只要 Emit ldnull 其它几个命令要 Emit <指令> <值 ...

  10. NYOJ街区最短路径问题

    描述 一个街区有很多住户,街区的街道只能为东西.南北两种方向. 住户只可以沿着街道行走. 各个街道之间的间隔相等. 用(x,y)来表示住户坐在的街区. 例如(4,20),表示用户在东西方向第4个街道, ...