- springboot 启动原理
chikoucha6215
javaruntime测试
我们开发任何一个SpringBoot项目,都会用到如下的启动类@SpringBootApplicationpublicclassApplication{publicstaticvoidmain(String[]args){SpringApplication.run(Application.class,args);}}从上面代码可以看出,Annotation定义(@SpringBootApplica
- 打包springcloud微服务时,终端执行java -jar报错,没有主清单属性
ZL_do_it
jarjavamaven
打包springcloud微服务时,终端执行java-jar报错,没有主清单属性使用SpringBoot微服务搭建框架,在eclipse和Idea下能正常运行,但是在打成jar包部署或者直接使用java-jar命令的时候,提示了xxxxxx.jar中没有主清单属性:C:\Users\zl\.m2\repository\com\kkb\eureka-server\1.0-SNAPSHOT>java-
- 【微服务33】分布式事务Seata源码解析一:在IDEA中启动Seata Server
秃秃爱健身
#分布式事务Seata入门到精通微服务分布式intellij-idea
文章目录一、前言二、IDEA中运行SeataServer1、把源码从Github中荡下来坑:一定要从mavenmodules中移除序列化的包SeataServer使用到的DB2、调整seata-server的配置seata-server3、运行seata-server三、总结和后续一、前言至此,博主介绍了一些Seata环境搭建的常见坑、Seata的两种案例(SpringCloud集成Seata、S
- 【SpringBoot】SpringBoot:实现文件上传和下载功能
E绵绵
Everythingspringboot后端java
文章目录引言项目初始化添加依赖配置文件存储位置实现文件上传功能创建文件上传控制器创建上传页面实现文件下载功能创建文件下载控制器安全性和最佳实践文件大小限制文件类型验证文件名和路径验证文件下载时的安全性测试与部署示例:编写单元测试部署结论引言文件上传和下载是Web应用程序中常见的需求。在现代应用中,用户需要上传各种类型的文件,如图片、文档、视频等,或者下载生成的报告和数据文件。SpringBoot通
- 【SpringBoot 框架】- SpringBoot 配置文件
2401_84408404
程序员springbootjavaspring
【SpringBoot框架】-入门——环境搭建、工程热部署、idea快捷创建SpringBoot项目【SpringBoot框架】-SpringBoot原理分析【SpringBoot框架】-SpringBoot配置文件【SpringBoot框架】-SpringBoot整合Mybatis、Junit、Redis目录一、SpringBoot配置文件类型1.application.properties配置
- springboot接入deepseek深度求索 java
笑发财了1
javaspringboot服务器
以下是在springboot中接入aideepseek的过程。官网并没有java的示例。1.创建APIkeydeepseekAPIkeys点击创建APIkey,把创建的key值复制下来,以后就不能再查看了,只能重新创建。2.封装询问deepseek的工具方法添加key值和询问路径。API_KEY为你创建的key值。privatestaticfinalStringAPI_URL="https://a
- SpringBoot配置文件高级用法实战
码到三十五
Spring全家桶springboot人工智能机器学习AIGC
❃博主首页:「码到三十五」,同名公众号:「码到三十五」,wx号:「liwu0213」☠博主专栏:♝博主的话:搬的每块砖,皆为峰峦之基;公众号搜索「码到三十五」关注这个爱发技术干货的coder,一起筑基SpringBoot配置文件的优先级是一个重要的概念,它决定了当存在多个配置文件时,哪个配置文件中的配置将被优先采用。文章目录一、总体优先级顺序二、应用配置文件的详细优先级三、文件类型优先级四、特定环
- Spring Clound + Spring Clound Alibaba 全家桶
更容易记住我
SpringCloundjavaspringcloudalibaba
官方网站:https://spring.io/projects/spring-cloud/一、服务注册中心Eureka服务注册中心EurekaZookeeperZookeeperConsul服务注册中心ConsulNacos(推荐)服务注册中心Nacos二、服务调用1Ribbon+LoadBalancer服务调用Ribbon三、服务调用2OpenFegin服务调用OpenFeign四、服务降级Hy
- Java程序设计(二十四):基于SSM框架的基于的快递代取系统的设计与实现
人工智能_SYBH
2025年java程序设计javapython开发语言springbootspring后端
引言随着电子商务的发展,越来越多的高校学生通过网购获取日常所需物品,快递服务也逐渐成为大学生活中不可或缺的一部分。然而,繁忙的学习与生活让部分学生无法及时领取自己的快递,因此基于高校校园的快递代取服务应运而生。本文将详细介绍如何基于SSM(Spring、SpringMVC、MyBatis)技术栈设计并实现一个高校快递代取系统,解决高校学生快递代取问题。通过该系统,管理员、代取人和发布者三类用户可以
- springboot+vue项目实战2024第三集修改用户信息
javaspringboot
1.获取用户信息@GetMapping("/userInfo")//@RequestHeader(name="Authorization")StringtokenpublicResultuserInfo(){//Mapmap=JwtUtil.parseToken(token);Mapmap=ThreadLocalUtil.get();Stringusername=(String)map.get("
- Alibaba Spring Cloud 十三 Nacos,Gateway,Nginx 部署架构与负载均衡方案
空灵宫(Ethereal Palace)
AlibabaSpringCloudspringcloudgatewaynginx
在微服务体系中,Nacos主要承担“服务注册与发现、配置中心”的职能,Gateway(如SpringCloudGateway)通常负责“路由转发、过滤、安全鉴权、灰度流量控制”等功能,而Nginx则常被用作“边缘反向代理”或“统一流量入口”。在实际项目里,这三者经常组合使用,以实现高扩展、高可用、可观测且灵活的流量调度。一、Nacos+Gateway+Nginx的常见部署架构一般来说,可以把Ngi
- 大模型应用编排工具Dify之自定义工具
Daphnis_z
LLMJava开发chatgptspringbootaijava
1.前言dify中提供了自定义工具的能力,工具十分容易复用,在需要的流程编排中进行引用即可。根据笔者的经验和理解,自定义工具有点类似微服务,可以把通用的能力封装到工具里面。同时,工具还提供了测试和鉴权等功能,对开发者比较友好。环境信息:dify-0.8.3,spring-boot-2.7.6实现效果如下:2.开发后台接口这里使用spring-boot快速开发一个post接口作为演示,代码如下:@R
- 基于Springboot用axiospost请求接收字符串参数为null的解决方案
呀243
springboot后端java
问题今天在用前端post请求后端时发现,由于是以Json对象的形式传输的,后端用两个字符串形参无法获取到对应的参数值前端代码如下:axios.post('http://localhost:8083/test/postParams',{a:'1',b:'2'},{'Content-Type':'application/json'}).then(response=>{console.log(respo
- 【Java】SpringBoot 全局异常捕获不到Filter中的异常的解决办法
PlanOne_A
Javajavaspringbootspring
情景:当我想用一个过滤器(filter)来对所有请求进行jwt校验,当校验不通过时我想抛出异常,然后再通过@ExceptionHandler来全局捕获该异常,发现SpringBoot全局异常捕获不了filter中抛出的异常原因:因为filter是JavaWeb提供的技术,是在所有请求之前,spring是捕获不到filter抛出的异常的;解决:要想SpringBoot全局异常捕获到该filter抛出
- Spring Boot 单元测试
leisurelyZ
springbootjunit
在软件开发过程中,单元测试是确保代码质量和稳定性的重要环节。对于使用SpringBoot框架构建的应用程序,编写单元测试同样重要。本文将介绍如何在SpringBoot中编写单元测试,帮助你更好地进行软件开发和维护。1.为什么需要单元测试?单元测试的主要目的是验证代码的最小可测试部分是否按预期工作。这不仅有助于发现和修复错误,还能提高代码的可维护性和可读性。对于SpringBoot应用,单元测试可以
- 如何控制主从架构的数据一致性?
架构随笔录
分布式存储大数据架构数据库java后端中间件
胡弦,视频号2023年度优秀创作者,互联网大厂P8技术专家,SpringCloudAlibaba微服务架构实战派(上下册)和RocketMQ消息中间件实战派(上下册)的作者,资深架构师,技术负责人,极客时间训练营讲师,四维口袋KVP最具价值技术专家,技术领域专家团成员,2021电子工业出版社年度优秀作者,获得2023电子工业出版技术成长领路人称号,荣获2024年电子工业出版社博文视点20周年荣誉专
- springboot+vue项目实战2024
1.创建项目@SpringBootApplicationpublicclassApp{publicstaticvoidmain(String[]args){SpringApplication.run(App.class,args);}}2.引入依赖4.0.0org.springframework.bootspring-boot-starter-parent3.1.3com.ivan.cnshizh
- SpringBoot整合Easy-Es
今天的接口写完了吗?
elasticsearchspringbootelasticsearch后端
目录一、什么是Easy-Es二、使用场景2.1检索类服务2.2问答类服务(本质上也是检索类)2.3地图类服务三、springboot整合Easy-Es3.1pom.xml3.2配置文件3.3创建、删除、查询索引3.4创建一个实体类3.5新建Mapper类,类似Mybatis的dao3.6启动类扫描dao四、代码展示五、原生Api调用5.1查看索引mapping关系5.2查看某个文档,具体字段的分词
- 【橘子微服务】spring cloud function的编程模型
玄衣如雪
微服务springcloud架构
简介在我们初探了saga的分布式事务之后,我们后面会基于springcloudfunction(简称:scf)和springcloudstream(scs)实现一下Choreography模式的saga。所以在此之前我们需要了解一下这两个组件的知识。首先我们来看scf的一些概念。一、简单使用在进入概念之前,我们先来看看这玩意咋用,然后我们再铺开讲设计和知识,不然上来一堆废话不知道说的是谁。简单来创
- Spring Boot集成RocketMQ实现分布式事务
missterzy
分布式与微服务消息队列(MQ)java-rocketmqspringbootrocketmq
RocketMQ是由阿里巴巴集团开发的一款高性能、高可靠、分布式的开源消息中间件,它在2012年对外开源,并于2016年捐赠给Apache软件基金会,随后在2017年成为了Apache的顶级项目。RocketMQ的设计旨在满足互联网业务场景中的海量消息传递需求,尤其擅长处理高并发、大数据量以及实时计算场景。主要特点和功能包括:1.分布式架构:RocketMQ采用了分布式部署架构,允许生产者、消费者
- maven中使用jdbc
理想二旬不止(上班了,好像没有理想了)
#java#jdbcjava后端
用到的有数据库连接池、JDBCTemplate一、首先导入jar包mysqlmysql-connector-java8.0.25compilecom.alibabadruid1.0.9org.springframeworkspring-core4.1.2.RELEASEcompileorg.springframeworkspring-jdbc4.1.2.RELEASEcompileorg.spri
- spring cloud之gateway和JWT回顾
晨的挥霍
springcloudgatewayspring
最开始学习时,没怎么用,只知道它是网关,当时因为经常使用Nginx做网关,慢慢就淡忘了,最近为了代码整合性,就使用它,非常棒。关于JWT以前也使用,后面调用基本以第三方接口开发的比较多,当时自己的服务,添加自己的规则生成token整合gateway网关1、pomorg.springframework.bootspring-boot-starter-actuatororg.springframewo
- Spring BeanWrapper的嵌套属性操作技巧
t0_54coder
springjava后端个人开发
在Spring框架中,BeanWrapper是一个强大的工具,用于操作JavaBean的属性。它不仅可以设置简单的属性值,还能处理嵌套属性、集合元素等复杂场景。本文将通过几个实例,详细介绍如何使用BeanWrapper来操作嵌套的Bean实例。一、嵌套Bean的设置假设我们有两个类:Employee和Department。Employee包含一个Department类型的属性。我们可以通过Bean
- Bootstrap Blazor 中 Table 组件 的 OnColumnCreating 事件:统一设置 列 的 IsVisibleWhenAdd、IsVisibleWhenEdit 参数
cqths
#BlazorWebAppwebapp.netc#
当实体中属性较多时,在实体定义中对每一个属性设置相同参数比较麻烦,要统一修改也麻烦,此时可以考虑在OnColumnCreating事件中使用代码统一设置。//////在Table组件的OnColumnCreating事件中使用:设置AddColumnNames中列的IsVisibleWhenEdit=true,其余列IsVisibleWhenEdit=false。//////OnColumnCre
- Bootstrap Blazor 组件库 Table 组件 OnQueryAsync 查询 EF Core 键集分页、偏移分页 使用备忘
cqths
EFCore#BlazorWebAppbootstrap.netwebapp
privatelonglastId=0,firstId=0;privatelonglastPageIndex=0;privateintlastPageItems=0;privateasyncTask>OnQueryAsync(QueryPageOptionsoptions){IEnumerableitems;//不是翻页:刷新、改变每页条数、过虑,此时,清除跟踪(清除缓存)if(!options.
- 【SpringBoot 】dynamic 动态数据源配置连接池(转)
binqian
springspringboot数据库oracle
前言在复杂的业务场景中,我们经常需要使用多数据源来满足不同的数据访问需求。DynamicDatasource为我们提供了一种灵活切换不同数据源的解决方案。但是多数据源配置连接池以及说明文档都是收费的。本篇博文将详细介绍如何配置和优化DynamicDatasource的连接池,包括Druid和HikariCP,以及如何根据项目需求进行选择。连接池配置连接池是数据库连接管理的核心组件,它可以显著提高数
- [Windows][Python] GUI设计
BennyCP
[跨平台语言]Python
MakeaGUIonWindowsXSetuppythonInstallpipcurlhttps://bootstrap.pypa.io/get-pip.py-oget-pip.pypythonget-pip.pyInstallPyinstallerpipinstallPyInstallerWriteaGUIcodeimportwxapp=wx.App()win=wx.Frame(None,tit
- 【Java】已解决:jorg.springframework.beans.factory.BeanDefinitionStoreException
HoRain云小助手
java开发语言
HoRain云小助手:个人主页个人专栏:《Linux系列教程》《c语言教程》⛺️生活的理想,就是为了理想的生活!⛳️推荐前些天发现了一个超棒的服务器购买网站,性价比超高,大内存超划算!忍不住分享一下给大家。点击跳转到网站。专栏介绍专栏名称专栏介绍《C语言》本专栏主要撰写C干货内容和编程技巧,让大家从底层了解C,把更多的知识由抽象到简单通俗易懂。《网络协议》本专栏主要是注重从底层来给大家一步步剖析网
- .NET 9.0 的 Blazor Web App 项目、Bootstrap Blazor 组件库、自定义日志 TLog 使用备忘
cqths
EFCore#BlazorWebApp.netwebappc#数据库
一、设计目标:通用、容易修改、使用简单,所有代码保存在一个文件中,方便移植到其他项目使用。注:示例使用BootstrapBlazor组件库和EFCore、Sqlite,需要先使用Nuget包管理器添加对应的包。namespaceBlazorWebAppNet9Shared.Services;usingMicrosoft.EntityFrameworkCore;usingMicrosoft.Exte
- redis+spring面试题
javaspringredis
redis使用场景缓存热点数据分布式锁存储token存储短信验证码计数器全局唯一数排行榜限流购物车关注粉丝缓存失效缓存穿透缓存空结果布龙过滤器缓存击穿全局锁设置永不过期缓存雪崩设置高可用集群设置不同的过期时间本地二级缓存,限流加降级数据一致性延时双删集群最大部署多少个主节点16384string的存储内存多大512mlist/set/hash/zset最多可以放多少个体元素2^32-1/42亿re
- 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