- Servlet 和 Spring MVC:区别与联系
qq_44199605
servletspringmvc
前言在JavaWeb开发中,Servlet和SpringMVC是两个重要的技术。Servlet是JavaWeb的基础组件,而SpringMVC是一个高级Web框架,建立在Servlet的基础之上,提供了强大的功能和易用性。这篇文章将从定义、原理、功能对比、应用场景等多个方面,详细介绍Servlet和SpringMVC,并解析它们的区别与联系。一、什么是Servlet1.定义Servlet是Java
- 蚁群算法 (Ant Colony Optimization) 算法详解及案例分析
闲人编程
控制与系统优化算法22讲算法蚂蚁觅食行为组合优化旅行商问题车辆路径问题ACO蚁群算法
蚁群算法(AntColonyOptimization)算法详解及案例分析目录蚁群算法(AntColonyOptimization)算法详解及案例分析1.引言2.蚁群算法(ACO)算法原理2.1蚂蚁觅食行为2.2算法步骤2.3数学公式3.蚁群算法的优势与局限性3.1优势3.2局限性4.案例分析4.1案例1:旅行商问题(TSP)4.1.1问题描述4.1.2代码实现4.1.3流程图4.1.4优化曲线4.
- a. UFS write booster buffer(技术 1)
>Andre<
UFS4.0解读网络服务器运维
1.概述TLCNAND的写入性能明显低于SLCNAND,因为TLCbits需要更多的编程步骤,并且具有更高的纠错概率。为了提高写入性能,部分TLCNAND(正常存储器)被配置为SLCNAND,并暂时或永久地用作写入缓冲区。使用SLCNAND作为WriteBoosterBuffer,可以以更低的延迟处理写请求,并提高整体写性能。分配给用户区域的TLCNAND的某些部分被分配为WriteBooster
- 7. UFS 传输协议(UTP)层
>Andre<
UFS4.0解读嵌入式硬件
10.1概述SCSI架构模型[SAM]被用作UTP的通用架构模型,以及用于任务管理的SAM任务管理功能。任务通常是SCSI命令或服务请求。虽然该模型使用SCSI命令集作为命令集,但不一定必须专门使用SCSI命令。SAM架构是一种客户端-服务器模型,或者更常见的是请求-响应架构。客户端被称为发起者设备,服务器被称为目标设备。发起者设备和目标设备被映射到UFS物理网络设备中。发起者设备向目标设备发出命
- 潇洒郎: Python获取设备已连接的所有WIFi账号和密码
潇洒郎
Python学习pythonWiFi账号和密码
Python获取设备已连接的所有WIFi账号和密码如果你忘记了密码,可以使用这个脚本获取,不要使用非法用途哦!#coding=utf8#User:Administrator#Date:2024/11/5#Time:13:02importsubprocessimportjsondefsub_cmd(cmd):res=subprocess.getoutput(cmd)returnresdefget_a
- 【分布式WebSocket - 3】SpringBoot集成STOMP协议完成私聊、群聊
叁滴水
websocketwebsocketstomp新星计划
文章目录一、为什么需要STOMP?二、STOMP详解三、SpringBoot集成STOMP代码示例3.1、功能示例3.2、架构图3.3、服务端代码3.4、h5代码一、为什么需要STOMP?WebSocket协议是一种相当低级的协议。它定义了如何将字节流转换为帧。帧可以包含文本或二进制消息。由于消息本身不提供有关如何路由或处理它的任何其他信息,因此很难在不编写其他代码的情况下实现更复杂的应用程序。幸
- java 替换list中值的方法分享
qq_25073223
java
转自:Java如何更换List指定位置上的元素呢?list集合简介:1.List接口继承Collection接口,实现了List接口的类称为List集合。2.在List集合中允许出现重复的元素,所有元素以线性方式进行存储,可以通过索引来访问集合中指定的元素。List集合的元素的存储顺序和取出顺序一致。3.List不但继承了Collection接口中的全部方法,还增加了一些根据元素位置索引来操作集合
- java集合与队列详解
羽落风起
Java队列java集合
说明java集合是jdk自带java核心功能,它主要用来存储大量同类型数据快速高效稳定的查找、添加、替换,主要分为List、Set、Map、Queue,前两个继承Collection接口,Map为独立接口。分类Collection接口List接口,有序可重复。分类ArrayList:底层是数组,默认大小10每次增加一半,线程不安全,效率高,查询快,增删慢Vector:底层数组,查询快,增删慢,线程
- MATLAB代码实现了一个结构静力倒塌分析的功能
max500600
MATLABmatlab算法开发语言
functionstatic_collapse_analysis()clear;clc;closeall;params=initialize_parameters();delta=0;delta_increment=0.5;min_increment=0.1;n=1980;tolerance=1e-6;max_iterations=50;results=[];W_in_prev=0;p_prev=
- 第19篇:python高级编程进阶:使用Flask进行Web开发
猿享天开
python从入门到精通python开发语言
第19篇:python高级编程进阶:使用Flask进行Web开发内容简介在第18篇文章中,我们介绍了Web开发的基础知识,并使用Flask框架构建了一个简单的Web应用。本篇文章将深入探讨Flask的高级功能,涵盖模板引擎(Jinja2)、表单处理、数据库集成以及用户认证等主题。通过系统的讲解和实战案例,您将掌握构建功能更为丰富和复杂的Web应用所需的技能。目录Flask的深入使用Flask扩展蓝
- java中集合类和队列
夜吟
找工作java集合类队列
java中集合类和队列1集合类collection下面的list,set,queuelist的主要实现类:ArrayList底层采用数组LinkedList底层采用链表set的主要实现类:HashSet采用hash算法,不能重复,无限,不保证FIFOTreeSet采用BST树,有序queue的主要实现类:LinkedList底层采用链表,FIFO,运行重复LinkedBlockingQueue容量
- 第18篇:python高级编程进阶:Web开发基础详解
猿享天开
python从入门到精通python开发语言
第18篇:Web开发基础内容简介本篇文章将为您介绍Web开发基础的核心概念和实用技能。您将了解Web开发的基本概念和流程,掌握HTTP协议的基础知识,学习如何使用Flask框架构建简单的Web应用,并深入理解路由与视图函数的工作原理。通过丰富的代码示例和实战案例,您将能够快速入门Web开发,搭建自己的第一个Web应用。目录Web开发概述什么是Web开发前端与后端开发Web开发的技术栈HTTP协议基
- TypeScript中的可选参数与默认参数
t0_54manong
typescriptubuntujavascript个人开发
在JavaScript中,函数的参数默认都是可选的,即使在定义函数时没有明确指出。而在TypeScript中,为了保证类型安全,函数的参数默认是必需的。不过,TypeScript也提供了可选参数和默认参数的功能,这使得函数的使用更加灵活。本文将详细介绍TypeScript中可选参数和默认参数的使用方法,并通过实例进行说明。可选参数在TypeScript中,可以通过在参数名后添加?来声明一个可选参数
- JPA与存储过程的完美结合
t0_54manong
oracle数据库个人开发
在现代的Java开发中,JPA(JavaPersistenceAPI)已经成为ORM(对象关系映射)的首选工具之一。它不仅简化了数据库操作,还提供了强大的功能来与数据库进行交互。今天,我们将探讨如何通过@NamedStoredProcedureQuery注解在JPA中声明和使用数据库存储过程,以实现高效的数据库操作。一、@NamedStoredProcedureQuery注解的使用@NamedSt
- 算法随笔_19: 数组中的最长山脉
程序趣谈
算法
上一篇:算法随笔_18:划分字母区间-CSDN博客======================题目描述如下:把符合下列属性的数组arr称为山脉数组:arr.length>=3存在下标i(0arr[i+1]>...>arr[arr.length-1]给出一个整数数组arr,返回最长山脉子数组的长度。如果不存在山脉子数组,返回0。示例1:输入:arr=[2,1,4,7,3,2,5]输出:5解释:最长的
- Avada 使用教程:从基础到进阶的全面指南
专业WP网站开发-Joyous
Wordpressphp
概述在WordPress世界中,选择一个合适的主题对网站的成功至关重要。Avada是其中最受欢迎的选项之一,不仅因为其销售量,更因其功能强大、定制性强和用户友好性。无论你是初学者还是专业的网页开发者,Avada都提供了你所需的工具来构建你心中的网站。本文将详细介绍如何从基础到进阶地使用Avada,为你提供一个超过5000字的全方位指南。第一步:购买与安装购买Avada选择平台:Avada可以在Th
- 大数据学习(七)Python3操作livy(使用pylivy模块)
猪笨是念来过倒
大数据大数据python
Livy是一个用于与Spark交互的开源REST接口。pylivy是Livy的Python客户端,可以在Spark集群上轻松实现远程代码执行。安装$pipinstall-Ulivy请注意,pylivy需要Python3.6或更高版本。用法所述LivySession类的主界面提供由pylivy:from
- F1. Omsk Metro (simple version)
L_M_TY
算法
题目链接:Problem-F1-Codeforces题目大意:有一棵树,然后通过“+”,“?”,其中“+”代表将一个权重为xi的新节点添加到vi(xi,vi,见输入介绍);“?”代表查询u,v,里的简单路径是否有一个权重和正好等于ki的路径子段(可以为空)有YES,无NO,并题目保证为ui==1,输入:符号"+"(不带引号),然后是两个数字vi和xi(xi∈{−1,1}),也保证存在数字vi的顶点
- 2024年wordpress、d-link等相关的多个cve漏洞poc
棉花糖网络安全圈
漏洞复现网络安全
⚠️漏洞✅CVE-2024-10914在D-LinkDNS-320、DNS-320LW、DNS-325和DNS-340L中发现的漏洞,版本直到20241028GET/cgi-bin/account_mgr.cgi?cmd=cgi_user_add&name=%27;id;%27HTTP/1.1✅CVE-2024-11305在AltenergyPowerControlSoftware中发现的关键漏洞
- 《石头做的汤》
jerry201108
教育学习
资料来源《程序员修炼之道:通向务实的最高境界(第2版)》我记得幼儿园时的绘本中好像就有《石头汤》,不知道变成大孩子后对石头汤的理解是怎样的,回头可以再让他看看这段故事说说其中的体会。有三个战场归途中的士兵饥肠辘辘。他们看到前方有一座村庄,顿时重整精神——他们觉得村民们会给口饭吃。可是当他们抵达那里时,却发现四处门窗紧闭。多年战乱下,村民们食物短缺,仅有的存粮都藏了起来。士兵们没有气馁,他们烧了一锅
- 【转载】wordpress工作原理
iteye_20685
WordPress工作PHPBlogF#
[url]http://blog.ossxp.com/2010/01/166/[/url]WP初始化的过程:当你输入/wordpress对wordpress进行初始化时,wordpress默认会找根目录下的index.php页面,看一下index.php页面。你会发现,它会去调用根目录下的wp-blog-header.php,我们继续看wp-blog-header.php。通过wp-load.ph
- Python进阶—高级语法
Echo.py
Python基础语法python开发语言
目录文章目录目录1、在==和is之间选择2、元组的相对不可变性3、字典中的键映射多个值4、Linux5、python中字典的key要求6、编码7、进制之间的转换8、关系运算符(时间处理)9、时间处理模块❶常用时间处理方法❷转化为13位时间戳10、三元运算符11、成员运算符12、For循环机制13、变量的分类14、闭包(函数的嵌套)15、函数(方法)的执行流程16、匿名函数17、Django和Fla
- Agent评估【Langchain】
BBluster
langchain
Agent评估【LangChain&LangSmith】简介LangChain提供了三种LLM-Agent的评估方案最终响应:评估代理的最终响应单步:单独评估任何代理步骤(例如,是否选择了适当的工具)轨迹:评估代理是否采用了预期路径(例如,工具调用)来得出最终答案构建智能体接下来将使用LangGraph构建一个Agent环境设置下载依赖项pipinstall--upgrade--quietlang
- FluentCMS:基于 ASP.NET Core 和 Blazor 技术构建的开源CMS内容管理系统
编程乐趣
asp.net开源后端
推荐一个基于ASP.NETCore和Blazor技术构建的、功能完善的开源CMS内容管理系统。01项目简介FluentCMS是一个基于强大的ASP.NETCore和创新的Blazor技术构建的现代内容管理系统(CMS)。FluentCMS设计为快速、灵活且用户友好,它不仅是一个传统的基于内容的CMS,还是一个无头(Headless)CMS,使其非常适合各种应用场景。此项目还在开发中,还有部分问题,
- 对本地部署的ChatGLM模型进行API调用
BBluster
LLMpython开发语言语言模型
ChatGLM作为一个小参数模型,给予了我们在本地部署LLM的条件,接下来我将展示如何使用python对本地部署的ChatGLM模型进行API调用对于如何部署本地ChatGLM模型我们可以访问本地化部署大语言模型ChatGLM接下来我首先分享api调用的测试代码:importtimeimportrequests#测试GPU运行是否成功deftest_function_1():importtorch
- Traceback包【持续更新】
BBluster
pythonpython
Traceback包简介traceback是Python标准库中的一个模块,它提供了一组用于提取、格式化和打印程序执行过程中的堆栈跟踪信息的工具。当程序发生异常且未被捕获时,Python会自动生成一个堆栈跟踪,显示出错的位置和调用栈。这有助于开发者理解和调试程序中出现的问题。主要功能当程序发生异常时,traceback模块可以用来捕获和格式化相关的堆栈信息。这有助于开发者快速定位问题所在。格式化的
- Vim命令&快捷键
BBluster
系统vim编辑器linux
Vim命令&快捷键简介Vim(ViIMproved)是一个功能强大的文本编辑器,广泛用于编程和其他文本编辑任务。它是基于vi编辑器,添加了很多新的功能。Vim使用模式编辑,主要包括普通模式、插入模式和命令行模式。命令基础命令i-进入插入模式,可以开始输入文本。Esc-退出当前模式,回到普通模式。:w-保存文件。:q-退出Vim。:wq或:x-保存并退出。:q!-强制退出而不保存更改移动光标h-左移
- Vector的扩容过程是怎样的
codedadi
java
Vector的扩容过程在C++中是一个动态调整内存空间以容纳更多元素的过程。这一过程主要发生在向Vector中添加元素时,如果当前Vector的容量不足以容纳新元素,就会触发扩容操作。以下是Vector扩容过程的详细步骤:扩容机制判断是否需要扩容:当向Vector中添加新元素,且当前容量不足以容纳新元素时,Vector会判断是否需要扩容。确定新的容量大小:Vector的扩容策略通常是按照一定的增长
- Python timeit的使用
egzosn
python开发语言
假设您要测量代码段的执行时间。你是做什么?直到现在,我就像大多数人一样会做以下事情:登录后复制#导入时间start_time=time.time()"""某些代码"""end_time=time.time()print(f“执行时间为:{end_time-start_time}”)1.2.3.4.5.现在说我们要比较两个不同函数的执行时间,然后:登录后复制#导入时间deffunction_1(*参
- 【前端异常】JavaScript错误处理:分析 Uncaught (in promise) error
egzosn
前端javascript开发语言ecmascript
在前端开发中,JavaScript异常是不可避免的。随着现代前端应用越来越多地使用异步操作(如Promise、async/await等),开发者常常会遇到Uncaught(inpromise)error错误。这个错误是由于未正确处理Promise的拒绝(rejection)而导致的,常常出现在异步操作失败的情况下。如果不妥善处理,可能会导致应用的不稳定和用户体验的下降。本文将深入分析Uncaugh
- 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