- 【软件测试】学习笔记-JMeter 的核心概念
码农丁丁
软件工程#软件测试软件测试自动化测试JMeter
这篇文章主要介绍JMeter的核心概念,完善对测试工具的认识。为什么是JMeter性能测试有很多工具,JMeter、Loadrunner、Locust、nGrinder都不乏粉丝。有人认为做性能测试重要的不是工具,是思想。但从学习实践的角度讲,工具在一定程度上决定了工作效率及协作模式。要成为一名测试专家,对工具一定是要精通的。JMeter原生的方式只支持单点工作,团队成员并不能很方便地互相检查脚本
- css 去掉a标签下划线,CSS 解决 a标签去掉下划线 text-decoration: none无效 的解决方案...
weixin_39713841
css去掉a标签下划线
nGrinder安装指南NGrinder由两个模块组成,其运行环境为OracleJDK1.6nGrindercontrollerweb应用程序,部署在Tomcat6.x或更高的版本nGrinderA...Qt之QFileSystemWatcher简述QFileSystemWatcher类用于提供监视文件和目录修改的接口.QFileSystemWatcher通过监控指定路径的列表,监视文件系统中文件
- 阿里性能专家全方位对比Jmeter和Locust,到底谁更香?
码同学软件测试
近些年,随着互联网行业的不断发展,用户规模也有了爆发性的增长。产品的性能成为影响用户体验的重要因素。因此,性能测试越来越受到大型互联网企业的重视。在做性能测试时,通常都会借助一些压测工具来模拟大量的并发用户。目前业界压测工具种类繁多,比如Loadrunner、Jmeter、Locust、Ngrinder、Apacheab、Wrk、Webbench等。面临这么多的压测工具,我们应该如何做出选择呢?你
- Gatling学习笔记---开篇随笔
O_Oomg
gatling压测性能测试gatling性能测试压测
入门gatling是因为公司随着业务的发展,导致因为流量问题日益增多,所以公司希望开展压力测试来探索公司容量从而合理规划服务集群数量,在技术选型时候考虑了的主流的压测工具LoadRunner、Jmeter、Ngrinder等等。首先排除的就是LoadRunner,因为LoadRunner免费使用的额度较小无法满足当时的压测需求,而且收费较高使用成本较大,所以放弃了这款软件的使用,后续又对比了Jme
- 性能&接口测试工具——jmeter
洛奇洛
界面:标签:接口测试,性能测试,apache,开源简述:jmeter,著名的软件性能测试工具,也可以用于接口测试,由apche开源基金会提供,功能强大,插件丰富,能胜任各种场景的压力测试、负载测试。竞品:loadrunner,ngrinder,xmeter......链接:http://jmeter.apache.org/点评:业界流行的性能测试工具,也被广泛用于接口测试,java语言开发,完全开
- 阿里性能专家全方位对比Jmeter和Locust,到底谁更香?
小码哥说测试
软件测试技术分享自动化测试软件测试测试工程师自动化测试测试类型
近些年,随着互联网行业的不断发展,用户规模也有了爆发性的增长。产品的性能成为影响用户体验的重要因素。因此,性能测试越来越受到大型互联网企业的重视。在做性能测试时,通常都会借助一些压测工具来模拟大量的并发用户。目前业界压测工具种类繁多,比如Loadrunner、Jmeter、Locust、Ngrinder、Apacheab、Wrk、Webbench等。面临这么多的压测工具,我们应该如何做出选择呢?你
- 性能测试-性能测试工具wrk,Apache ab,ngrinder,locust,jmeter和loadrunner【杭州多测师_王sir】...
多测师_王sir
测试工具apachejmeter
性能测试工具:企业中主流性能测试工具:jmeterjmeter:java开发的开源,线程、学习很低,接口、自动化、性能测试、第三方性能测试从jmeter扩展loadrunner:商业loadrunner(录播),要付费购买并发用户数,脚本是c语言,性能比较好,性能指标值比较准确,性能测试的标杆wrk:快速响应性能测试工具,但是,不能做很复杂事情ab:快速响应性能测试工具,但是,不能做很复杂事情ng
- nGrinder详细介绍及性能工具对比
测试帮日记
点击链接加入QQ群229390571(免费公开课、视频应有尽有):https://jq.qq.com/?_wv=1027&k=5rbudQa在介绍nGrinder之前,有必要先说一下TheGrinder抛砖引玉。一、TheGrinder1、TheGrinder是一个基于Java的开源性能测试框架,通过多个agent负载机很方便的进行分布式测试。2、主要特性:可以测试任何java代码,包括各种常用的
- nGrinder学习笔记-简介和环境搭建(全网最全)
村东头元旦家
教程安装版本nGrinde版本r:3.3jdk版本:1.7.0_71tomcat版本:7.0.61安装其他版本也都是一样的套路。3.4本版本对应javaversion1.8以后的tomcat对应8.0以后的一、安装nGrinder1、下载、解压nGrindernGrinder下载链接sudowgethttp://jaist.dl.sourceforge.net/project/ngrinder/n
- 你的下一个压测工具可以是nGrinder
自动化代码美学
java开发语言
nGrinder小众而实用nGrinder在GitHub的star有1.6k,相比于JMeter6.4k来说,要少很多。在测试资料中,关于压测工具也是以JMeter居多,几乎没有专门针对nGrinder的学习资料。nGrinder既然这么小众,那为什么还要学它呢?因为听说咱们公司的压测平台,底层就是用的nGrinder,对于企业级应用来说,nGrinder还是很实用的,正如它的介绍:“Enterp
- nGrinder
Moddy
nGrinder简介nGrinder是基于Grinder开源项目,由NHN公司的开发团队进行了重新设计和完善。nGrinder是一款非常易用,有简洁友好的用户界面和controller-agent分布式结构的强大的压力测试工具。nGrinder测试基于python测试脚本(groovy也可),用户按照一定规范编写测试脚本,controller会将脚本一集需要的资源分发到agent,用jython执
- nGrinder REST API - 玩转压测nGrinder
DreamsonMa
nGrinder3.3提供了40多个RESTapi。最初,他们被开发成运行nGrinder作为基础架构。最近我们的一个合作伙伴开始创建游戏云,他们想运行nGrinder,但使用他们自己的UI。nGrinder3.3RESTapi支持这个场景。我们的RESTAPI集允许其他系统控制nGrinder的所有特性,包括用户管理、代理管理、脚本管理、性能测试管理。甚至系统配置。您可以首先查看RESTAPI/
- nGrinder代理自动更新 - 玩转压测nGrinder
DreamsonMa
从nGrinder3.3中,代理可以通过控制器的update命令进行自更新。本指南展示了如何更新代理。如果您正在使用nGrinder3.3或更高版本的控制器和代理,当您需要将代理更新到新版本时,您不需要将telnet客户机打开到每个代理机器。按照下面的步骤。1、只需进入代理管理页面。您可以看到附件中的代理列表。2、选择要更新的代理并单击“更新”按钮。当更新进行时,左边的球将会被损坏。3、更新将在2
- 阿里性能专家全方位对比Jmeter和Locust,到底谁更香?
Testfan软件测试平台
近些年,随着互联网行业的不断发展,用户规模也有了爆发性的增长。产品的性能成为影响用户体验的重要因素。因此,性能测试越来越受到大型互联网企业的重视。在做性能测试时,通常都会借助一些压测工具来模拟大量的并发用户。目前业界压测工具种类繁多,比如Loadrunner、Jmeter、Locust、Ngrinder、Apacheab、Wrk、Webbench等。面临这么多的压测工具,我们应该如何做出选择呢?你
- 基于nGrinder下的web网站性能测试
keitwo
简介nGrinder看名字估计很多人就猜到跟Grinder有关系。nGrinder是韩国一家公司居于Grinder二次开发的一个性能平台。nGrinder具有开源、易用、高可用、高扩展等特性,在Grinder基础上实现了多测试并行,通过web管理,实现了集群,同时支持Groovy和Jython脚本语言,(官方上说,Groovy的性能会更好),也实现了对目标服务的监控以及插件的扩展,简单实现更多用户
- nGrinder集群指南 - 玩转压测nGrinder
DreamsonMa
简单集群指南nGrinder3.3中,nGrinder支持“简易”集群模式,允许多控制器在一台机器上运行。因为它们在一台机器上运行,所以不需要为${NGRINDER_HOME}提供网络文件系统。运行中的控制器将与本地${NGRINDER_HOME}一起工作。请遵循以下步骤:运行H2TCP服务器1、下载H2并解压。2、运行H2TCP服务器。bin\h2.bat或者bin/h2.sh运行控制器1、运行
- nGrinder控制器配置指南 - 玩转压测nGrinder
DreamsonMa
本章描述了高级nGrinder控制器配置。如果您不是系统管理员,您可能不需要阅读本指南。然而,如果您想将nGrinder作为PAAS运行,您应该阅读这一章。控制器首页${NGRINDER_HOME}当nGrinder控制器启动时,nGrinder将创建${user.home}/.ngrinder目录到用户的主目录。此目录包含默认配置文件和数据。下面是.ngrinder目录的默认位置。Window:
- 压力测试平台(nGrinder)入门到精通教程
DreamsonMa
nGrinder简介&架构1、nGrinder简介&架构nGrinder管理员指南1、nGrinder安装指南2、nGrinder管理员指南3、nGrinder控制器配置指南4、nGrinder集群指南5、nGrinder代理配置指南6、nGrinder代理自动更新7、nGrinder私有代理nGrinder用户指南1、nGrinder快速入门2、nGrinder测试配置3、如何通过线程逐步提升压
- nGrinder性能工具源码安装部署过程
nGrinderr(version:3.4.1)是NAVER(韩国最大互联网公司NHN旗下搜索引擎网站)开源的性能测试工具,直接部署成web服务,支持多用户使用,可扩展性好,可自定义plugin。nGrinder是一款在一系列机器上执行Groovy或Jython测试脚本的应用,内部引擎是基于Grinder。nGrinder使用controller和agent分别包装了Grinder的console
- 性能工具之 nGrinder 入门安装及使用
zuozewei
性能性能nGrinder压测工具
文章目录一、介绍二、架构图三、快速安装1、下载二进制包2、下载tomcat中间件3、安装应用4、启动应用5、浏览器访问6、安装agent四、简单使用1、输入压测地址2、查看压测结果3、查看压测脚本五、小结一、介绍nGrinder(http://naver.github.io/ngrinder/)是基于Grinder开源项目,但由NHN(据说是韩国最大的互联网公司)公司的nGrinder开发团队进行
- nGrinder-运维人员轻量级性能测试平台
海尔兄弟_
nGrinder简介nGrinder是基于Grinder开源项目,由NHN公司的开发团队进行了重新设计和完善。nGrinder是一款非常易用,有简洁友好的用户界面和controller-agent分布式结构的强大的压力测试工具。nGrinder测试基于python测试脚本(groovy也可),用户按照一定规范编写测试脚本,controller会将脚本一集需要的资源分发到agent,用jython执
- 编写nGrinder脚本时,如何保持接口的登录状态
海尔兄弟_
在编写压测的脚本时,有两种情况:1.没有登陆状态,直接压目标接口2.有登陆状态,需要先登陆这里主要说一下第二种情况。脚本#-*-coding:utf-8-*-#AsimpleexampleusingtheHTTPpluginthatshowstheretrievalofa#singlepageviaHTTP.##Thisscriptisautomaticallygeneratedbyngrinde
- Docker部署nGrinder性能测试平台过程解析
什么是nGrinder?nGrinder是用于压力测试的平台,使您可以同时执行脚本创建,测试执行,监视和结果报告生成器。开源nGrinder通过消除不便并提供集成环境,提供了进行压力测试的简便方法。它是根据Apache许可版本2.0许可的,是基于Grinder的开源的web性能测试平台,由韩国最大互联网公司NHN公司的开发团队进行了重新设计和完善。http://naver.github.io/ng
- 数据生成方式的比较(jmeter/ngrinder/存储过程/source sql文件)
心无挂碍2020
性能测试
日常工作,需要生成一些存量数据。习惯用jmeter,但是也并不快。最近同事推荐了ngrinder,但是ngrinder并不适合于我们去写存量数据,也慢。存储过程和对sql文件进行source会快很多。生成方式优点缺点jmeter1、配置简单1、存在数据库连接2、复杂的情况可能会涉及到本地的csv文件读取1和2都非常影响效率ngrinder无1、、存在数据库连接2、复杂的情况可能会涉及到本地的csv
- nGrinder安装及环境搭建
gaorui2018
nGrinder
JDK、Tomcat版本推荐:nGrinder3.3支持JDK1.7Tomcat7.x版本nGrinder3.4支持JDK1.8Tomcat7.x版本安装步骤:1.安装jdk:JDK1.7:https://pan.baidu.com/s/1szUHH9qS8Kw7w62cGbPwpw密码:obbrJDK1.8:https://pan.baidu.com/s/1M5wFlVb9RQWlvte7jmt
- nGrinder源码分析:详细报告页数据展示
neven7
性能测试
0.背景当你查看nGrinder详细报告页,会展示性能数据结果和时序图,这些内部是怎么实现的呢?本文将分析源码,给你一个清晰的认识。1.源码分析当你请求http://ip/perftest/{testid}/detail_report;查看详细报告页时,Controller端将请求转给perftest/detail_report模板(ngrinder-controller/src/main/web
- ngrinder 基于java语言的分布式测试框架
keny风清扬
测试实践大全
用户访问量不断增长的同时,也伴随着后台站点性能要求的不断提升。很多情况下流量成倍增长所需的机器资源并不是简单的线性增加,更可能会成几何倍数飙涨,这不仅需要我们做好站点的过载保护和容灾,更需要通过压测来查找系统性能瓶颈点和吞吐量上限,提前扩容,避免流量高峰出现大量请求丢弃。那么对线上站点进行模拟压测,将是我们预估站点请求的最大承载量,估算业务站点所需机器资源等的有效手段的手段。下面将主要介绍nGri
- 如何用ngrinder替代jmeter
keny风清扬
1.ngrinder简介:一句话。使用简单,入门简单,但要玩好,一点也不简单2.jmeter简介:一句话。入门需要看下demo的例子。对会java代码的也相对简单。不过jmeter的线程真心不怎么样;nGrinder简介nGrinder是基于Grinder开源项目,但由NHN公司的nGrinder开发团队进行了重新设计和完善(所以叫做nGrinder)。nGrinder是一款非常易用,有友好简洁的
- nGrinder与JMeter的比较
bjo2008cn
自动化测试javajmeter性能测试分布式测试
nGrinder简介nGrinder是NHN公司用Java语言开发的一款的基于Grinder开发的开源B/SWeb性能测试平台,具有友好简洁的用户界面和分布式测试功能。nGrinder的分布式结构由一个controller和连接它的n个agent组成,controller类似于JMeter分布式结构的master,它把测试分发到多个agent上去执行并将多个agent的结果进行汇总。nGrinde
- 2018年回顾
阳明学徒
软件测试
阅读2018完成阅读《工匠精神》《别让无效努力毁了你》《一万小时天才理论》《华杉讲透孙子兵法》《今日简史》《货币战争(1~5)》网络贡献2018完成ngrinder的二次开发,并完成一次GitHub开源代码贡献编写博客39篇(其中一篇浏览总量过万)技能精进java技术从最初级的hellworld→各种通用jar包的使用→springMVC框架使用前端技术从简单的html→样式框架bootstrap
- java杨辉三角
3213213333332132
java基础
package com.algorithm;
/**
* @Description 杨辉三角
* @author FuJianyong
* 2015-1-22上午10:10:59
*/
public class YangHui {
public static void main(String[] args) {
//初始化二维数组长度
int[][] y
- 《大话重构》之大布局的辛酸历史
白糖_
重构
《大话重构》中提到“大布局你伤不起”,如果企图重构一个陈旧的大型系统是有非常大的风险,重构不是想象中那么简单。我目前所在公司正好对产品做了一次“大布局重构”,下面我就分享这个“大布局”项目经验给大家。
背景
公司专注于企业级管理产品软件,企业有大中小之分,在2000年初公司用JSP/Servlet开发了一套针对中
- 电驴链接在线视频播放源码
dubinwei
源码电驴播放器视频ed2k
本项目是个搜索电驴(ed2k)链接的应用,借助于磁力视频播放器(官网:
http://loveandroid.duapp.com/ 开放平台),可以实现在线播放视频,也可以用迅雷或者其他下载工具下载。
项目源码:
http://git.oschina.net/svo/Emule,动态更新。也可从附件中下载。
项目源码依赖于两个库项目,库项目一链接:
http://git.oschina.
- Javascript中函数的toString()方法
周凡杨
JavaScriptjstoStringfunctionobject
简述
The toString() method returns a string representing the source code of the function.
简译之,Javascript的toString()方法返回一个代表函数源代码的字符串。
句法
function.
- struts处理自定义异常
g21121
struts
很多时候我们会用到自定义异常来表示特定的错误情况,自定义异常比较简单,只要分清是运行时异常还是非运行时异常即可,运行时异常不需要捕获,继承自RuntimeException,是由容器自己抛出,例如空指针异常。
非运行时异常继承自Exception,在抛出后需要捕获,例如文件未找到异常。
此处我们用的是非运行时异常,首先定义一个异常LoginException:
/**
* 类描述:登录相
- Linux中find常见用法示例
510888780
linux
Linux中find常见用法示例
·find path -option [ -print ] [ -exec -ok command ] {} \;
find命令的参数;
- SpringMVC的各种参数绑定方式
Harry642
springMVC绑定表单
1. 基本数据类型(以int为例,其他类似):
Controller代码:
@RequestMapping("saysth.do")
public void test(int count) {
}
表单代码:
<form action="saysth.do" method="post&q
- Java 获取Oracle ROWID
aijuans
javaoracle
A ROWID is an identification tag unique for each row of an Oracle Database table. The ROWID can be thought of as a virtual column, containing the ID for each row.
The oracle.sql.ROWID class i
- java获取方法的参数名
antlove
javajdkparametermethodreflect
reflect.ClassInformationUtil.java
package reflect;
import javassist.ClassPool;
import javassist.CtClass;
import javassist.CtMethod;
import javassist.Modifier;
import javassist.bytecode.CodeAtt
- JAVA正则表达式匹配 查找 替换 提取操作
百合不是茶
java正则表达式替换提取查找
正则表达式的查找;主要是用到String类中的split();
String str;
str.split();方法中传入按照什么规则截取,返回一个String数组
常见的截取规则:
str.split("\\.")按照.来截取
str.
- Java中equals()与hashCode()方法详解
bijian1013
javasetequals()hashCode()
一.equals()方法详解
equals()方法在object类中定义如下:
public boolean equals(Object obj) {
return (this == obj);
}
很明显是对两个对象的地址值进行的比较(即比较引用是否相同)。但是我们知道,String 、Math、I
- 精通Oracle10编程SQL(4)使用SQL语句
bijian1013
oracle数据库plsql
--工资级别表
create table SALGRADE
(
GRADE NUMBER(10),
LOSAL NUMBER(10,2),
HISAL NUMBER(10,2)
)
insert into SALGRADE values(1,0,100);
insert into SALGRADE values(2,100,200);
inser
- 【Nginx二】Nginx作为静态文件HTTP服务器
bit1129
HTTP服务器
Nginx作为静态文件HTTP服务器
在本地系统中创建/data/www目录,存放html文件(包括index.html)
创建/data/images目录,存放imags图片
在主配置文件中添加http指令
http {
server {
listen 80;
server_name
- kafka获得最新partition offset
blackproof
kafkapartitionoffset最新
kafka获得partition下标,需要用到kafka的simpleconsumer
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.
- centos 7安装docker两种方式
ronin47
第一种是采用yum 方式
yum install -y docker
 
- java-60-在O(1)时间删除链表结点
bylijinnan
java
public class DeleteNode_O1_Time {
/**
* Q 60 在O(1)时间删除链表结点
* 给定链表的头指针和一个结点指针(!!),在O(1)时间删除该结点
*
* Assume the list is:
* head->...->nodeToDelete->mNode->nNode->..
- nginx利用proxy_cache来缓存文件
cfyme
cache
user zhangy users;
worker_processes 10;
error_log /var/vlogs/nginx_error.log crit;
pid /var/vlogs/nginx.pid;
#Specifies the value for ma
- [JWFD开源工作流]JWFD嵌入式语法分析器负号的使用问题
comsci
嵌入式
假如我们需要用JWFD的语法分析模块定义一个带负号的方程式,直接在方程式之前添加负号是不正确的,而必须这样做:
string str01 = "a=3.14;b=2.71;c=0;c-((a*a)+(b*b))"
定义一个0整数c,然后用这个整数c去
- 如何集成支付宝官方文档
dai_lm
android
官方文档下载地址
https://b.alipay.com/order/productDetail.htm?productId=2012120700377310&tabId=4#ps-tabinfo-hash
集成的必要条件
1. 需要有自己的Server接收支付宝的消息
2. 需要先制作app,然后提交支付宝审核,通过后才能集成
调试的时候估计会真的扣款,请注意
- 应该在什么时候使用Hadoop
datamachine
hadoop
原帖地址:http://blog.chinaunix.net/uid-301743-id-3925358.html
存档,某些观点与我不谋而合,过度技术化不可取,且hadoop并非万能。
--------------------------------------------万能的分割线--------------------------------
有人问我,“你在大数据和Hado
- 在GridView中对于有外键的字段使用关联模型进行搜索和排序
dcj3sjt126com
yii
在GridView中使用关联模型进行搜索和排序
首先我们有两个模型它们直接有关联:
class Author extends CActiveRecord {
...
}
class Post extends CActiveRecord {
...
function relations() {
return array(
'
- 使用NSString 的格式化大全
dcj3sjt126com
Objective-C
格式定义The format specifiers supported by the NSString formatting methods and CFString formatting functions follow the IEEE printf specification; the specifiers are summarized in Table 1. Note that you c
- 使用activeX插件对象object滚动有重影
蕃薯耀
activeX插件滚动有重影
使用activeX插件对象object滚动有重影 <object style="width:0;" id="abc" classid="CLSID:D3E3970F-2927-9680-BBB4-5D0889909DF6" codebase="activex/OAX339.CAB#
- SpringMVC4零配置
hanqunfeng
springmvc4
基于Servlet3.0规范和SpringMVC4注解式配置方式,实现零xml配置,弄了个小demo,供交流讨论。
项目说明如下:
1.db.sql是项目中用到的表,数据库使用的是oracle11g
2.该项目使用mvn进行管理,私服为自搭建nexus,项目只用到一个第三方 jar,就是oracle的驱动;
3.默认项目为零配置启动,如果需要更改启动方式,请
- 《开源框架那点事儿16》:缓存相关代码的演变
j2eetop
开源框架
问题引入
上次我参与某个大型项目的优化工作,由于系统要求有比较高的TPS,因此就免不了要使用缓冲。
该项目中用的缓冲比较多,有MemCache,有Redis,有的还需要提供二级缓冲,也就是说应用服务器这层也可以设置一些缓冲。
当然去看相关实现代代码的时候,大致是下面的样子。
[java]
view plain
copy
print
?
public vo
- AngularJS浅析
kvhur
JavaScript
概念
AngularJS is a structural framework for dynamic web apps.
了解更多详情请见原文链接:http://www.gbtags.com/gb/share/5726.htm
Directive
扩展html,给html添加声明语句,以便实现自己的需求。对于页面中html元素以ng为前缀的属性名称,ng是angular的命名空间
- 架构师之jdk的bug排查(一)---------------split的点号陷阱
nannan408
split
1.前言.
jdk1.6的lang包的split方法是有bug的,它不能有效识别A.b.c这种类型,导致截取长度始终是0.而对于其他字符,则无此问题.不知道官方有没有修复这个bug.
2.代码
String[] paths = "object.object2.prop11".split("'");
System.ou
- 如何对10亿数据量级的mongoDB作高效的全表扫描
quentinXXZ
mongodb
本文链接:
http://quentinXXZ.iteye.com/blog/2149440
一、正常情况下,不应该有这种需求
首先,大家应该有个概念,标题中的这个问题,在大多情况下是一个伪命题,不应该被提出来。要知道,对于一般较大数据量的数据库,全表查询,这种操作一般情况下是不应该出现的,在做正常查询的时候,如果是范围查询,你至少应该要加上limit。
说一下,
- C语言算法之水仙花数
qiufeihu
c算法
/**
* 水仙花数
*/
#include <stdio.h>
#define N 10
int main()
{
int x,y,z;
for(x=1;x<=N;x++)
for(y=0;y<=N;y++)
for(z=0;z<=N;z++)
if(x*100+y*10+z == x*x*x
- JSP指令
wyzuomumu
jsp
jsp指令的一般语法格式: <%@ 指令名 属性 =”值 ” %>
常用的三种指令: page,include,taglib
page指令语法形式: <%@ page 属性 1=”值 1” 属性 2=”值 2”%>
include指令语法形式: <%@include file=”relative url”%> (jsp可以通过 include