当前位置: 首页 > news >正文

网站建设6135678/2024年的新闻

网站建设6135678,2024年的新闻,山东住房和城乡建设厅网站注册中心,淡蓝黑色大气企业网站模板1. XML文档的构成 XML文档结构其实与html代码结构非常相似。 1. XML文档声明 文档声明必须以<?xml 开头&#xff0c;以?>结束。文档声明必须从文档的0行0列开始。文档声明只有三个属性&#xff1a; version&#xff1a;指定XML文档版本&#xff0c;必选&#xff0c;一般…

1. XML文档的构成

XML文档结构其实与html代码结构非常相似。

1. XML文档声明
  1. 文档声明必须以<?xml 开头,以?>结束。
  2. 文档声明必须从文档的0行0列开始。
  3. 文档声明只有三个属性:
    • version:指定XML文档版本,必选,一般使用1.0
    • encoding:指定XML文档编码。可选,默认utf-8
    • standalone:指定XML是否独立存在(而不依赖于外部DTD或schema文件),一般不设置此属性
2. XML文档元素(element)
  1. 最基本的xml元素由开始标签、元素体、结束标签组成。例如:这是一个标题
  2. 元素的开始标签中可以含有一个或多个属性。例如:这是一个标题
  3. 元素中可以嵌入元素。例如:这是一个标题
  4. 自闭合标签被称为空标签,一般只有属性而没有值。例如:
  5. 元素体中如果需要输出特殊字符例如引号(")、大括号(>)、等已经被文档元素引用的字符,就需要使用转义字符。
    • 如果文档中有较多的转义字符,会给阅读带来很大的不便,这时候可以使用CDATA区。CDATA区的字符会被文档处理器自动处理。使用方法:
    <![CDATA[你的内容
    ]]>
3. 注释

XML文档注释与html相同,以“<!--”开头,并以 “-->”结束。

4. 文档约束

因为XML文档中可以编写任何内容,但编写文档时必须要使用正确的标签,使用者才能读取到有用的信息。这时可以使用约束来规定文档的语法。常用的例如hibernate、Mybatis的dtd约束,以及spring所使用的schema约束。

2. dom4j解析

hibernate框架底层解析xml文档使用的就是dom4j技术,它具有具有性能优异、灵活性好、功能强大和极端易用的特点。
dom4j的功能十分强大,对于xml节点的增删改查都有涉及,我们这里就非常非常简单地模拟一下servlet的对于路径的匹配,也算是抛个砖头。
web.xml:

<?xml version="1.0" encoding="utf-8"?>
<web-app version="2.5"><servlet><servlet-name>helloServlet</servlet-name><servlet-class>com.uuunl.servlet.HelloServlet</servlet-class></servlet><servlet-mapping><servlet-name>helloServlet</servlet-name><url-pattern>/hello</url-pattern></servlet-mapping><servlet><servlet-name>worldServlet</servlet-name><servlet-class>com.uuunl.servlet.WorldServlet</servlet-class></servlet><servlet-mapping><servlet-name>worldServlet</servlet-name><url-pattern>/world</url-pattern></servlet-mapping>
</web-app>

上述代码中有两个servlet,一个用来映射“/hello”,一个用来映射“/world”。当我们的服务器接收到一个请求,它会把路径名和参数解析好了之后根据我们的设置来决定映射到哪一个servlet中。例如“http:www.uuunl.com/hello?name=tom”这里路径名就是“/hello”,参数为“name”,它的值为“tom”。当然,实际情况中比我们这里要复杂得多。

以下是非常非常简单的模拟服务器解析我们的web.xml文件与匹配servlet路径的过程:

private static String mappingUrl(String url) {// 读取web.xml文件File file = new File(Main.class.getResource("/web.xml").getPath());try {// 利用读取到的文件初始化 SAXReader 对象,并获得 Document 的根对象Document document = new SAXReader().read(file);Element rootElement = document.getRootElement();// 初始化需要用到的容器String urlPatternString;String servletNameString;String classNameString;// 初始化对应的 mapMap<String, String> servletMappingMap = new HashMap<>();Map<String, String> servletMap = new HashMap<>();// 获取所有的 servlet-mapping 节点,并装入 list 中List<Element> servletMappingElementList = rootElement.elements("servlet-mapping");// 遍历 servlet-mapping 的listfor (Element ele : servletMappingElementList) {// 获取 url-pattern 节点的文本urlPatternString = ele.element("url-pattern").getText();// 获取 servlet-name 节点的文本servletNameString = ele.element("servlet-name").getText();// 将 url-pattern 与 servlet-name 一一对应加入 servletMappingMap 中servletMappingMap.put(urlPatternString, servletNameString);}// 获取所有的 servlet 节点,并装入 list 中List<Element> servletElementList = rootElement.elements("servlet");// 遍历 servlet 的listfor (Element ele : servletElementList) {// 获取 servlet-name 节点的文本servletNameString = ele.element("servlet-name").getText();// 获取 servlet-class 节点的文本classNameString = ele.element("servlet-class").getText();// 将 servlet-name 与 servlet-class 一一对应加入 servletMap 中servletMap.put(servletNameString, classNameString);}// 1. 从 servletMappingMap 取出对应的 servlet-name// 2. 从 servletMap 取出对应的 servlet-classreturn servletMap.get(servletMappingMap.get(url));} catch (DocumentException e) {throw new RuntimeException(e.getMessage());}
}

当传入一个url,以上方法会将返回匹配到的class名称输出,当服务器得到class名称,就可以使用反射来创建相应的对象,处理相应请求。

转载于:https://www.cnblogs.com/stdio0/p/10006348.html

http://www.lbrq.cn/news/757891.html

相关文章:

  • 深圳个性化网站建设公司电话/免费crm客户管理系统
  • 做蛋糕网站/seo搜索优化
  • 网站建设 英文版/跨境电商seo是什么意思
  • 深圳模具外贸网站建设/企业专业搜索引擎优化
  • 沧州网站制作公司/seo博客大全
  • 珠海市手机网站建设品牌/系统优化大师官方下载
  • 长沙景点排行榜/前端seo怎么优化
  • 杭州建设主管部门的网站/广州网站设计公司
  • 公司网站介绍范文/好搜网
  • 福鼎网站开发/网站建设报价
  • 做纯静态网站怎么样/立即优化在哪里
  • 济南好的seo/长沙建站优化
  • 宁波网站建设的企业/杭州seo网站排名
  • 湛江专业的免费建站/自媒体有哪些平台
  • 免费asp主机网站/综合权重查询
  • 梦幻西游源码论坛/软文优化
  • 南昌做小程序公司/seo优化资源
  • b2c网站怎么建设/马鞍山网站seo
  • 网站源码程序修改/互联网营销模式
  • 网站怎么做效果好/seo优化网络推广
  • 阜宁做网站需要多少钱/临沂百度代理公司有几个
  • 网站营销特点/百度正版下载并安装
  • 重庆网站空间费用/网络营销的优势是什么
  • 怎么做网站规划/视频号链接怎么获取
  • 宝安网站开发/郑州seo多少钱
  • 桥头网站仿做/上海建站seo
  • 网站建设还好做吗/中国外贸订单网
  • 2k屏幕的网站怎么做/百度指数指的是什么
  • 网站 默认页/宁波seo咨询
  • 南通优普网站建设团队/点击器 百度网盘
  • 8.15 机器学习(2)K最近邻算法
  • 【Golang】:数据类型
  • PyCharm 2025.2:面向工程师的 AI 工具
  • 更改webpack默认配置项
  • 升级Gradle版本后,安卓点击事件使用了SwitchCase的情况下,报错无法使用的解决方案
  • 【C#】利用数组实现大数数据结构