- Spring Boot 自动配置:从 spring.factories 到 AutoConfiguration.imports 的演变
大手你不懂
Javaspringspringspringboot后端
引言SpringBoot的自动配置机制是其【开箱即用】特性的核心支撑,通过减少显式配置和简化开发流程,显著提升了开发效率。随着SpringBoot版本的迭代,自动配置的实现机制也在不断优化。本文将深入解析spring.factories和AutoConfiguration.imports的演进历程、技术差异、使用场景及迁移策略,帮助开发者更好地理解和应用SpringBoot的自动配置能力。一、自动
- 干货|Spring Cloud Stream 体系及原理介绍
java高并发
[SpringCloudStream]在SpringCloud体系内用于构建高度可扩展的基于事件驱动的微服务,其目的是为了简化消息在SpringCloud应用程序中的开发。SpringCloudStream(后面以SCS代替SpringCloudStream)本身内容很多,而且它还有很多外部的依赖,想要熟悉SCS,必须要先了解SpringMessaging和SpringIntegration这两个
- [特殊字符] Spring Boot 常用注解全解析:20 个高频注解 + 使用场景实例
库库林_沙琪马
springbootspringboot后端java
一文掌握SpringBoot中最常用的20个注解,涵盖开发、配置、Web、数据库、测试等场景,配合示例讲解,一站式掌握!一、核心配置类注解1.@SpringBootApplication作用:标记为SpringBoot应用的入口类,包含了@Configuration、@EnableAutoConfiguration和@ComponentScan。使用场景:主启动类上唯一标注一次。@SpringBo
- SpringBoot服装推荐系统实战
KENYCHEN奉孝
javaAIspringboot后端人工智能
SpringBoot服装推荐系统实例以下是基于SpringBoot实现的服装推荐系统的30个实例代码示例,涵盖核心功能和实现方法。用户注册与登录功能@RestController@RequestMapping("/api/auth")publicclassAuthController{@AutowiredprivateUserServiceuserService;@PostMapping("/re
- 【商城实战(45)】商城系统优化:从蹒跚学步到健步如飞
奔跑吧邓邓子
商城实战商城实战商城系统优化
【商城实战】专栏重磅来袭!这是一份专为开发者与电商从业者打造的超详细指南。从项目基础搭建,运用uniapp、ElementPlus、SpringBoot搭建商城框架,到用户、商品、订单等核心模块开发,再到性能优化、安全加固、多端适配,乃至运营推广策略,102章内容层层递进。无论是想深入钻研技术细节,还是探寻商城运营之道,本专栏都能提供从0到1的系统讲解,助力你打造独具竞争力的电商平台,开启电商实战
- 【SpringCloud微服务实战09】Elasticsearch 搜索引擎
李维山
Javaelasticsearchspringcloud搜索引擎
一、Elasticsearch安装1、Docker安装ES#创建一个网络dockernetworkcreatees-net#拉取ES镜像(这里使用7.17.18版本)dockerpullelasticsearch:7.17.18#新建一个目录存放es数据mkdirescdes#docker运行单机启动esdockerrun-d\--namees\-e"ES_JAVA_OPTS=-Xms512m-X
- Spring AOT(Ahead-of-Time)深度解析:下一代云原生架构核心
csdn_tom_168
Springspring云原生架构AOT
SpringAOT(Ahead-of-Time)深度解析:下一代云原生架构核心SpringAOT(Ahead-of-Time)编译是Spring框架6和SpringBoot3的革命性创新,彻底改变了Java应用的部署范式。本文将全面解析SpringAOT的工作原理、核心组件及企业级实践方案。一、AOT编译范式转变1.传统JVM模式vsAOT模式对比维度JVM模式AOT模式启动时间秒级(2-10s)
- SpringBoot为什么使用new RuntimeException() 来获取调用栈?
ldj2020
javaspringbootjava后端
为什么不直接使用Thread.currentThread().getStackTrace()?这确实看起来有点“奇怪”或者“绕”,但其实这是Java中一种非常常见、巧妙且合法的技巧,用于在运行时动态获取当前代码的调用栈信息。Spring选择用newRuntimeException().getStackTrace()是有原因的,主要有以下几点区别:特性newException().getStackT
- Python,Java,C++开发磁悬浮原理与技术实操APP
Geeker-2025
pythonjavac++
#磁悬浮原理与技术实操APP技术方案基于Python、Java和C++开发的磁悬浮原理学习与应用APP,结合理论教学与实操模拟:##系统架构设计```mermaidgraphTDA[跨平台客户端-C++/Qt]-->|API调用|B[后端服务-Java/Spring]B-->C[磁悬浮模拟引擎-Python]B-->D[硬件控制接口]C-->E[物理模型计算]D-->F[磁悬浮套件]A-->G[3
- SpringBoot整合Swagger2快速指南
Cyanto
SpringBootspringboot后端java
Swagger简介Swagger是一款强大的API文档生成工具,它能够自动为RESTfulAPI生成可视化文档,支持在线测试接口,极大提高了前后端协作效率。本文将详细介绍如何在SpringBoot项目中整合Swagger2。环境准备版本要求重要提示:SpringBoot版本不能过高,推荐使用2.5.6版本:org.springframework.bootspring-boot-starter-pa
- Spring类加载机制揭秘:深度解析“加载”阶段
BrightChen666
javaspringjava后端
1.引言当谈论Spring的类加载机制时,其实是在讨论Java虚拟机(JVM)的类加载机制,因为Spring本身并不直接负责类的加载,而是依赖于JVM的类加载器。不过,Spring确实在类加载过程中扮演了重要的角色,特别是在其IoC(控制反转)容器中管理Bean的生命周期时。现在,将重点聚焦在类加载过程的“加载”阶段,并进行深度解析。2.类加载机制概述类加载机制是JVM将类的.class文件加载到
- 【Java源码阅读系列56】深度解读Java Constructor 类源码
·云扬·
源码阅读系列之Javajava开发语言
Java反射机制中,Constructor类是操作构造方法的核心入口。它封装了构造方法的元信息(如参数类型、修饰符)和实例化逻辑,是框架(如Spring、MyBatis)动态创建对象的关键工具。本文基于JDK1.8源码,从类结构、关键方法、设计模式、典型场景等维度,深入解析Constructor类的实现逻辑与设计思想。一、类结构与核心定位1.1类定义与继承关系Constructor类被声明为pub
- AOP在哪些场景下可能会失效?
爱学习的小熊猫_
javaspringspringbootAOP事务
AOP一般在哪些场景下可能会失效?定义:AOP动态代理在Spring中主要通过JDK动态代理(基于接口)和CGLIB代理(基于继承)实现,但在以下场景中可能失效,导致拦截失败:一、失效场景及原理分析1.类内部方法调用(最常见)场景:@ServicepublicclassUserService{publicvoidmethodA(){methodB();//内部调用→AOP失效}@Transacti
- Spring AOP(面向切面编程,Aspect-Oriented Programming)
SpringAOP(面向切面编程,Aspect-OrientedProgramming)一、SpringAOP是什么?SpringAOP是Spring框架提供的面向切面编程支持,用于将横切关注点(cross-cuttingconcerns,如日志、事务、权限检查等)与核心业务逻辑分离。AOP允许开发者通过声明式方式将通用功能模块化,减少代码重复,提高代码可维护性。核心概念Aspect(切面):切面
- Spring系列(一):Spring MVC bean 解析、注册、实例化流程源码剖析
Firstlucky77
springmvcintellij-idea
背景最近在使用SpringMVC过程中遇到了一些问题,网上搜索不少帖子后虽然找到了答案和解决方法,但这些答案大部分都只是给了结论,并没有说明具体原因,感觉总是有点不太满意。更重要的是这些所谓的结论大多是抄来抄去,基本源自一家,真实性也有待考证。要成为一名优秀的码农,不仅能熟练的复制粘贴,更要有打破砂锅问到底的精神,达到知其然也知其所以然的境界。那作为程序员怎么能知其所以然呢?答案就是阅读源代码!此
- Spring Boot(六)集成 MyBatis 操作 MySQL 8
一、简介1.1MyBatis介绍MyBatis是一款优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。1.2MyBatis发展史MyBatis原本是apache的一个开源项目iBatis,2010年这个项目由apachesoftwarefoundation迁移到了googlecode,并且改名为MyBatis,201
- Java实现简单秒杀功能
在商城项目中,秒杀功能可以说是必不可少的,下面我将使用SpringBoot集成Redis、RabbitMQ、MyBatis-Plus和MySQL来实现一个简单的秒杀系统,系统将包含以下核心功能:使用Redis进行库存预减和用户限流;使用RabbitMQ进行异步下单,提高系统吞吐量;使用MyBatis-Plus操作MySQL数据库;利用Redis执行Lua脚本的原子性防止商品超卖;接口限流(使用Re
- 备份11111
Ellie艾藜
前端
hospital:医疗小项目后台管理,React+axios+antdhttps://gitee.com/whiteshader/ruoyi-react/tree/spring-cloud-v3/#%E6%BC%94%E7%A4%BA%E5%9B%BE
- SpringBoot架构下智慧物流管理系统设计详解
本文还有配套的精品资源,点击获取简介:本文详细讲解了如何利用SpringBoot框架构建智慧物流管理系统,并涉及关键技术和实现原理。文章首先介绍了SpringBoot的核心组件和工作原理,然后探讨了RESTfulAPI的构建、数据模型与数据库设计、GPS定位服务集成、权限控制和认证、微服务化以及系统测试等关键方面。这一系统结合Java技术优势,提供了一个高效、智能化的物流行业解决方案。1.Spri
- JAVA打手俱乐部护航陪玩小程序+APP+公众号+h5 源码陪玩系统
2401_89605681
嗖微miui52086java小程序开发语言微信小程序uni-app
万亿游戏社交蓝海:JAVA打手俱乐部护航陪玩系统源码解析(小程序+APP+H5全端覆盖)在电竞产业爆发与社交需求升级的双重驱动下,全球游戏陪玩市场规模突破120亿美元(2025年Newzoo数据),而传统平台面临信任危机、匹配低效、变现单一等痛点。JAVA打手俱乐部护航陪玩系统源码以SpringBoot+MyBatisPlus+MySQL为核心,通过Uni-app跨端开发实现小程序/APP/公众号
- JAVA打手俱乐部护航陪玩小程序+APP+公众号+h5 源码陪玩系统
源码_V_saaskw
嗖微miui52086java小程序开发语言uni-app微信小程序微信公众平台
万亿游戏社交蓝海:JAVA打手俱乐部护航陪玩系统源码解析(小程序+APP+H5全端覆盖)在电竞产业爆发与社交需求升级的双重驱动下,全球游戏陪玩市场规模突破120亿美元(2025年Newzoo数据),而传统平台面临信任危机、匹配低效、变现单一等痛点。JAVA打手俱乐部护航陪玩系统源码以SpringBoot+MyBatisPlus+MySQL为核心,通过Uni-app跨端开发实现小程序/APP/公众号
- JAVA打手俱乐部护航陪玩小程序+APP+公众号+h5 源码陪玩系统
狂团商城小师妹
嗖微miui52086java小程序开发语言微信小程序javascript
万亿游戏社交蓝海:JAVA打手俱乐部护航陪玩系统源码解析(小程序+APP+H5全端覆盖)在电竞产业爆发与社交需求升级的双重驱动下,全球游戏陪玩市场规模突破120亿美元(2025年Newzoo数据),而传统平台面临信任危机、匹配低效、变现单一等痛点。JAVA打手俱乐部护航陪玩系统源码以SpringBoot+MyBatisPlus+MySQL为核心,通过Uni-app跨端开发实现小程序/APP/公众号
- JAVA无人系统台球室源码自助开台约球交友系统源码小程序
全域无人化运营革命:JAVA无人系统台球室源码解析(支持茶室/棋牌/KTV多业态)在共享经济与无人化浪潮的推动下,全球自助娱乐市场规模突破千亿美元,传统台球室、棋牌室面临人力成本高、运营效率低、用户粘性弱等痛点。JAVA无人系统台球室源码以SpringBoot+MyBatisPlus+MySQL为核心技术栈,通过Uni-app跨端开发实现小程序/H5/APP全渠道覆盖,集成AI裁判、社交裂变、多支
- Java——SpringBoot系列【1】
本篇就围绕Java中的Spring框架做一些讲解吧【大部分都是SpringBoot的】1、什么是SpringBoot?多年来,随着新功能的增加,spring变得越来越复杂。只需访问https://spring.io/projects页面,我们就会看到可以在我们的应用程序中使用的所有Spring项目的不同功能。如果必须启动一个新的Spring项目,我们必须添加构建路径或添加Maven依赖关系,配置应
- springboot2.x Embedded Tomcat 配置jndi
方穹轩
对于EmbeddedTomcat的话,需要添加ServletWebServerFactory进行配置配置ServletWebServerFactory@ConfigurationpublicclassJNDIConfig{@BeanpublicServletWebServerFactorywebServerFactory(){TomcatServletWebServerFactorytomcatS
- [spring6: BeanPostProcessor & BeanFactoryPostProcessor]-生命周期
idolyXyz
spring6-源码阅读spring
BeanFactoryPostProcessorBeanFactoryPostProcessor接口允许在Spring容器初始化完所有的bean定义之后,但还未实例化任何bean时,修改应用上下文的内部bean工厂。通过实现postProcessBeanFactory方法,你可以覆盖或添加属性,甚至是对急切初始化的beans进行修改。//AspectJWeavingEnabler,Configur
- Java框架入门——SpringBoot框架
初尘屿风
java初尘屿风SpringBootjavaspringspringbootmavenvue
文章目录前言一、SpringBoot是什么?二、请求与响应介绍二、springBoot之helloWorld总结前言Spring都包含了哪些部分呢?主要包含SpringBoot、SpringFramework、SpringData、SpringCloud、SpringCloudDataFlow、SpringSecurity、SpringBatch等众多项目。在spring的官网中对其有详细的介绍。
- Java——SpringBoot搭建(二)
文章目录Java成长中,学习记录一、SpringBoot二、controller控制层三、entity实体类四、mapper持久层五、service业务逻辑层总结Java成长中,学习记录小白记录学习springboot项目的过程,后续内容在专栏持续更新一、SpringBootspringboot可分为4层1.controller控制层2.entity实体类3.mapper持久层4.service业
- [spring6: AspectJAdvisorFactory & AspectJProxyFactory]-源码解析
idolyXyz
spring6-源码阅读spring
推荐阅读:[spring6:AspectMetadata&AspectInstanceFactory]-源码解析[spring6:TargetSource&AopProxyFactory&AdvisorChainFactory&ProxyFactory]-源码分析AspectJAdvisorFactoryAspectJAdvisorFactory接口用于从使用AspectJ注解语法的类中创建Spr
- 【RK3576】【Android14】Android平台构建
Evan_ZGYF丶
androidRK3576Android14驱动开发
获取更多相关的【RK3576】【Android14】驱动开发,可收藏系列博文,持续更新中:【RK3576】Android14驱动开发实战指南目录简介Android构建设置构建环境lunch选择平台配置关联UBOOT配置关联DTS配置简介Android14源码下载后,通过如下命令编译SDK:sourcebuild/envsetup.shlunchrk3576_u-userdebug./build.s
- 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