• Servlet与HTTP介绍学习 糖不苦


    http介绍:http是一套规范,一种网络数据交互的标准协议,不同的语言,不同的数据想要实现合理的数据交互(例如:浏览器和服务器数据交互),就得按照他所规定的协议来,这样就会形成标准的(大家都认识的)数据交互。

    http交互流程:

      1.客户端和服务器建立起连接通道。

      2.客户端发送请求给服务器。

      3.服务器处理请求后将结果响应给客户端。

      4.客户端和服务器的连接通道关闭。http1.1会等待一段时间如果没有请求进来就会关闭。

    特点:

      1.数据结构:他是以键值对的形式描述数据结构的。

      2.无连接:一次请求一次响应,当本次请求得到响应时即本次数据交互结束(客户端和服务器断开连接)。在http1.1中请求处理完成响应后,客户端和服务器不会立即断开连接而是在等待一定时间后再断开,如果等待期间有请求过来那么等待时间会重新开始(延长)。

      3.无状态:第一次请求处理完成后,要发送第二次请求,但即使两次请求用的是相同的数据,在http中也是没有任何关系的,所以二次请求任然需要重复第一次的流程,http他是没有记忆功能的,所以哪怕两次请求一模一样,各自的请求还是要发送全部的请求数据,这就是无状态。

      4.http是基于TCP协议发送数据的,所谓TCP大概意思为:即两端连通以后再进行数据请求和数据响应。UDP:即连接和请求一起发送过去,不会等到双方连接通畅之后再进行,所以UDP协议不会保证数据一定发送到另一端,但效率比TCP要快。

    http请求格式:

      1.请求头内容: 请求方式(get、post...) 请求地址(https://i.cnblogs.com/EditPosts.aspx?opt=1) http协议(1.0/1.1)

      2.请求行、消息报头:这里面规范了服务器需要额外信息,一般浏览器会自动封装,如:能解析的数据格式等,客户端需要的Cookie数据。

      3.空行

      4.请求数据

    在实际请求中浏览器为了方便展示观看:会将上面请求格式中的内容给分开展示,像get请求会将请求数据带到请求地址后面。

    http响应格式:

      1.响应行:http版本 状态码 状态消息

      2.响应头:消息报头:服务器和浏览器之间的额外数据,例如:本次响应的消息类型...等等。

      3.空行

      4.响应实体:具体响应的数据。

    额外解释:

      1.消息报头:消息报头中的信息和请求头响应头中的信息,这些信息中主要说明本次数据交互所采的各个属性:例如本次数据的格式:xml/json...这些数据都是服务器和浏览器自动处理的不需要开发者关心,开发者只管将自己需要的数据添加进去即可:例如Cookie,服务器中对这些常用配置已经做了处理,而浏览器的各个厂商也对浏览器做了处理,所以程序员只需要关心请求数据和响应数据即可。

    上面对http的大概介绍就这么多,下面主要介绍Servlet:

    客户端向浏览器请求的流程:前端网页源码 -> 浏览器请求封装(主要是消息报头以及版本信息等) -> 服务器处理 -> 根据请求的不同(get post...) -> 分配到后端相应的接口逻辑中

    Servlet的请求流程: 网页请求 -> 服务器收到请求后寻找对应的Servlet -> 然后将请求信息以及要响应的信息封装成request response对象传入响应的Servlet对象的Service方法中去调用此方法。

    servlet:

    1.request作用域:一次请求一个数据作用域仅限本次请求所用到逻辑范围,但通过请求转发的方式可实现多个Servlet之间数据共享,一次请求,一次响应。

    2.Cookie:客户端数据存储技术,并用于请求自动携带,至于带什么,请求哪些路径时带,生命周期等都是服务器设置的。然后由response对象通知客户端去执行具体的操作。

    3.重定向:response.sendRedirfect(uri),只能防止重复刷新重复请求,但是不能数据共享,如果将所有数据都放在Cookie中将不安全,而且也无法验证当前Cookie就是此人。

    4.session作用域:同一个对象请求多次数据共享。

    5.sessionContext作用域:不同对象请求多次数据共享。

    6.tomcat服务器下的web.xml文件中的全局变量将是所有服务器都共享的数据范围。

  • 相关阅读:
    获取滚动条卷入高度以及获取内联和外联的方法
    async
    使一个div元素上下左右居中
    .NetCore/ .NetFramework 机制
    Asp.netCore 是用的Socket 吗?
    Asp.netCore 的Startup 不继承接口
    月球
    JWT
    虚数的作用
    C# mailKit 发邮件 简单代码
  • 原文地址:https://www.cnblogs.com/wwyydd/p/14037707.html
Copyright © 2020-2023  润新知