- 博客网站制作教程
2401_85194651
javamaven
首先就是技术框架:后端:Java+SpringBoot数据库:MySQL前端:Vue.js数据库连接:JPA(JavaPersistenceAPI)1.项目结构blog-app/├──backend/│├──src/main/java/com/example/blogapp/││├──BlogApplication.java││├──config/│││└──DatabaseConfig.java
- 数据库连接池
幻影翔
连接池的意义作用:连接池是将已经创建好的连接保存在池中,当有请求来时,直接使用已经创建好的连接对数据库进行访问。这样省略了创建连接和销毁连接的过程。这样性能上得到了提高。连接池放了N个Connection对象,本质上放在内存当中,在内存中划出一块缓存对象,应用程序每次从池里获得Connection对象,而不是直接从数据里获得,这样不占用服务器的内存资源。两种优秀的连接池技术都要实现接口DataSo
- SQLite的入门级项目学习记录(二)
深蓝海拓
SQLite学习笔记sqlite学习数据库
再补充一些基础知识:并行操作的问题1、可以多游标同时运行SQLite,对于同一个连接sqlite3.connect(db_file),可以同时创建多个游标,每个游标都是独立的,可以执行各自的SQL命令序列。importsqlite3#创建数据库连接conn=sqlite3.connect('example.db')#创建第一个游标cursor1=conn.cursor()cursor1.execu
- Java应用的数据库连接池连接池性能测试
微赚淘客机器人开发者联盟@聚娃科技
java数据库开发语言
Java应用的数据库连接池连接池性能测试大家好,我是微赚淘客返利系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!数据库连接池的性能测试是确保Java应用能够高效运行的关键步骤。性能测试可以帮助我们评估连接池在高并发条件下的表现,以及识别可能的性能瓶颈。本文将介绍如何对Java应用中的数据库连接池进行性能测试。性能测试的重要性性能测试对于数据库连接池至关重要,因为它可以:评估性能:确定连接
- .Net项目引入ORM SqlSugar框架及简单使用
Herman97
C#SQLSQLSugarORM
SqlSugar的优点就不在这里重复了。一,Nuget安装SqlSugar是.NET版本,SqlSugarCore是.NETCORE版本,根据你的项目选择你的引用dll二,简单使用1.建立数据库连接publicSqlSugarClientGesmartDb(){SqlSugarClientDb=newSqlSugarClient(newConnectionConfig(){ConnectionSt
- Excel数据导入MySQL数据库的完整指南
Aries263
数据库excelmysql
在日常的数据处理工作中,经常需要将Excel中的数据导入到MySQL数据库中,以便进行进一步的数据分析和管理。本文将详细介绍如何将Excel数据导入MySQL数据库的完整步骤,包括数据准备、数据库连接、数据导入以及验证等关键步骤。一、准备工作1.准备Excel数据首先,确保你的Excel表格中的数据格式正确。日期应使用YYYY-MM-DD格式,数字应使用数值格式,文本应使用文本格式。这有助于避免在
- Python 多线程访问数据库正确使用dbutils PooledDB数据库连接池
weixin_41934979
数据库pythonDBUtilsPooledDB
1.安装DBUtilspipinstallDBUtils2.db_helper.py的代码如下importpymysqlfromdbutils.pooled_dbimportPooledDBfromconfigimportconfigclassDBHelper:def__init__(self):""":parammincached:连接池中空闲连接的初始数量:parammaxcached:连接池
- java正常_Java正常关闭资源的方式
这是eno
java正常
在实际开发中,经常需要在程序中打开一些物理资源,如数据库连接、网络连接、磁盘文件等,打开这些物理资源之后必须显式关闭,否则将会引起资源泄漏。JVM的垃圾回收机制不会回收这些资源,垃圾回收机制属于Java内存管理的一部分,它只是负责回收堆内存中分配出来的内存,至于程序中打开的物理资源,垃圾回收机制是无能为力的。为了正常关闭程序中打开的物理资源,应该使用finally块来保证回收。下面程序示范了常见的
- Java 学习中使用文件、网络连接等资源时,未正确关闭资源,导致资源泄漏应该怎么办?
Itmastergo
java学习数据库
在Java编程中,处理文件、网络连接、数据库连接等资源时,如果没有正确关闭资源,就会发生资源泄漏。资源泄漏会导致系统性能下降、内存占用增加,甚至可能导致程序崩溃,特别是在高负载的系统中。一、什么是资源泄漏?资源泄漏(ResourceLeak)是指程序在使用完某些资源(如文件、数据库连接、网络连接等)后,未能正确地释放这些资源,导致资源在不被使用的情况下依然占用系统的资源。这些未释放的资源会消耗内存
- JDBC使用
晚睡早起₍˄·͈༝·͈˄*₎◞ ̑̑
javajava
7.2创建JDBC应用7.2.1创建JDBC应用程序的步骤使用JDBC操作数据库中的数据包括6个基本操作步骤:(1)载入JDBC驱动程序:首先要在应用程序中加载驱动程序driver,使用Class.forName()方法加载特定的驱动程序,每种数据库管理系统的驱动程序不同,由数据库厂商提供。(2)定义连接URL,建立数据库连接对象:通过DriverManager类的getConnection()方
- JDBC理解
迷糊银儿
DBC:databaseconnection这是数据库连接,JDBC是java编程语言支持的数据库连接。SUM公司提供了一些接口供各个数据库厂商实现,因为很多数据库的操作都是共用的,所以以接口的方式提供出来,由个大厂商实现。如在eclipse中引入的java-mysql-connector的jar包就实现了这些接口。数据库驱动:驱动就是两个设备之间沟通的桥梁,所以在使用数据库之前必须进行“加载驱动
- 关于前段与后端数据库的连接
ahzhrr3338
数据库后端前端ViewUI
上一周,本小组的前段队伍完成了网页的psd和页面的基本设计,这里就不放出网页图片的示例了。下一步我们将利用DreamweaverCS4中ODBC连接数据库的方法,创建数据库连接。通过书籍了解到一个完整的ODBC由一下四个部件组成:1.应用程序(Application):该程序位于程序面板ODBC内,其主要任务是管理安装的ODBC驱动程序和管理数据源。2.驱动程序管理器(DriverManager)
- python neo4j_python操作neo4j
weixin_39732640
pythonneo4j
原标题:python操作neo4j1.首先需要安装python版的neo4jpipinstallpy2neo2.代码测试frompy2neoimportGraph,Node,Relationship,NodeMatcher#建立数据库连接test_graph=Graph("http://xxx.xxx.xxx.xx:7474",username="neo4j",password="root")#通
- Tableau Prep 2018.3.1 用 PDF 连接器准备数据!
阿达_优阅达
数据准备的过程可能会很复杂,所以,TableauPrep应运而生!通过为你提供简化流程的工具,使数据准备更加简单便捷!近日,在TableauPrep2018.3.1推出了新功能:从现在开始,你可以对Flow中的任何步骤应用任何操作,并跟踪路径中的更改。此外,还支持用于数据库连接的通配符联合选项和用于PDF文件的全新连接器,为你提供更大的灵活性。『更改默认存储库位置』默认情况下,在安装Tableau
- 【.NET全栈】ASP.NET开发Web应用——ADO.NET数据访问技术
JosieBook
#.NET全栈.netasp.net前端
文章目录前言一、ADO.NET基础1、ADO.NET架构2、ADO.NET数据提供者二、连接数据库1、SqlConnection数据库连接类2、使用SqlConnectionStringBuilder连接字符串3、关闭和释放连接4、在web.config配置文件中保存连接字符串5、连接池技术三、与数据库交互1、使用SqlCommand操作数据库2、为SqlCommand传递参数3、使用SqlCom
- 牛客错题集3,前端开发结构
卖家导航
程序员oracle数据库
在Thread中有一个成员变量ThreadLocals,该变量的类型是ThreadLocalMap,也就是一个Map,它的键是threadLocal,值为就是变量的副本。通过ThreadLocal的get()方法可以获取该线程变量的本地副本,在get方法之前要先set,否则就要重写initialValue()方法。ThreadLocal的使用场景:数据库连接:在多线程中,如果使用懒汉式的单例模式创
- SonarQube扫码Android代码
Mac Zhu
android
1.安装SonarQube服务器(也可以配置公司的服务器地址)首先,你需要在本地或服务器上安装并运行SonarQube服务器:下载SonarQube:从SonarQube官方网站下载适合你操作系统的版本。解压并配置SonarQube:按照官方文档中的说明,配置sonar.properties文件,设置数据库连接等。启动SonarQube:在命令行中运行./bin//sonar.shstart(适用
- easyCode 插件使用
天珩
今日所得轮子javamysqlmybatisintellijidea
easyCode插件介绍easyCode插件能够生成mapper.xml、mapper.java、service、serviceImpl、controller文件,避免手写;而且对比mybatisGenerator可以自动的把数据库的注释生成为字段的注释,可以方便的通过修改模板的方式控制生成的文件使用步骤一、使用idea连接上数据库连接有问题的,参考文章https://www.cnblogs.co
- Springboot配置文件中账号密码等敏感信息的加解密
乌托邦的逃亡者
软件开发springspringbootjava后端
说明:使用过SpringBoot配置文件的朋友都知道,资源文件中的内容通常情况下是明文显示,安全性比较低。打开application.properties或application.yml,比如MySQL登录密码,Redis登录密码以及第三方的密钥等等一览无余。这里介绍一个加解密组件jasypt,用以提高配置文件中敏感配置数据的安全性。本文以数据库连接URL、用户名和数据库密码加密为例。一,引入Ma
- druid 连接gbase8s数据库问题记录
gbase_lmax
数据库java
在druid1.2.16以及之前版本中,可以允许dbType=null,不影响数据库连接使用在druid1.2.17以及之后版本中,已经不允许dbType=null代码差异如下1.2.16if(connectTimeout>0){if(isMySql){if(connectTimeoutStr==null){connectTimeoutStr=Integer.toString(connectTim
- Tinywebserver数据库连接池源码分析day0
winsons_lu
数据库oracle
Tinywebserver的第一天源自github:GitHub-qinguoyi/TinyWebServer::fire:Linux下C++轻量级WebServer服务器这是项目的数据库连接池一共有两个文件,.h/.cpp先看md文档数据库连接池*单例模式,保证唯一*list实现连接池*连接池为静态大小*互斥锁实现线程安全直接看sql_connection_pool.cpp,在代码里看看具体是怎
- 【JDBC教科书】阶段式JDBC数据库连接神操作总结
何学长在奔跑
JDBC数据库JDBC程序人生经验分享
文章目录一、引言1.1如何操作数据1.2实际开发中,会采用客户端操作数据库吗?二、JDBC(JavaDataBaseConnectivity)2.1什么是JDBC?2.2JDBC核心思想2.2.1MySQL数据库驱动2.2.2JDBCAPI2.3环境搭建三、JDBC开发步骤【`重点`】3.1注册驱动3.2连接数据库3.3获取发送SQL的对象3.4执行SQL语句3.5处理结果3.6释放资源3.7综合
- cx_Oracle.DatabaseError: DPI-1047: Cannot locate a 64-bit Oracle Client library
虚幻如影
pythonoracle数据库python
pipinstallcx_Oracleimportcx_Oracle再导入该模块进行数据库连接的时候报错这个错误表明您的Python环境是64位的,但是您尝试使用的Oracle客户端库(oci.dll)是32位的根据官方给出的文档进行查看cx_Oracle8Installation—cx_Oracle8.3.0documentationhttps://cx-oracle.readthedocs.i
- django 不用自带的mysql_Python MySQL 数据库连接 (三) mysqlclient django默认使用
许菲比
django不用自带的mysql
Mysql驱动介绍MySQL-python(弃用):也就是MySQLdb,是对C语言操作MySQL数据库的一个简单封装。遵循了PythonDBAPIv2。但是只支持Python2,目前还不支持Python3。mysqlclient(安装难,但django官方默认):是MySQL-python的另外一个分支,支持Python3并且修复了一些bug。pymysql:纯Python实现的一个驱动,因为是
- 常见的设计模式
学Java的skyyyyyyyy
设计模式java单例模式
设计模式是面向对象设计中解决常见问题的一套最佳实践,它们为开发者提供了通用的解决方案。1.单例模式(SingletonPattern)定义:确保一个类只有一个实例,并提供一个全局访问点。应用场景:需要控制实例数量的类,如数据库连接池、线程池等。需要共享的全局状态或资源的类。实现方式:饿汉式:在类加载时就创建实例,线程安全但可能会造成资源浪费。懒汉式:在第一次调用时创建实例,需考虑线程安全问题。双重
- JDBC介绍及案例
都没了
java
一、JDBC概述概念:JavaDataBaseConnectivityJava数据库连接,Java语言操作数据库JDBC本质:官方(sun公司)定义的一套操作所有关系型数据库的规则,即接口。各个数据库厂商去实现这套接口,提供数据库驱动jar包。我们可以使用这套接口(JDBC)编程,真正执行的代码是驱动jar包中的实现类。快速入门:步骤:①导入驱动jar包mysql-connector-java-5
- 关于使用Easyswoole 自定义MYSQL 连接池,一段时间后,操作接口,报数据库连接错误,然后在请求接口,就正常了
树下水月
数据库mysqloracle
关于使用Easyswoole自定义MYSQL连接池,一段时间后,操作接口,报数据库连接错误,然后在请求接口,就正常了首先我们来看看对应的easyswoole数据库注册Config/Mysq.php$mysql['mysql']=[];$mysql['mysql']['default']=['name'=>'default','host'=>'127.0.0.1','port'=>3306,'use
- java源码学习-Mybatis(2)与数据库建立连接
子波zibo
源码学习java基础mybatisjavajdbc
Mybatis与数据库建立连接jdbc执行流程图Mybatis初始化Hikari连接池的启动Mybatis获取数据库连接后记前文:Mybatis加载mapper流程由于mybatis是在jdbc的基础上进行封装的,所以jdbc执行流程获取连接->创建statements->resultSet这些步骤mybatis都是存在的,本篇学习一下Mybatis获取Connection的步骤jdbc执行流程图
- Node.js sqlite3的db.close方法:正确关闭数据库连接
软考鸭
sqlitenodejs帮助文档数据库sqlitesql
在Node.js环境中,sqlite3是一个广受欢迎的轻量级数据库库,它为开发者提供了一个简洁的API来与SQLite数据库进行交互。当完成数据库操作后,正确关闭数据库连接是一个重要的步骤,以确保资源得到释放并避免潜在的内存泄漏。sqlite3库提供了db.close方法来实现这一功能。本文将深入解析db.close方法,包括其API函数定义和相应的代码示例解释。一、db.close方法简介db.
- JAVA多线程基础篇 8、线程隔离与ThreadLocal
悟空学编程
JAVA多线程基础篇java开发语言后端
文章目录1.ThreadLocal的使用示例2.ThreadLocal的使用场景2.1线程隔离的数据库连接与事务2.2线程隔离的session会话3.ThreadLocal原理4.ThreadLocal与内存泄露4.1Java语言将Entry设计为弱引用4.2记得手动remove总结在多线程并发环境中,要保证线程并发安全总体有2类方法。使用锁,在访问资源时是互斥的、原子性的。这个锁可以是Synch
- 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