HTTP&Servlet

Http协议&Servlet

Http协议

  • 什么是协议

双方在通讯的时候,遵守的一种规范、规则。

  • http 协议

针对网络上的客户端与服务器端在执行http请求的时候,遵守的一种规范。其实就是规定了客户端在访问服务器端的时候,要带上哪些东西,服务器在返回数据的时候,也要带上什么东西

  • 版本
    • 1.0
      请求数据,服务器返回后,将会断开连接
    • 1.1
      请求数据,服务器返回后,连接还会保持。有一定的时间限制,如果有空着这个连接,那么后面会自己断掉

演示客户端如何与服务器端通讯

  1. 打开 tomcat 首页
  2. 在首页上找到 Example
  3. 选择 Servlets examples - - - > Request Parameters - - - > Excute 超链接
  4. 用 chrome 开发者工具查看抓包

Http请求数据解释

请求的数据里面包含三个部分的内容:请求行,请求头,请求体
在这里插入图片描述

  • 请求行
    在这里插入图片描述
    Post: 请求方式,以 post 去提交数据

    在这里插入图片描述
    请求的地址路径,就是要访问哪个地方。
    在这里插入图片描述
    什么版本

  • 请求头
    在这里插入图片描述
    Host:主机地址
    Connection:保持连接
    Content-Length:数据长度
    Cache-Control:对缓存的操作
    Content-Type:提交的数据类型。form表单
    User-Agent:用户代理,向服务器表明,当前来访的客户端信息
    Accept:客户端向服务器表示,我能支持什么类型的数据
    Referer:真正请求的地址路径,全路径
    Accept-Encoding:可以接收的压缩算法
    Accept-Language:支持语言格式

  • 请求体
    在这里插入图片描述
    即浏览器真正发送给服务器的数据,发送的数据呈现的是 key=value,如果存在多个数据,那么使用 &

Http响应数据解析

请求的数据里面包含三个部分的内容:响应行、请求头、请求体
在这里插入图片描述
…这里还有很多数据…

  • 响应行
    在这里插入图片描述
    协议版本,状态码(200代表成功,正常处理得到数据)
    404: Not Found
    500:服务器异常
    403:Forbidden
  • 响应头
    Content-Type:服务器返回给客户端的内容类型
    Content-Length:返回的数据长度
    Data:通讯的日期,响应的时间

Get和Post的区别

在这里插入图片描述

  1. 请求路径不同。post请求,在 url 后面不跟上任何的数据,Get 请求,在地址后面跟上数据
  2. 带上的数据不同,Post 请求会使用流的方式写数据,Get请求是在地址栏上跟数据
  3. 由于 post 请求使用流的方式写数据,所以一定需要一个 Content-Length 的头来说明数据长度有多少
  • post
    1.数据是以流的方式写过去,不会在地址栏上显示。现在一般提交数据到服务器使用的都是 post
    2.以流的方式写数据,数据没有大小限制
  • get
    1.会在地址栏后面拼接数据,所以有安全隐患。一般从服务器获取数据,并且客户端也不用提交上面数据的时候,可以使用 Get
    2.能够带的数据有限,1kb大小

Web资源

在 http 协议当中,规定了请求和响应双方,客户端和服务器端。与 web 相关的资源。
有两种分类

  • 静态资源
    • html
    • js/css
  • 动态资源
    • servlet/jsp

Servlet

其实就是一个 java 程序,运行在我们的 web 服务器上,用于接收和响应客户端的 http 请求。(tomcat其实就是 servlet的一个容器)
更多的是配合动态资源来做。当然静态资源也需要用到 servlet,只不过是 tomcat 里面已经定义好了一个 DefaultServlet

HelloServlet

  1. 得到一个 web 工程,要有一个服务器。
  2. 测试运行 web 工程
    1. 新建一个类,实现 Servlet接口
    2. 配置 Servlet,在WEB-INF- - - web.xml写上以下内容,用意:告诉服务器我们的应用有这么些个 servlet
	<!-- 向tomcat报告,我这个应用里面有这个servlet,名字叫做HelloServlet,具体路径是XXX -->	  
  <servlet>
  	<servlet-name>HelloServlet</servlet-name>
  	<servlet-class>servlet.HelloServlet</servlet-class>
  </servlet>

	<!-- 注册servlet的映射,servlet-name:找到上面注册的具体servlet,url:在地址栏上的path路径,path要以/打头 -->
  <servlet-mapping>
  	<servlet-name>HelloServlet</servlet-name>
  	<url-pattern>/a</url-pattern>
  </servlet-mapping>

执行过程

  1. 找到 tomcat 应用
  2. 找到项目
  3. 找 web.xml,然后在里面找到 url-pattern,有没有哪一个 pattern 的内容是 /a
  4. 找到 servlet-mapping 中的那个 servlet-name [HelloServlet]
  5. 找到上面定义的 servlet 元素中的 servlet-name 中的 [HelloServlet]
  6. 找到下面定义的 servlet-class 然后开始创建该类的实例
  7. 继而执行该 servlet 中的 service 方法

Servlet 的通用写法

Servlet(接口)
|
GenericServlet
|
HttpServlet(用于处理 http 的请求)

  1. 定义一个类,继承 HttpServlet 复写 doGet 和 doPost
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值