- 基于Mybatis-Plus和dynamic-datasource-spring-boot-starter-多租户多商户多数据源动态切换
更容易记住我
数据库javamybatis
基础知识1、引入dynamic-datasource-spring-boot-starter。com.baomidoudynamic-datasource-spring-boot-starter${version}2、配置默认数据源spring:datasource:dynamic:primary:master#设置默认的数据源或者数据源组,默认值即为masterstrict:false#设置严格
- mybatisPlus打印sql配置
m0_74823683
面试学习路线阿里巴巴sql数据库
MyBatis-Plus提供了方便的配置方式来打印SQL查询语句,以便进行调试和性能分析。可以通过配置log来输出SQL语句以及执行的参数。方法1:通过application.properties或application.yml配置打印SQL可以通过配置application.properties或application.yml文件来启用MyBatis-Plus的SQL打印功能。1.1在appli
- 【Java 常用注解学习笔记1】——Java 常用注解全解析:从基础到实战
猿享天开
Java开发从入门到精通java学习笔记
Java常用注解全解析:从基础到实战一、引言Java注解(Annotation)是现代化开发中提升代码简洁性、可维护性和与框架集成的重要工具。本文系统化梳理主流框架(Spring、MyBatis-Plus、Swagger等)的核心注解,通过分类解析、代码示例与最佳实践,帮助开发者精准掌握注解的应用场景与技巧。二、Lombok注解1.代码简化注解注解作用示例注意事项@Data生成getter/set
- MybatisPlus
夏尔子爵
javamavenintellij-idea
一MybatisPlus(MP)介绍MyBatis-Plus(简称MP)是一个MyBatis的增强工具,在MyBatis的基础上只做增强不做改变,为简化开发、提高效率而生。二MybatisPlus(MP)特性1无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑2损耗小:启动即会自动注入基本CURD,性能基本无损耗,直接面向对象操作3强大的CRUD操作:内置通用Mapper、通用Se
- MyBatis 和 MyBatis-Plus 入门指南:新手必读
Mr_Paizong
Javajavamybatis
MyBatis和MyBatis-Plus入门指南:新手必读在Java开发中,持久层的设计和实现是非常重要的一环。MyBatis和MyBatis-Plus是两个广泛使用的数据库访问框架,它们可以帮助我们更高效地与数据库进行交互。本篇博客将详细介绍这两个框架的基本使用方法,并附有代码注释,帮助新手更好地理解和实践。一、什么是MyBatis和MyBatis-Plus?1.1MyBatisMyBatis是
- Mybatis-plus 分页 自定义count方法
当归1024
javamybatisjava开发语言ruoyi
起因使用了mybatisplus语句中有orderby语法mybatisplus会使用selectcount(*)from(子语句)TOTAL算出total但是会报错查询条件QueryWrapper中还有orderby排序条件,则生成的selectcount(*)from(sql)就会报错除非另外还指定了TOP、OFFSET或FORXML,否则,ORDERBY子句在视图、内联函数、派生表、子查询和
- SpringBoot整合easy-es
m0_74824865
面试学习路线阿里巴巴springbootelasticsearch后端
一、easy-es简介EasyES是一款基于Elasticsearch官方提供的RestHighLevelClient开发的ORM框架,旨在简化开发流程并提高效率。EasyES在保持RestHighLevelClient原有功能的基础上进行增强,而不做任何改变。它采用与Mybatis-Plus相似的语法,使得开发者可以无缝迁移至EasyES,无需额外学习成本。EasyES的核心理念是将简单、易用性
- MyBatis-Plus常用增删改查方法
Warren98
Javamybatistomcatspringboot笔记mysql
MP常用方法方法作用对应SQLinsert(user)插入数据INSERTINTO...selectById(id)根据ID查询SELECT*FROM...WHEREid=?selectBatchIds(ids)批量查询SELECT*FROM...WHEREidIN(?,?,?)selectList(wrapper)条件查询SELECT*FROM...WHERE...updateById(user
- MyBatis-Plus结合Spring Boot实现数据权限
一、场景介绍在开发过程中很多时候我们需要根据某些条件去做数据权限,比如:A组织只能看见A组织及其下属组织的数据,B部门只能看见自己的数据、等等,此时如果每次都去自己写SQL进行校验就会显得代码非常臃肿,因为就产生了自己去定义一套全局公用的数据权限过滤方式。二、实现思路借助于Spring的拦截器或过滤器,当请求进入到Controller时,将该用户的数据权限信息存入数据权限上下文中,在MyBatis
- Mybatis-Plus学习笔记(自用)
Zzzchc
学习笔记(自用)mybatis学习java
Mybatis-Plus学习笔记(自用)本文根据黑马程序员的课程资料与百度搜索的资料共同整理所得,仅用于学习使用,如有侵权,请联系删除文章目录Mybatis-Plus学习笔记(自用)1.纯Mybatis与Mybatis-Plus整合2.Spring+Mybatis+MP3.SpringBoot+Mybatis+MP4.通用CRUD详解4.1注解详解4.2增删改查操作4.3SQL注入原理5.配置5.
- MybaitsPlus学习笔记(三)常用注解
画船听雨眠aa
学习笔记
目录一、@TableName问题:解决方法1通过@TableName解决问题解决方法2通过全局配置解决问题二、@TableId问题:解决方法1通过@TableId解决问题三、@TableField四、@TableLogic一、@TableName问题:MyBatis-Plus在确定操作的表时,由BaseMapper的泛型决定,即实体类型决定,且默认操作的表名和实体类型的类名一致。若实体类类型的类名
- mybatis-plus使用sum,count,distinct等函数的方法
默 唁
JAVAmybatisjavamysql
mybatis-plus使用sum,count,distinct等函数的方法通过mybatis-plus实现以下sql查询SELECTCOUNT(DISTINCTuser_name)FROMuser_infoWHEREis_deleted=0ANDis_enabled=1mybatis-plus实现intcount=this.count(Wrappers.query().select("DISTI
- MyBatis-Plus分页查询
pan_junbiao
MyBatis-Plus我の原创java数据库开发语言
在实际开发中,对于大量数据的查询,可以通过分页查询的方式来减少查询量和提高查询效率。在MyBatis-Plus中,分页查询可以通过使用Page对象和IService接口提供的分页方法来实现。MyBatis-Plus的分页插件PaginationInnerInterceptor提供了强大的分页功能,支持多种数据库,使得分页查询变得简单高效。官方文档:《MyBatis-Plus分页插件》Page类的说
- 解决Mybatis-plus与springboot3.0+、spring6.0+的兼容性问题
lian潋湄
mybatis
根据mybatis-plus学习框架时,一直都会报错如下信息:当时并不知道这几个工具之间存在版本兼容性问题,就一直苦于找不到合适的解决方法,于是便上网开始了疯狂的搜索,发现改了好多地方还是不行。偶然间了解到了工具之间版本是存在兼容性问题的,一开始问ChatGPT也并没有给出正确的回答,于是我去了最最权威的官网查看,终于发现了问题所在:mybatis-plus官网给出的mybatis-plus插件依
- SpringBoot3整合MyBatis-Plus
Mais10011
springbootmybatis
准备数据CREATETABLE`t_user`(idBIGINTNOTNULLCOMMENT'主键ID',nameVARCHAR(30)NULLDEFAULTNULLCOMMENT'姓名',ageINTNULLDEFAULTNULLCOMMENT'年龄',emailVARCHAR(50)NULLDEFAULTNULLCOMMENT'邮箱',PRIMARYKEY(id));INSERTINTO`t_
- MyBatis-Plus介绍及基本使用
墨鸦_Cormorant
#Java持久层mybatismybatis-plusmybatisPlus
文章目录概述介绍MyBatis-Plus常用配置分页插件配置类注解配置快速入门maven依赖编写配置文件编写启动类编写MybatisPlus配置类代码生成器:MybatisPlusGeneratormaven依赖代码生成器核心类概述介绍MyBatis-Plus(简称MP)是一个MyBatis的增强工具,在MyBatis的基础上只做增强不做改变,为简化开发、提高效率而生。主页:传送门引入MyBati
- mybatis-plus逆向code generator pgsql实践
松树戈
工具使用mybatisspringboot
mybatis-plus逆向codegeneratorpgsql实践环境准备重要工具的版本供参考pom依赖待逆向的SQL配置文件CodeGenerator配置类配置类说明环境准备重要工具的版本jdk1.8.0_131springboot2.7.6mybatis-plus3.5.7pgsql14.15供参考pom依赖4.0.0com.tghparent-demo0.0.1-SNAPSHOTparen
- mybatis-plus 结合p6spy实现SQL分析打印,及其SQL美化插件
夏至xz
Mybatis-Plussql数据库mysqlmybatis-plusspring
mybatis-plus执行SQL分析打印,及其SQL美化插件该功能依赖p6spy组件,完美的输出打印SQL及执行时长3.1.0以上版本p6spy依赖引入p6spyp6spy最新版本application.yml配置:更改数据库驱动spring:datasource:driver-class-name:com.p6spy.engine.spy.P6SpyDriverurl:jdbc:p6spy:h
- 一招搞定! 自定义MyBatis拦截器,SQL日志存储成本直降30%
梦想歌
组件开发mybatissql数据库
背景MyBatisPlus通过配置文件中设置log-impl属性来指定日志实现,以打印SQL语句。mybatis-plus:configuration:log-impl:org.apache.ibatis.logging.stdout.StdOutImpllogging:level:org.ylzl.eden.demo.mapper:DEBUG打印出来的SQL内容如下。==>Preparing:S
- MyBatis-Plus快速使用
是姜姜啊!
javajavaspringboot
1.介绍MyBatis-Plus是一个基于MyBatis的增强工具,旨在简化开发,提高效率。它在MyBatis的基础上进行扩展,只做增强不做改变,不会对现有的MyBatis构架产生任何影响。特性和优势无侵入性:MyBatis-Plus在MyBatis的基础上进行扩展,只做增强不做改变,引入MyBatis-Plus不会对现有的MyBatis构架产生任何影响。依赖少:仅仅依赖MyBatis以及MyBa
- 聊聊mybatis-plus的DefaultIdentifierGenerator
mybatis-plus
序本文主要研究一下mybatis-plus的DefaultIdentifierGeneratorMybatisSqlSessionFactoryBuildercom/baomidou/mybatisplus/core/MybatisSqlSessionFactoryBuilder.java@OverridepublicSqlSessionFactorybuild(Configurationconf
- 【Java】QueryWrapper方法解释
洒脱的六边形战士加辣
java开发语言
Java中的QueryWrapper是MyBatis-Plus框架提供的一个查询构造器,用于构建查询条件。一、使用方法大全queryWrapper.lt()——小于queryWrapper.le()——小于等于queryWrapper.gt()——大于queryWrapper.ge()——大于等于queryWrapper.eq()——等于queryWrapper.ne()——不等于queryWra
- MyBatis Plus 输出完整 SQL(带参数)的 3 种方案
( •̀∀•́ )920
mybatissqljava
目录❓为什么MyBatisPlus默认SQL日志没有参数?方案1:使用`SqlLogInterceptor`(推荐✅)方案2:自定义MyBatis`Interceptor`**编写`Interceptor`:**方案3:开启MyBatis日志(手动拼接SQL)⚖️最佳方案对比与选择结论:哪种方式适合你?❓为什么MyBatisPlus默认SQL日志没有参数?当你使用mybatis-plus时,可能会
- 问题排查:MyBatis-Plus 缓存导致查询结果不一致问题
代码简单说
开发必备2025开发必备mybatis缓存oracleMyBatis-PlusMyBatis-Plus查询sql缓存缓存机制
深度剖析:MyBatis-Plus缓存导致查询结果不一致问题欢迎关注『开发必备』专栏,专注于解决你在开发过程中遇到的各种问题,帮你快速找到解决方案,节省大量调试时间。内容持续更新中,保证每篇都值得收藏!问题背景在维护一个历史项目时,测试阶段发现一个奇怪的问题:同一个数据库表,同样的查询条件,两次查询返回的值居然不同。这个现象本身非常不符合直觉,因为数据库中的数据没有发生变化。为了找出问题原因,经过
- Mybatis-plus缓存机制
小电玩
mybatis缓存
Mybatis-plus缓存机制一,介绍MyBatis-Plus(简称MP)是一个基于MyBatis的增强工具,提供了更便捷的CRUD操作和其他功能。与MyBatis相比,MyBatis-Plus并没有引入自己的缓存机制,而是直接使用了MyBatis的缓存机制。在MyBatis中,缓存分为一级缓存和二级缓存。一级缓存:一级缓存是SqlSession级别的缓存,它默认是开启的。当查询操作执行时,查询
- Mybatis-plus缓存
康惠桀
mybatis缓存
mybatis-plus缓存MyBatis-Plus是一个MyBatis的增强工具,在MyBatis的基础上提供了更多的便利性和强大的功能,包括但不限于分页、条件构造器、通用Mapper、代码生成器等。MyBatis-Plus也内置了基础的缓存功能,但需要注意的是,MyBatis-Plus本身并不提供复杂的缓存机制,例如二级缓存。不过,你可以通过集成第三方缓存框架或者使用MyBatis-Plus提
- Spring Boot整合MyBatis-Plus以及实现分页
Demon_Hao
springbootmybatis
MyBatis-Plus是MyBatis的一个增强工具包,它在原有的MyBatis框架之上提供了更多便捷的功能和增强,有助于简化开发流程、提高开发效率。以下是MyBatis-Plus的一些主要特点和功能:CRUD操作增强:MyBatis-Plus提供了一套强大的CRUD方法,可以帮助开发者快速完成常见的数据库操作,无需编写繁琐的SQL语句,从而简化了数据访问的操作。条件构造器:MyBatis-Pl
- 基于Maven的Spring/SpringMVC/Mybatis/Mybatis-plus/Apache-Shiro基础环境配置
weixin_30685029
javajson测试
记录一下,以便不时之需。pom.xml122.534.2.5.RELEASE41.8.9563.4.071.3.089101.1.7110.1.4121.7.211314151.0.18165.1.381718191.2.22021224.122324252627javax.servlet28servlet-api29${servlet-api.version}30provided31323334
- mybatis/mybatis-plus模糊查询语句特殊字符转义拦截器的实现
Java云海.
mysql数据库database
在开发中,我们通常会遇到这样的情况。用户在录入信息是录入了‘%’,而在查询时无法精确匹配‘%’。究其原因,‘%’是MySQL的关键字,如果我们想要精确匹配‘%’,那么需要对其进行转义,本文就详细的介绍一下目录1.使用mybatis提供的拦截器拦截所有的查询请求。2.定义SQL语句转义模板,分别对Map和Object对象进行处理mybatis/mybatis-plus模糊查询语句特殊字符转义拦截器在
- 史上最强!Spring Boot 3.3 高效批量插入万级数据的多种方案
m0_74825074
面试学习路线阿里巴巴springboot后端java
SpringBoot3.3多种方式实现高效批量插入万级数据,史上最强!在大数据处理场景下,如何高效地将大量数据插入数据库是一个重要课题。本文基于SpringBoot3.3及MyBatis-Plus,介绍几种高效的批量插入数据的方法,包括:使用JDBC批处理使用自定义SQL批处理单条插入(for循环)拼接SQL语句插入MyBatis-Plus的saveBatch方法循环插入+开启批处理模式每种方式都
- 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