view code

public class JdbcInsert implements JavaSamplerClient {
// 全局变量
PreparedStatement pstmt;
Connection conn; @Override
public Arguments getDefaultParameters() {
// 主要用于把jmeter界面中的参数和java脚本关联起来
Arguments arguments = new Arguments();
arguments.addArgument("uuid",UUID.randomUUID().toString());
arguments.addArgument("username","张三");
arguments.addArgument("pwd","123");
arguments.addArgument("jdbcurl","jdbc:mysql://localhost:3306/xxxx"
return arguments;
} // 执行测试操作,类似于LR里的Action函数,执行N次
@Override
public SampleResult runTest(JavaSamplerContext context) {
int rows = 0;
// 框架要求可能出现问题的代码,不能抛出异常,只能自己处理,把有问题的代码放到try里面,解决方案放到catch里
try {
pstmt.setString(1,context.getParameter("uuid"));
pstmt.setString(2, context.getParameter("username"));
pstmt.setString(3, context.getParameter("pwd"));
// 执行sql多次
rows = pstmt.executeUpdate();
} catch (SQLException e) {
// 当出现异常时打印异常
e.printStackTrace();
}
System.out.println(rows);
return null;
} // 初始化操作,类似于LR中的init函数,执行1次
@Override
public void setupTest(JavaSamplerContext context) {
String url =context.getParameter("jdbcurl");
String username = "root";
String password = "123123";
String sql = "insert into t_user (uuid,username,pwd) values(?,?,?)
// 注册驱动,告诉java要链接哪个数据库
try {
Class.forName("com.mysql.jdbc.Driver");
// 建立mysql数据库链接
conn = (Connection) DriverManager.getConnection(url, username,
// 把sql进行编译
pstmt = (PreparedStatement) conn.prepareStatement(sql);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} } // 结束操作,类似于LR里的end函数,执行1次
@Override
public void teardownTest(JavaSamplerContext context) {
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} public static void main(String[] args) {
JdbcInsert jdbcInsert = new JdbcInsert();
//先创建一个参数对象Argument
Arguments arguments = jdbcInsert.getDefaultParameters();
//再创建一个上下文对象JavaSamplerContext,并且把Argument对象传入
JavaSamplerContext context = new JavaSamplerContext(arguments);
jdbcInsert.setupTest(context);
jdbcInsert.runTest(context);
jdbcInsert.teardownTest(context); } }

jmeter中实现java请求思路:采用jmeter提供的框架包,创建一个类,继承类JavaSamplerClient

重写该类的以下四个方法
getDefaultParameters()
runTest(JavaSamplerContext context)
setupTest(JavaSamplerContext context)
teardownTest(JavaSamplerContext context)
重点是通过getDefaultParameters方法构造jmeter参数,将从jmeter里获取到的参数,进行参数化
代码写好调试好后,用ecipse的export runnable jar方法,导出jar包和依赖包,放到jemeter安装包的ext文件夹下面,重启jmeter,即可以实现jmeter接收参数,调用java脚本
1.找到jmeter的框架包,以下三个包就足够了,jmeter3.3找不到另外2个包

在jmeter安装包里寻找以上jar包

eclipse工程右键导入外部jar包
 

新建java类继承JavaSamplerClient

加入jdbc jar包

java代码按照jmeter框架,分别编写setup,teatdown,run方法
代码至少运行一次,没问题进行以下操作,从eclipse导出可执行的jar包,供jmeter调用
工程右键

此为导出的可执行jar包和依赖包文件夹

将这2个文件导入到以下目录,jmeter的拓展包,每个脚本有个单独的文件夹,存放依赖包
重启jmeter,新建java请求

点击运行后,数据库已新增一条数据,说明脚本导入成功
查看结果树看不到java请求的信息,因为底层是二进制数据,只有控制台可以看到syso打印的信息

下面接着实现jmeter参数化入参

jmeter中实现java请求实战日志的更多相关文章

  1. 性能测试十一:jmeter进阶之java请求

    使用Java编写JDBC脚本对Mysql进行增删改查等操作的性能测试 使用Jmeter提供的脚本框架依赖的jar包(分别在jmeter目录下的lib和ext目录下) ApacheJMeter_core ...

  2. 【JMeter】JMeter完成一个java请求的压测

    先定义一下我说的remoteService:即远程调用服务,没有http的url.不对外提供或者对外提供有限的服务.具体视各公司的代码架构所定,比如有些公司为web工程,scf服务,db.scf即为服 ...

  3. 【转】JMeter完成一个java请求的压测

    JMeter完成java请求的压力测试详解以及问题总结 原文地址:http://www.cnblogs.com/zhaoxd07/p/4895224.html    作者:KK_Yolanda 这篇文 ...

  4. jmeter之自定义java请求性能测试

    一.环境准备         1.新建一个java工程         2.导入jar包:ApacheJMeter_core.jar     ApacheJMeter_java.jar         ...

  5. 性能测试十二:jmeter进阶之java请求参数化

    如项目中的ip.端口号之类的,都可以在此代码中定义 public Arguments getDefaultParameters() { // TODO Auto-generated method st ...

  6. 六、Jmeter中自动提取Http请求参数,并put到Map,然后进行MD5加密

    1.BeanShell PerOrocessor中的脚本 import src.com.csjin.qa.MD5.*;//个人jar包 import java.util.*; import java. ...

  7. JMeter中使用Put请求方式请求接口

    前言 现在有如下接口,是以PUT的方式请求的: 请求URL:IP+Port+/api/v1/apps/{appId} 请求参数: 参数名 必选 类型 nameCn 是 string nameEn 是 ...

  8. eclipse中纯java配置log4j日志

    1.新建java项目log4Test 2.新建目录lib,把log4j-1.2.9.jar包放入lib目录 3.右键工程,选择Properties->Java Build Path->Li ...

  9. 利用jmeter发起java请求调用shell脚本

    1.创建maven项目 在pom文件中加入依赖:     2.在路径src/main/java下创建类,如类名shellclass                     3.      创建jmet ...

随机推荐

  1. MT【59】一道迭代函数作图

    [Read a good book, that is conversation with many a noble man.]---勒内·笛卡尔(1596-1650) 解答: 评:也可以把f(f(x) ...

  2. IDEA集成有道翻译插件/maven帮助插件/mybatis插件

    (一)IDEA集成有道翻译插件:https://www.cnblogs.com/a8457013/p/7814335.html 插件下载地址:http://plugins.jetbrains.com/ ...

  3. R语言画棒状图(bar chart)和误差棒(error bar)

    假设我们现在有CC,CG,GG三种基因型及三种基因型对应的表型,我们现在想要画出不同的基因型对应表型的棒状图及误差棒.整个命令最重要的就是最后一句了,用arrows函数画误差棒.用到的R语言如下: d ...

  4. advancedsearch.php织梦高级自定义模型字段无法调用解决方案

    advancedsearch.php织梦dedecms 高级自定义模型字段无法调用解决方案 ,具体步骤如下: 1  打开修改puls/advancedsearch.php文件,找到复制代码(不同版本可 ...

  5. shell中脚本变量和函数变量的作用域

    http://blog.csdn.net/ltx19860420/article/details/5570902 1. shell脚本中定义的变量是global的,其作用域从被定义的地方开始,到she ...

  6. 谨记:new Date()在IOS中的坑

    第一次遇到,记录一下 要创建一个指定时间的new Date对象时,通常的做法是: new Date("2018-04-27 11:11");然后就可以根据这个获取年月日等信息 这种 ...

  7. 多行文本文本输入框 textarea 可点击任意地方编辑的问题

    遇到了一个问题: textarea可以点击任意地方编辑 原因: textarea中间我换行了 改成: 就正常了.

  8. 【hihocoder】 Magic Box

    题目1 : Magic Box 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 The circus clown Sunny has a magic box. When ...

  9. django基础之数据库操作

    Django 自称是“最适合开发有限期的完美WEB框架”.本文参考<Django web开发指南>,快速搭建一个blog 出来,在中间涉及诸多知识点,这里不会详细说明,如果你是第一次接触D ...

  10. linux-2.6.26内核中ARM中断实现详解(转)

    转载:http://www.cnblogs.com/leaven/archive/2010/08/06/1794293.html 更多文档参见:http://pan.baidu.com/s/1dDvJ ...