- Spring MVC中的DispatcherServlet:核心调度者
张某布响丸辣
springmvcjava
在SpringMVC框架中,DispatcherServlet扮演着至关重要的角色,它是整个请求处理流程的核心组件和调度者。本文将深入探讨DispatcherServlet的工作原理、主要职责以及在SpringMVC应用中的重要作用。一、引言SpringMVC是一种基于Java的实现了WebMVC设计模式的请求驱动类型的轻量级Web框架。它通过使用ModelAndView和DispatcherSe
- springMVC笔记系列(19)——控制器实现详解(上)
weixin_34290390
java测试前端ViewUI
2019独角兽企业重金招聘Python工程师标准>>>本文我们在前文基础上引入一个例子,边做边聊控制器。我们想实现一个课程查询的功能。首先大脑应该条件反射——如何定义MVC。M:课程(包含章节)——Course(包含Chapter)V:课程页面——course_overview.jspC:编写一个控制器接收springMVC前端控制器dispatcherServlet的请求转发——CourseCo
- Vue使用插槽封装tabbar 和使用router-view
senda66
vuevue
tabbar的封装思路tabbar1、定义tabbar组件2、定义tabbar-item组件定义tabbar组件思路:使用插槽exportdefault{name:'TabBar'}#tabbar{display:flex;background-color:#f6f6f6;position:fixed;left:0;right:0;bottom:0;box-shadow:0-1px5pxrgba(
- vue-router学习8:RouterView插槽
无名H
vue-routervue.js前端javascript开发语言学习
RouterView用于渲染当前路由对应的组件,可以通过插槽(Slots)来提供更加灵活和强大的路由渲染能力。RouterView插槽概述RouterView提供了两个主要的插槽:默认插槽(defaultslot):用于渲染当前路由匹配到的组件。命名插槽(namedslots):根据路由的name属性来渲染对应的组件。安装并配置npminstallvue-router使用import{create
- 关于 router-view-slot
今晚也失眠
前端javascript开发语言
关于router-view-slotApp.vue配置动态路由importlayoutfrom"@/layout/index.vue";constrouter=createRouter({history:createWebHistory(import.meta.env.BASE_URL),routes:[{path:"/",name:"layout",redirect:"/dashboard",c
- VueRouter源码(三)--RouterView, RouterLink
haoyanyu_
Vue
注册为vue组件RouterView和RouterLink组件在install方法中注册成了Vue的组件functioninstall(Vue){...Vue.component('RouterView',View);Vue.component('RouterLink',Link);...}RouterViewvue-router.jsline45主要作用:在RouterView里渲染需要显示的组
- RouterView 插槽
J不A秃V头A
前端前端vue.js
RotuerView组件暴露了一个插槽,可以用来渲染路由组件:上面的代码等价于不带插槽的,但是当我们想要获得其他功能时,插槽提供了额外的扩展性。KeepAlive&Transition当在处理KeepAlive组件时,我们通常想要保持路由组件活跃,而不是RouterView本身。为了实现这个目的,我们可以将KeepAlive组件放置在插槽内:类似地,插槽允许我们使用一个Transition组件来实
- uniapp解决app端不能用<web-view>将外部页面嵌入当前页面的问题
舍予一
前端知识汇总关于学习开发中遇到的各种问题uni-app前端
uniapp解决app端不能用将外部页面嵌入当前页面的问题参考资料代码(兼容h5与app)父页面子组件Vue2Vue3、组合式、ts参考资料android项目嵌套uniapp页面及交互uniapp嵌套h5页面代码(兼容h5与app)父页面//#ifdefH5//#endif//#ifdefAPP-PLUS//#endifimportContentfrom'./content.vue'.contra
- Android Data Binding数据绑定详解(基础篇)
e电动小马达e
Android
文章导航AndroidDataBinding数据绑定详解(基础篇)AndroidDataBinding数据绑定详解(进阶篇)简介在2015年的谷歌IO大会上,AndroidUIToolkit团队发布了DataBinding框架,将数据绑定引入了Android开发。以后可以直接在layout布局xml文件中绑定数据了,无需再findViewById然后手工设置数据了。官方文档说明构建环境使用之前,需
- 书写HTML的规范
恶心_3da6
文章目录1.1通用约定标签Class与ID属性顺序引号嵌套语义嵌套约束严格嵌套约束布尔值属性1.2语义化常见标签语义示例1.3HEAD文档类型语言属性字符编码IE兼容模式SEO优化viewportiOS图标favicon完整的HEAD模板1.1通用约定标签自闭合(self-closing)标签,无需闭合(例如:imginputbrhr等);可选的闭合标签(closingtag),需闭合(例如:或)
- 设计模式-原型模式 Prototype Pattern
WeSiGJ
设计模式C++设计模式原型模式c++
系列文章目录文章目录系列文章目录设计模式-原型模式PrototypePatternOverview1.原型模式PrototypePattern1.1.原型模式的主要角色包括1.2.C++实现示例1.3.原型模式的应用场景1.4.注意事项2.原型模式优缺点2.1.优点2.2.缺点3.原型模式在实际开发中有哪些常见的应用场景?4.在实际开发中,如何决定何时使用原型模式而不是其他模式,比如单例模式?关于
- cesium加载在线3dtiles
GISER_WDL
3d
1、通过cesium.ion官网申请一个AccessTokens2、加载在线建筑物白膜,代码如下:consttileset=viewer.scene.primitives.add(awaitCesium.createOsmBuildings({enableShowOutline:false}));3、修改建筑物白膜样式tileset.style=newCesium.Cesium3DTileStyl
- vue3 路由的使用
前端不加班
vue3vue.jsjavascript前端
路由的使用在传统的Web开发过程中,当需要实现多个站内页面时,以前需要写很多个HTML页面,然后通过标签来实现互相跳转。在如今工程化模式下的前端开发,像Vue工程,可以轻松实现只用一个HTML文件,却能够完成多个站内页面渲染、跳转的功能,这就是路由。TIP从这里开始,所有包含到.vue文件引入的地方,可能会看到@xx/xx.vue这样的写法。@views是src/views的路径别名,@cp是sr
- Unity自带的UGUI ScrollView刷新不及时问题
DOUBLE_-H
unity游戏引擎
self:RefreshCommentsList()self.scrollView=self.CommentsView:GetComponent(ScrollRect)self.scrollView.verticalNormalizedPosition=0如上所示,当我想刷新Unity中的一个ScrollView的列表后,将这个列表瞬间移至底部。但是上述这三行代码会出现一个问题:存在ScrollV
- iview timpicker 时间选择限制(时间线下一个时间不能早于上一个时间)
芭拉拉小魔仙
vuejs
//配送点到达时间规范:当前配送点到达时间不能超过上一个配送点到达时间disabledHours(index){letpreTime=index===0?'0:0:0':this.deliveryTimeList[index-1].time;letpreHour=preTime===""?0:preTime.split(":")[0];letdisabledArr=[];for(leti=0;i<
- Vue基础(day05)
菜先生…
前端vuewebpack
Vue.js(第五天)父子组件之间的传值这是子元素---{{parentmsg}}varcom1={template:'#tmp1',data(){return{msg:'给你一些钱,去挥霍吧!'}},props:['parentmsg'],methods:{sendMsg(){this.$emit('func',this.msg);}}}//创建Vue实例,得到ViewModelvarvm=ne
- C++(Qt)-GIS开发-QGraphicsView显示瓦片地图简单示例2
mahuifa
#GIS开发c++qt瓦片地图GISBing地图
C++(Qt)-GIS开发-QGraphicsView显示瓦片地图简单示例2文章目录C++(Qt)-GIS开发-QGraphicsView显示瓦片地图简单示例21、概述2、实现效果3、主要代码4、源码地址更多精彩内容个人内容分类汇总GIS开发1、概述支持多线程加载显示本地离线瓦片地图(墨卡托投影);瓦片切片规则以左上角为原点(谷歌、高德、ArcGis等),不支持百度瓦片规则;支持显示瓦片网格、编号
- QA常见面试问题答与问(English)
a332897696
软件测试网络资料面试testingapplicationloadrunnersqlserverperformance
InterviewquestionsonWinRunnerHowyouusedWinRunnerinyourproject?-Yes,IhavebeenusingWinRunnerforcreatingautomatedscriptsforGUI,functionalandregressiontestingoftheAUT.ExplainWinRunnertestingprocess?-WinRu
- [uview3]Popup 弹出层
hj1043
java前端javascript
项目场景:展会管理系统,通过弹出层的方式切换展会项目,效果如下:弹出部分代码:注意点:层级要设高一点,可能会其他元素遮挡出不来请设置展会:
- android 下拉刷新,androidx.swiperefreshlayout:swiperefreshlayout:1.1.0
No Promises﹉
androidandroidx
介绍`androidx.swiperefreshlayout:swiperefreshlayout:1.1.0`是Android中一个常用的组件,用于实现“下拉刷新”功能。这个组件主要用于在列表(如`RecyclerView`、`ListView`等)或其他可滚动视图上,实现用户通过下拉手势来触发内容刷新操作。1.添加依赖在项目的`build.gradle`文件中添加依赖:dependencies
- MFC3d立体按钮制作
兵哥工控
mfcc++
1、本程序基于前期我的博客文章MFC用CButtonST类实现图片透明按钮(免费源码下载)2、添加CeXDib.cppCeXDib.hShadeButtonST.cppShadeButtonST.h到项目文件夹下,和FileView中如图。3、在ButtonShadeDlg.h中添加代码#include"ShadeButtonST.h"#include"BtnST.h"classCButtonSh
- OSG Viewer输入按键无响应
yann_qu
OpenSceneGraphOSGosgEarth
OSGViewer输入按键无响应1问题描述操作系统:Windows1022H2输入法:微软拼音输入法现象:在PowerShell执行osgviewer.exeglider.osg后,能正常显示图像,但输入s(显示帧率)或f(切换全屏或窗口)等按键后无响应。2解决方案右键点击任务栏右下角输入法图标,点击设置-常规,在兼容性一栏中启用使用以前版本的微软拼音输入法。
- 推荐:React Native 邮件组件 —— react-native-mail
乌昱有Melanie
推荐:ReactNative邮件组件——react-native-mailreact-native-mailAwrapperontopofMFMailComposeViewControllerfromiOSandMailIntentonandroid项目地址:https://gitcode.com/gh_mirrors/re/react-native-mail在移动应用开发中,集成发送邮件功能是一
- Android --- Fragemnt 的生命周期
梁同学与Android
Android项目开发笔记android
Fragment的生命周期Fragment的生命周期包含了几个关键的阶段,如下图所示:OnAttach(Activityactivity):当Fragment被加入到Activity时调用。onCreate(BundlesavedInstanceState):创建Fragment时调用,在此可以执行初始化工作。onCreateView(LayoutInflaterinflater,ViewGrou
- uview的u-input限制体温输入,35到42之间,保留一位小数,限制只能输入4个字符
杨天天.
javascript前端vue.jsuni-app
varelement=this.temperature;console.log(element)varx=String(element).indexOf('.')+1;//小数点的位置vary=(x!==0)?String(element).length-x:0;//小数的位数varelementNum=Number.parseFloat(element);console.log(elementN
- S03E07-句读《中国哲学的故事》---A Revision of Liu Hsin's Theory
Rachel09
ARevisionofLiuHsin'sTheory对刘歆理论的修正YetthoughthedetailsofLiuHsin'stheorymaybewrong,hisattempttotracetheoriginoftheschoolstocertainpoliticalandsocialcircumstancescertainlyrepresentsarightpointofview.刘歆理论
- Flutter之ListView 嵌套不同的Item
涂文远
Flutterflutterandroid
效果实现代码如下home_page.dartimport'dart:convert';import'dart:ffi';import'package:flutter/material.dart';import'package:flutterwncq/constants/constants.dart'showAppUrls;import'package:flutterwncq/models/inde
- Cesium笔记 加载kml文件 以线为例
Y青阳
cesium笔记前端
setKmlData(kmlUrl){letvm=this;//letkmlUrl=kmlUrl;letkmlDataPromise=Cesium.KmlDataSource.load(kmlUrl,{camera:vm.viewer.scene.camera,canvas:vm.viewer.scene.canvas,clampToGround:true,//默认贴地depthTestAgain
- XrecyclerView实现上拉加载和下拉刷新+多条目(MVP获取数据)
✎ℳ๓Eternity✾
进阶
依赖implementation'com.jcodecraeer:xrecyclerview:1.5.9'implementation'com.android.support:recyclerview-v7:28.0.0'图片加载依赖implementation'com.github.bumptech.glide:glide:4.8.0'ActivitypublicclassShoppingAct
- android自定义view之画圆随着手指移动
✎ℳ๓Eternity✾
进阶View画圆可以跟随手指移动
publicclassMyViewextendsView{privatePaintmFanPaint,mTextPaint;//扇形画笔和文字画笔publicfloatAxisX=100;publicfloatAxisY=100;publicMyView(Contextcontext){super(context);init();}publicMyView(Contextcontext,Attri
- 桌面上有多个球在同时运动,怎么实现球之间不交叉,即碰撞?
换个号韩国红果果
html小球碰撞
稍微想了一下,然后解决了很多bug,最后终于把它实现了。其实原理很简单。在每改变一个小球的x y坐标后,遍历整个在dom树中的其他小球,看一下它们与当前小球的距离是否小于球半径的两倍?若小于说明下一次绘制该小球(设为a)前要把他的方向变为原来相反方向(与a要碰撞的小球设为b),即假如当前小球的距离小于球半径的两倍的话,马上改变当前小球方向。那么下一次绘制也是先绘制b,再绘制a,由于a的方向已经改变
- 《高性能HTML5》读后整理的Web性能优化内容
白糖_
html5
读后感
先说说《高性能HTML5》这本书的读后感吧,个人觉得这本书前两章跟书的标题完全搭不上关系,或者说只能算是讲解了“高性能”这三个字,HTML5完全不见踪影。个人觉得作者应该首先把HTML5的大菜拿出来讲一讲,再去分析性能优化的内容,这样才会有吸引力。因为只是在线试读,没有机会看后面的内容,所以不胡乱评价了。
- [JShop]Spring MVC的RequestContextHolder使用误区
dinguangx
jeeshop商城系统jshop电商系统
在spring mvc中,为了随时都能取到当前请求的request对象,可以通过RequestContextHolder的静态方法getRequestAttributes()获取Request相关的变量,如request, response等。 在jshop中,对RequestContextHolder的
- 算法之时间复杂度
周凡杨
java算法时间复杂度效率
在
计算机科学 中,
算法 的时间复杂度是一个
函数 ,它定量描述了该算法的运行时间。这是一个关于代表算法输入值的
字符串 的长度的函数。时间复杂度常用
大O符号 表述,不包括这个函数的低阶项和首项系数。使用这种方式时,时间复杂度可被称为是
渐近 的,它考察当输入值大小趋近无穷时的情况。
这样用大写O()来体现算法时间复杂度的记法,
- Java事务处理
g21121
java
一、什么是Java事务 通常的观念认为,事务仅与数据库相关。 事务必须服从ISO/IEC所制定的ACID原则。ACID是原子性(atomicity)、一致性(consistency)、隔离性(isolation)和持久性(durability)的缩写。事务的原子性表示事务执行过程中的任何失败都将导致事务所做的任何修改失效。一致性表示当事务执行失败时,所有被该事务影响的数据都应该恢复到事务执行前的状
- Linux awk命令详解
510888780
linux
一. AWK 说明
awk是一种编程语言,用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入、一个或多个文件,或其它命令的输出。它支持用户自定义函数和动态正则表达式等先进功能,是linux/unix下的一个强大编程工具。它在命令行中使用,但更多是作为脚本来使用。
awk的处理文本和数据的方式:它逐行扫描文件,从第一行到
- android permission
布衣凌宇
Permission
<uses-permission android:name="android.permission.ACCESS_CHECKIN_PROPERTIES" ></uses-permission>允许读写访问"properties"表在checkin数据库中,改值可以修改上传
<uses-permission android:na
- Oracle和谷歌Java Android官司将推迟
aijuans
javaoracle
北京时间 10 月 7 日,据国外媒体报道,Oracle 和谷歌之间一场等待已久的官司可能会推迟至 10 月 17 日以后进行,这场官司的内容是 Android 操作系统所谓的 Java 专利权之争。本案法官 William Alsup 称根据专利权专家 Florian Mueller 的预测,谷歌 Oracle 案很可能会被推迟。 该案中的第二波辩护被安排在 10 月 17 日出庭,从目前看来
- linux shell 常用命令
antlove
linuxshellcommand
grep [options] [regex] [files]
/var/root # grep -n "o" *
hello.c:1:/* This C source can be compiled with:
- Java解析XML配置数据库连接(DOM技术连接 SAX技术连接)
百合不是茶
sax技术Java解析xml文档dom技术XML配置数据库连接
XML配置数据库文件的连接其实是个很简单的问题,为什么到现在才写出来主要是昨天在网上看了别人写的,然后一直陷入其中,最后发现不能自拔 所以今天决定自己完成 ,,,,现将代码与思路贴出来供大家一起学习
XML配置数据库的连接主要技术点的博客;
JDBC编程 : JDBC连接数据库
DOM解析XML: DOM解析XML文件
SA
- underscore.js 学习(二)
bijian1013
JavaScriptunderscore
Array Functions 所有数组函数对参数对象一样适用。1.first _.first(array, [n]) 别名: head, take 返回array的第一个元素,设置了参数n,就
- plSql介绍
bijian1013
oracle数据库plsql
/*
* PL/SQL 程序设计学习笔记
* 学习plSql介绍.pdf
* 时间:2010-10-05
*/
--创建DEPT表
create table DEPT
(
DEPTNO NUMBER(10),
DNAME NVARCHAR2(255),
LOC NVARCHAR2(255)
)
delete dept;
select
- 【Nginx一】Nginx安装与总体介绍
bit1129
nginx
启动、停止、重新加载Nginx
nginx 启动Nginx服务器,不需要任何参数u
nginx -s stop 快速(强制)关系Nginx服务器
nginx -s quit 优雅的关闭Nginx服务器
nginx -s reload 重新加载Nginx服务器的配置文件
nginx -s reopen 重新打开Nginx日志文件
- spring mvc开发中浏览器兼容的奇怪问题
bitray
jqueryAjaxspringMVC浏览器上传文件
最近个人开发一个小的OA项目,属于复习阶段.使用的技术主要是spring mvc作为前端框架,mybatis作为数据库持久化技术.前台使用jquery和一些jquery的插件.
在开发到中间阶段时候发现自己好像忽略了一个小问题,整个项目一直在firefox下测试,没有在IE下测试,不确定是否会出现兼容问题.由于jquer
- Lua的io库函数列表
ronin47
lua io
1、io表调用方式:使用io表,io.open将返回指定文件的描述,并且所有的操作将围绕这个文件描述
io表同样提供三种预定义的文件描述io.stdin,io.stdout,io.stderr
2、文件句柄直接调用方式,即使用file:XXX()函数方式进行操作,其中file为io.open()返回的文件句柄
多数I/O函数调用失败时返回nil加错误信息,有些函数成功时返回nil
- java-26-左旋转字符串
bylijinnan
java
public class LeftRotateString {
/**
* Q 26 左旋转字符串
* 题目:定义字符串的左旋转操作:把字符串前面的若干个字符移动到字符串的尾部。
* 如把字符串abcdef左旋转2位得到字符串cdefab。
* 请实现字符串左旋转的函数。要求时间对长度为n的字符串操作的复杂度为O(n),辅助内存为O(1)。
*/
pu
- 《vi中的替换艺术》-linux命令五分钟系列之十一
cfyme
linux命令
vi方面的内容不知道分类到哪里好,就放到《Linux命令五分钟系列》里吧!
今天编程,关于栈的一个小例子,其间我需要把”S.”替换为”S->”(替换不包括双引号)。
其实这个不难,不过我觉得应该总结一下vi里的替换技术了,以备以后查阅。
1
所有替换方案都要在冒号“:”状态下书写。
2
如果想将abc替换为xyz,那么就这样
:s/abc/xyz/
不过要特别
- [轨道与计算]新的并行计算架构
comsci
并行计算
我在进行流程引擎循环反馈试验的过程中,发现一个有趣的事情。。。如果我们在流程图的每个节点中嵌入一个双向循环代码段,而整个流程中又充满着很多并行路由,每个并行路由中又包含着一些并行节点,那么当整个流程图开始循环反馈过程的时候,这个流程图的运行过程是否变成一个并行计算的架构呢?
- 重复执行某段代码
dai_lm
android
用handler就可以了
private Handler handler = new Handler();
private Runnable runnable = new Runnable() {
public void run() {
update();
handler.postDelayed(this, 5000);
}
};
开始计时
h
- Java实现堆栈(list实现)
datageek
数据结构——堆栈
public interface IStack<T> {
//元素出栈,并返回出栈元素
public T pop();
//元素入栈
public void push(T element);
//获取栈顶元素
public T peek();
//判断栈是否为空
public boolean isEmpty
- 四大备份MySql数据库方法及可能遇到的问题
dcj3sjt126com
DBbackup
一:通过备份王等软件进行备份前台进不去?
用备份王等软件进行备份是大多老站长的选择,这种方法方便快捷,只要上传备份软件到空间一步步操作就可以,但是许多刚接触备份王软件的客用户来说还原后会出现一个问题:因为新老空间数据库用户名和密码不统一,网站文件打包过来后因没有修改连接文件,还原数据库是好了,可是前台会提示数据库连接错误,网站从而出现打不开的情况。
解决方法:学会修改网站配置文件,大多是由co
- github做webhooks:[1]钩子触发是否成功测试
dcj3sjt126com
githubgitwebhook
转自: http://jingyan.baidu.com/article/5d6edee228c88899ebdeec47.html
github和svn一样有钩子的功能,而且更加强大。例如我做的是最常见的push操作触发的钩子操作,则每次更新之后的钩子操作记录都会在github的控制板可以看到!
工具/原料
github
方法/步骤
- ">的作用" target="_blank">JSP中的作用
蕃薯耀
JSP中<base href="<%=basePath%>">的作用
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
- linux下SAMBA服务安装与配置
hanqunfeng
linux
局域网使用的文件共享服务。
一.安装包:
rpm -qa | grep samba
samba-3.6.9-151.el6.x86_64
samba-common-3.6.9-151.el6.x86_64
samba-winbind-3.6.9-151.el6.x86_64
samba-client-3.6.9-151.el6.x86_64
samba-winbind-clients
- guava cache
IXHONG
cache
缓存,在我们日常开发中是必不可少的一种解决性能问题的方法。简单的说,cache 就是为了提升系统性能而开辟的一块内存空间。
缓存的主要作用是暂时在内存中保存业务系统的数据处理结果,并且等待下次访问使用。在日常开发的很多场合,由于受限于硬盘IO的性能或者我们自身业务系统的数据处理和获取可能非常费时,当我们发现我们的系统这个数据请求量很大的时候,频繁的IO和频繁的逻辑处理会导致硬盘和CPU资源的
- Query的开始--全局变量,noconflict和兼容各种js的初始化方法
kvhur
JavaScriptjquerycss
这个是整个jQuery代码的开始,里面包含了对不同环境的js进行的处理,例如普通环境,Nodejs,和requiredJs的处理方法。 还有jQuery生成$, jQuery全局变量的代码和noConflict代码详解 完整资源:
http://www.gbtags.com/gb/share/5640.htm jQuery 源码:
(
- 美国人的福利和中国人的储蓄
nannan408
今天看了篇文章,震动很大,说的是美国的福利。
美国医院的无偿入院真的是个好措施。小小的改善,对于社会是大大的信心。小孩,税费等,政府不收反补,真的体现了人文主义。
美国这么高的社会保障会不会使人变懒?答案是否定的。正因为政府解决了后顾之忧,人们才得以倾尽精力去做一些有创造力,更造福社会的事情,这竟成了美国社会思想、人
- N阶行列式计算(JAVA)
qiuwanchi
N阶行列式计算
package gaodai;
import java.util.List;
/**
* N阶行列式计算
* @author 邱万迟
*
*/
public class DeterminantCalculation {
public DeterminantCalculation(List<List<Double>> determina
- C语言算法之打渔晒网问题
qiufeihu
c算法
如果一个渔夫从2011年1月1日开始每三天打一次渔,两天晒一次网,编程实现当输入2011年1月1日以后任意一天,输出该渔夫是在打渔还是在晒网。
代码如下:
#include <stdio.h>
int leap(int a) /*自定义函数leap()用来指定输入的年份是否为闰年*/
{
if((a%4 == 0 && a%100 != 0
- XML中DOCTYPE字段的解析
wyzuomumu
xml
DTD声明始终以!DOCTYPE开头,空一格后跟着文档根元素的名称,如果是内部DTD,则再空一格出现[],在中括号中是文档类型定义的内容. 而对于外部DTD,则又分为私有DTD与公共DTD,私有DTD使用SYSTEM表示,接着是外部DTD的URL. 而公共DTD则使用PUBLIC,接着是DTD公共名称,接着是DTD的URL.
私有DTD
<!DOCTYPErootSYST