javaweb-HTTP协议(服务器数据的接收、处理、响应流程)详解

本文详细介绍了HTTP协议的工作原理,包括请求和响应的构成。讲解了HTTP请求的两种方式(GET和POST)及其区别,重点阐述了在服务器端如何使用HttpServletRequest接收、处理请求数据,以及如何通过HttpServletResponse进行响应。文中提到了Tomcat服务器在处理请求过程中的作用,并讨论了数据编码与解码问题。
摘要由CSDN通过智能技术生成

HTTP协议

● 什么是HTTP协议? 超文本传输协议(Hypertext Transfer Protocol)服务器传输超文本到本地浏览器的传送协议,是互联网上应用最为流行的一种网络协议,用于定义客户端浏览器和服务器之间交换数据的过程

● HTTP是基于TCP/IP通信协议来传送数据

● HTTP是属于引用层的协议,由于棋简捷、快速的方式、适用于分布式超媒体信息系统

HTTP请求

客户端连上服务器后,向服务器请求某个web资源,称之为客户端向服务器发送一个http请求。

就是从浏览器中以超链接,表单等向服务器发送的请求都称为http请求。

请求包括:请求行,请求头,(这两部分会自动发送) 请求体。

请求行:http请求方式,请求资源名称,http版本(例如post、post、text.jsp、HTTP/1.1)

请求头:服务器端和客户端的一些信息格式为键值对。

请求体:是指表单post方式请求时,向服务器端发送的数据

请求头包含主机地址,以及客户端的一些环境信息,以键值对的形 式传递.

Host: 127.0.0.1:8088 请求的主机地址
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,/;q=0.8 浏览器能够处理的内容类型
Accept-Encoding: gzip, deflate, br 浏览器能够处理的压缩编码
Accept-Language: zh-CN,zh;q=0.9 浏览器当前设置的语言
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36 使用的浏览器和操作平台信息
Connection: keep-alive 浏览器与服务器之间连接的类型

请求体代表着浏览器在post请求方式中传递给服务器的参数,请求体中参数以 键值形式传递, 多个用&链接,服务器接收到后再解析. username=admin&userpwd=123

两种HTTP请求方式

get(获得):从服务器端获取数据,在地址栏会显示发送的数据,但是一般有以下状况
1、不安全
2、传输的数据大小受限制 一般浏览器的大小为2-5kb
● 以超链接访问,默认是GET方式
● form提交,不指定method,默认为GET方式

post(发送):向服务器端发送数据,向服务器端发送数据,发送的数据是在请求体当中,安全(相对安全),大小不受限制
● form提交,指定method=“post”

get/post的区别

● get方式主要是从服务器获取信息;post主要是向服务器提交信息
● get方式在通过URL提交数据,数据在URL中可以看到;POST方式,数据是放置在请求体中提交。
● get方式提交的数据大小受限制一般都很小(不同浏览器也会有不同);而 post则没有此限制。

在父类的service中写了一个判断 get---->doGet、post----->doPost
在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>我的第一个web程序</title>
</head>
<body>
<a href="demourl">列表</a>
<form action="demourl" method="post">
    账号:<input type="text">
    密码:<input type="password">
    <input type="submit" value="保存">
</form>
</body>
</html>
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <servlet>
        <servlet-name>demo</servlet-name>
        <servlet-class>com.student.firstweb.servlet.Demo1Servlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>demo</servlet-name>
        <url-pattern>/demourl</url-pattern>
        <!--前端点击的连接就是与这个做连接相对应-->
    </servlet-mapping>
</web-app>
package com.student.firstweb.servlet;

import javax.servlet
  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是一个使用HTTP协议实现大媒体在线播放的JavaWeb代码示例: ```java import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.FileInputStream; import java.io.IOException; import java.io.OutputStream; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class MediaServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String fileName = request.getParameter("file"); String filePath = "/path/to/media/" + fileName; FileInputStream fileInputStream = new FileInputStream(filePath); BufferedInputStream bufferedInputStream = new BufferedInputStream(fileInputStream); OutputStream outputStream = response.getOutputStream(); BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(outputStream); response.setContentType("video/mp4"); response.setHeader("Content-Disposition", "inline; filename=" + fileName); byte[] buffer = new byte[8192]; int length; while ((length = bufferedInputStream.read(buffer)) > 0) { bufferedOutputStream.write(buffer, 0, length); } bufferedOutputStream.flush(); bufferedOutputStream.close(); bufferedInputStream.close(); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } } ``` 在上面的示例中,我们创建了一个名为 `MediaServlet` 的 servlet,用于处理客户端请求并提供视频文件的流式传输。当客户端请求该 servlet 时,servlet 会读取请求参数中指定的视频文件,并将其作为 HTTP 响应的一部分传输回客户端。在响应头中设置了 `Content-Type` 和 `Content-Disposition`,以便告知客户端响应的文件类型和文件名。 请注意,上述代码示例中的 `/path/to/media/` 应该被替换为实际存储视频文件的路径。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值