JavaWeb,XML、Tomcat、HTTP的学习

XML

XML具体不需要太深入,但是要知道它是什么,是干嘛用的。

xml作为配置文件,可以更好地存储一些信息

xml文件第一行一定是<?xml version="1.0" encoding="字符集"?>

根标签只能有一个

xml是有约束的,分为dtd约束和schema约束,dtd约束简单不细致,schema约束复杂细致。

xml文件举例:

<?xml version="1.0" encoding="UTF-8"?>
<students>
    <student id="01">
        <name>张三</name>
        <age>18</age>
    </student>
    <student id="02">
        <name>李四</name>
        <age>20</age>
    </student>
</students>

xml文件的语法与html类似,也是只有一个根标签,也是由元素组成,元素也是由标签+属性+文本组成,可以说,html就是有html语法约束的xml文件。

XML的解析(使用DOM4J)

XML不需要具体了解,大体看一下流程即可

package XML_leaning;

import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

import java.io.InputStream;
import java.util.List;

public class TestDom4j {
    public static void main(String[] args) throws DocumentException {
        //读取jdbc.xml配置文件,获得document对象
        SAXReader saxReader = new SAXReader();
        //通过类加载器获得指向字节码根路径下的指定文件的输入流
        InputStream resourceAsStream = TestDom4j.class.getClassLoader().getResourceAsStream("jdbc.xml");
        //通过输入流获得配置文件,解析成一个dom对象
        Document document = saxReader.read(resourceAsStream);
        //从domcument对象上获取配置文件中的信息
        Element rootElement = document.getRootElement();
        System.out.println(rootElement.getName());
        List<Element> elements = rootElement.elements();
        for (Element element : elements) {
            System.out.print("\\t" + element.getName());
            Attribute attribute = element.attribute("id");
            System.out.println(" " + attribute.getName() + "=" +  attribute.getValue());
            List<Element> elements1 = element.elements();
            for (Element element1 : elements1) {
                System.out.println("\\t\\t" + element1.getName() + ":" + element1.getText());
            }
        }
    }
}

 不需要特别搞懂,知道是配置文件,用来存储一些配置信息,作用类似于properties文件即可。

Tomcat

Tomcat是专门运行WEB应用软件的服务器软件

汤姆猫的知识点较少,大多数是操作的东西,有一个知识点叫WebAPP标准结构要知道:

WebAPP标准结构

  • app 本应用根目录
    • static 非必要目录,约定俗成的名字,一般在此处放静态资源 ( css js img)
    • WEB-INF 必要目录,必须叫WEB-INF,受保护的资源目录,浏览器通过url不可以直接访问的目录
      • classes 必要目录,src下源代码,配置文件,编译后会在该目录下,web项目中如果没有源码,则该目录不会出现
      • lib 必要目录,项目依赖的jar编译后会出现在该目录下,web项目要是没有依赖任何jar,则该目录不会出现
      • web.xml 必要文件,web项目的基本配置文件. 较新的版本中可以没有该文件
    • index.html 非必要文件,为默认的欢迎页

HTTP

HTTP 超文本传输协议 (HTTP-Hyper Text transfer protocol),是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它是一种详细规定了浏览器和万维网服务器之间互相通信的规则,通过因特网传送万维网文档的数据传送协议。客户端与服务端通信时传输的内容我们称之为报文HTTP协议就是规定报文的格式。HTTP就是一个通信规则,这个规则规定了客户端发送给服务器的报文格式,也规定了服务器发送给客户端的报文格式。实际我们要学习的就是这两种报文。客户端发送给服务器的称为"请求报文",服务器发送给客户端的称为"响应报文"

交互的方式和数据的格式

HTTP提供了客户端和服务端的交互的方式和数据的格式

交互的方式

请求:客户端向服务端发送

响应:服务端向客户端返回

数据的格式

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

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

报文

报文是有规定的格式:

  • 报文首部:
  • 报文主体

请求报文的格式对应称为请求行、请求头、请求体

响应报文的格式对应称为响应行、响应头、响应体

HTTP长链接和短链接

HTTP是一种应用层协议,规定的是报文的格式,但是不规定传输。

TCP是一种传输层协议,是面向连接的协议。而想要确定传输的实体,就要通过IP协议。

IP是一种网络层协议。

TCP连接的步骤为:创建连接(三次握手)—>关闭连接(四次挥手)

短链接即为在客户端向服务端发送请求时,每有一个资源需要向服务端发送连接,都进行一遍三次握手四次挥手,如果有n个资源需要向服务器端发送连接,就进行了n遍三次握手四次挥手

长连接即为在客户端向服务端发送请求时,先三次握手建立连接,获取到所有资源后才四次握手关闭连接,减少了TCP连接的次数

HTTP1.1时,增加了缓存机制,即一个资源获取到后会先缓存下来,如此重复获取此资源时,不用再重复请求。节省了带宽并使得响应速度也更快

请求和响应报文

报文的格式

报文分为报文首部和报文主体,报文首部和报文主体之间用空行隔开

报文首部

空行(CR+LF,即回车加换行)

报文主体

报文首部可以继续细分为 行 和 头

  • 报文首部
    • 请求行/状态行
    • 请求首部字段/响应首部字段
    • 通用首部字段
    • 实体首部字段
    • 其他

请求报文

客户端发给服务端的报文

  • 请求报文格式

    • 请求首行(请求行); GET/POST 资源路径?参数 HTTP/1.1
    • 请求头信息(请求头);
    • 空行;
    • 请求体;POST请求才有请求体

    GET请求方式会将参数放在地址栏上,不安全,且GET方式只能携带纯文本。POST请求方式将参数放在请求体,较为安全,且POST方式能携带所有内容。GET方式没有请求体。

响应报文

服务端发给客户端的报文

  • 响应报文格式
    • 响应首行(响应行); 协议/版本 状态码 状态码描述
    • 响应头信息(响应头);
    • 空行;
    • 响应体;

状态码

响应状态码:响应码告诉浏览器响应的结果。较有代表性的响应码:

  • 200: 请求成功,浏览器会把响应体内容(通常是html)显示在浏览器中;
  • 302: 重定向,当响应码为302时,表示服务器要求浏览器重新再发一个请求,服务器会发送一个响应头Location指定新请求的URL地址;
  • 304: 使用了本地缓存
  • 404: 请求的资源没有找到,说明客户端错误的请求了不存在的资源;
  • 405: 请求的方式不允许
  • 500: 请求资源找到了,但服务器内部出现了错误;

还有一些其他的状态码,我粘贴在下面,遇见时对照查找是哪种情况即可:

状态码状态码英文描述中文含义
1**
100Continue继续。客户端应继续其请求
101Switching Protocols切换协议。服务器根据客户端的请求切换协议。只能切换到更高级的协议,例如,切换到HTTP的新版本协议
2**
200OK请求成功。一般用于GET与POST请求
201Created已创建。成功请求并创建了新的资源
202Accepted已接受。已经接受请求,但未处理完成
203Non-Authoritative Information非授权信息。请求成功。但返回的meta信息不在原始的服务器,而是一个副本
204No Content无内容。服务器成功处理,但未返回内容。在未更新网页的情况下,可确保浏览器继续显示当前文档
205Reset Content重置内容。服务器处理成功,用户终端(例如:浏览器)应重置文档视图。可通过此返回码清除浏览器的表单域
206Partial Content部分内容。服务器成功处理了部分GET请求
3**
300Multiple Choices多种选择。请求的资源可包括多个位置,相应可返回一个资源特征与地址的列表用于用户终端(例如:浏览器)选择
301Moved Permanently永久移动。请求的资源已被永久的移动到新URI,返回信息会包括新的URI,浏览器会自动定向到新URI。今后任何新的请求都应使用新的URI代替
302Found临时移动。与301类似。但资源只是临时被移动。客户端应继续使用原有URI
303See Other查看其它地址。与301类似。使用GET和POST请求查看
304Not Modified未修改。所请求的资源未修改,服务器返回此状态码时,不会返回任何资源。客户端通常会缓存访问过的资源,通过提供一个头信息指出客户端希望只返回在指定日期之后修改的资源
305Use Proxy使用代理。所请求的资源必须通过代理访问
306Unused已经被废弃的HTTP状态码
307Temporary Redirect临时重定向。与302类似。使用GET请求重定向
4**
400Bad Request客户端请求的语法错误,服务器无法理解
401Unauthorized请求要求用户的身份认证
402Payment Required保留,将来使用
403Forbidden服务器理解请求客户端的请求,但是拒绝执行此请求
404Not Found服务器无法根据客户端的请求找到资源(网页)。通过此代码,网站设计人员可设置"您所请求的资源无法找到"的个性页面
405Method Not Allowed客户端请求中的方法被禁止
406Not Acceptable服务器无法根据客户端请求的内容特性完成请求
407Proxy Authentication Required请求要求代理的身份认证,与401类似,但请求者应当使用代理进行授权
408Request Time-out服务器等待客户端发送的请求时间过长,超时
409Conflict服务器完成客户端的 PUT 请求时可能返回此代码,服务器处理请求时发生了冲突
410Gone客户端请求的资源已经不存在。410不同于404,如果资源以前有现在被永久删除了可使用410代码,网站设计人员可通过301代码指定资源的新位置
411Length Required服务器无法处理客户端发送的不带Content-Length的请求信息
412Precondition Failed客户端请求信息的先决条件错误
413Request Entity Too Large由于请求的实体过大,服务器无法处理,因此拒绝请求。为防止客户端的连续请求,服务器可能会关闭连接。如果只是服务器暂时无法处理,则会包含一个Retry-After的响应信息
414Request-URI Too Large请求的URI过长(URI通常为网址),服务器无法处理
415Unsupported Media Type服务器无法处理请求附带的媒体格式
416Requested range not satisfiable客户端请求的范围无效
417Expectation Failed服务器无法满足Expect的请求头信息
5**
500Internal Server Error服务器内部错误,无法完成请求
501Not Implemented服务器不支持请求的功能,无法完成请求
502Bad Gateway作为网关或者代理工作的服务器尝试执行请求时,从远程服务器接收到了一个无效的响应
503Service Unavailable由于超载或系统维护,服务器暂时的无法处理客户端的请求。延时的长度可包含在服务器的Retry-After头信息中
504Gateway Time-out充当网关或代理的服务器,未及时从远端服务器获取请求
505HTTP Version not supported服务器不支持请求的HTTP协议的版本,无法完成处理

  • 24
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

二狗mao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值