XML,WEB项目部署,HTTP

news/2025/2/3 12:57:13 标签: xml, 前端

 XML(配置文件)

XML和HTML一样都是标记语言,也就是说它们的基本语法都是标签。

 常见配置文件类型

1 根标签只能有一个

2 第一行永远是<?xml version="1.0" encoding="UTF-8"?>不允许放任何东西

3 xml是有约束的 约束用于限定xml内部能编写的内容

   两种约束(无需自己写)         dtd   简单  约束没有schema细致

                                                 schema 复杂  约束细致

-   根标签: 根标签有且只能有一个。

-   标签关闭

    -   双标签:开始标签和结束标签必须成对出现。

    -   单标签:单标签在标签内关闭。

-   标签嵌套: 可以嵌套,但是不能交叉嵌套。

-   注释不能嵌套

-   标签名、属性名建议使用小写字母

-   属性

    -   属性必须有值

    -   属性值必须加引号,单双都行

   XML文档声明 这部分基本上就是固定格式,要注意的是文档声明一定要从第一行第一列开始写

 DOM4J的使用步骤

1.  导入jar包 dom4j.jar

2.  创建解析器对象(SAXReader)

3.  解析xml 获得Document对象

4.  获取根节点RootElement

5.  获取根节点下的子节点

代码举例:

public class TestDom4j {
    @Test
    //java如何读取XML文件;用反射中的类加载器加载文件,并使用dom4进行解析和获取配置
    public void testRead() throws Exception{
        //读取jdbc.xml配置文件,获得document对象
        SAXReader saxReader=new SAXReader();
        //通过类加载器获得指向字节码根路径下的指定文件的输入流
        InputStream resourceAsStream=TestDom4j.class.getClassLoader().getResourceAsStream("jdbc.xml");
        //通过输入流获取配置文件,解析成一个dom对象
        Document document=saxReader.read(resourceAsStream);
        //从document对象上获取配置文件信息
        /*
        * Node 节点
        *    Element 元素节点
        *    Attribute  属性节点
        *    Text    文本节点
        * */
        Element rootElement=document.getRootElement();//读取根标签-----------node
        System.out.println(rootElement.getName());

        //获取元素(整个jdbc元素)下的子元素(div,test,formal)
       List<Element> elments= rootElement.elements();
        for (Element elment : elments) {
            System.out.println("\t"+elment.getName());
            //从元素上获取属性
            Attribute idAttribute = elment.attribute("id");
            System.out.println("\t\t"+idAttribute.getName()+"="+idAttribute.getValue());
            //继续获取子元素
            List<Element> eles = elment.elements();
            for (Element ele : eles) {
                System.out.println("\t\t"+ele.getName()+":"+ele.getText());//获取该子元素的名字和文本
            }
        }
    }
}

WEB项目标准结构

解释: 

app  本应用根目录

     static 非必要目录,约定俗成的名字,一般在此处放静态资源 ( css  js  img)

     WEB-INF  必要目录,必须叫WEB-INF,受保护的资源目录,浏览器通过url不可以直接访问的目录

         classes     必要目录,src下源代码,配置文件,编译后会在该目录下,web项目中如果没有源码,则该目录不会出现

         lib             必要目录,项目依赖的jar编译后会出现在该目录下,web项目要是没有依赖任何jar,则该目录不会出现

         web.xml   必要文件,web项目的基本配置文件. 较新的版本中可以没有该文件,但是学习过程中还是需要该文件

     index.html  非必要文件,index.html/index.htm/index.jsp为默认的欢迎页

 url的组成部分和项目中资源的对应关系

WEB项目部署的方式

> 方式1   直接将编译好的项目放在webapps目录下

> 方式2   将编译好的项目打成war包放在webapps目录下,tomcat启动后会自动解压war(其实和第一种一样)

> 方式3   可以将项目放在非webapps的其他目录下,tomcat中通过配置文件指向app的实际磁盘路径 在磁盘的自定义目录上准备一个app

HTTP

简介

1 客户端和服务端交互的方式

                         请求 (永远都是客户端向服务端发送)

                         响应  (永远都是服务端向客户端返回)

2 客户端和服务端交互数据的格式

                          请求时发送的数据称之为请求报文

                          响应时返回的数据称之为响应报文

报文是有规定格式的:

报文的首部

           行(信息)

           头(信息)

报文的主体

请求和响应的报文格式

请求报文

> 客户端发给服务端的报文

请求报文格式

       请求首行(请求行);    GET/POST   资源路径?参数   HTTP/1.1(请求协议)

       请求头信息(请求头);(key:value  key:value……

       空行;

       请求体; GET请求数据不放在请求体,放在URL上(搜索栏)(POST请求数据才放在请求体中)

 form表单发送GET请求特点

1、由于请求参数在请求首行中已经携带了,所以没有请求体,也没有请求空行

2、请求参数拼接在url地址中,地址栏可见\[url?name1=value1\&name2=value2],不安全

3、由于参数在地址栏中携带,所以由大小限制\[地址栏数据大小一般限制为4k],只能携带纯文本

4、get请求参数只能上传文本数据

5、没有请求体。所以封装和解析都快,效率高, 浏览器默认提交的请求都是get请求比如:地址栏输入回车,超链接,表单默认的提交方式

form表单发送post请求特点

1、POST请求有请求体,而GET请求没有请求体。

2、post请求数据在请求体中携带,请求体数据大小没有限制,可以用来上传所有内容\[文件、文本]

3、只能使用post请求上传文件

4、post请求报文多了和请求体相关的配置\[请求头]

5、地址栏参数不可见,相对安全

6、post效率比get低


http://www.niftyadmin.cn/n/5840824.html

相关文章

python算法和数据结构刷题[6]:二叉树、堆、BFS\DFS

遍历二叉树 前序遍历NLR&#xff1a;先访问根结点&#xff0c;再前序遍历左子树&#xff0c;最后前序遍历右子树。中序遍历LNR&#xff1a;先中序遍历左子树&#xff0c;再访问根结点&#xff0c;最后中序遍历右子树。后序遍历 LRN&#xff1a;先后序遍历左子树&#xff0c;再…

Unity游戏(Assault空对地打击)开发(3) 摄像机的控制

详细步骤 打开My Assets或者Package Manager。 选择Unity Registry。 搜索Cinemachine&#xff0c;找到 Cinemachine包&#xff0c;点击 Install按钮进行安装。 关闭窗口&#xff0c;新建一个FreeLook Camera&#xff0c;如下。 接着新建一个对象Pos&#xff0c;拖到Player下面…

ubuntu直接运行arm环境qemu-arm-static

qemu-arm-static 嵌入式开发有时会在ARM设备上使用ubuntu文件系统。开发者常常会面临这样一个问题&#xff0c;想预先交叉编译并安装一些应用程序&#xff0c;但是交叉编译的环境配置以及依赖包的安装十分繁琐&#xff0c;并且容易出错。想直接在目标板上进行编译和安装&#x…

css三角图标

案例三角&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><s…

每日 Java 面试题分享【第 19 天】

欢迎来到每日 Java 面试题分享栏目&#xff01; 订阅专栏&#xff0c;不错过每一天的练习 今日分享 3 道面试题目&#xff01; 评论区复述一遍印象更深刻噢~ 目录 问题一&#xff1a;Java Object 类中有什么方法&#xff0c;有什么作用&#xff1f;问题二&#xff1a;Java …

Rust 控制流语法详解

Rust 控制流语法详解 控制流是编程语言中用于控制代码执行顺序的重要机制。Rust 提供了多种控制流语法&#xff0c;包括条件判断&#xff08;if、else if&#xff09;、循环&#xff08;loop、while、for&#xff09;等。本文将详细介绍这些语法&#xff0c;并通过示例展示它们…

ARM嵌入式学习--第十二天(WDOG,RTC)

--WDOG -介绍 WatchDog是为了能够防止程序跑飞而使用的一种硬件模块&#xff0c;如果你的程序没有跑飞&#xff0c;那么你的程序会定时的去喂看门狗&#xff1b;如果你的程序跑飞了&#xff0c;那么就不会再去喂狗了&#xff0c;如果超过了喂狗时间&#xff0c;那么狗就会自己…

人工智能学习(四)之机器学习基本概念

机器学习基本概念详细解析&#xff1a;从生活实例轻松入门 在当今数字化时代&#xff0c;机器学习作为人工智能领域的核心技术之一&#xff0c;正深刻地改变着我们的生活和工作方式。从智能语音助手到图像识别系统&#xff0c;从个性化推荐引擎到自动驾驶汽车&#xff0c;机器…