javaweb入门(4)-- 详细了解http协议2

Mac用户必备:FORK Git客户端从安装到SSH Key配置全攻略(2023最新版) 本文为Mac开发者提供2023年最新版FORK Git客户端的完整配置指南。详细介绍了从官网下载安装、核心界面解析,到关键的SSH Key生成与GitHub配置全流程,确保安全高效的身份认证。同时涵盖克隆仓库、可视化提交、分支管理等核心工作流实战,帮助用户提升代码管理效率。 阅读详情

http://blog.youkuaiyun.com/java4found/article/details/8702827 介绍了http请求与http响应的基本格式,并用java实现模拟浏览器向互联网的某台服务器发送http请求,并且接收服务端回送的http响应。

http请求详解:

     1、请求行:

          GET / HTTP/1.1 

               请求行共分三个部分:

                    请求方式、请求资源路径和http请求的协议版本。

                         请求方式:主要为GET方式和POST方式,在浏览器直接输地址访问,点击超链接等行为都是GET方式。表单提交:如提交问卷,提交注册,提交登陆等等,为POST方式。

                                    GET提交在URL地址以?的形式带上交给服务器的数据,多个数据通过&来进行分隔。

                                    如:http://www.xxx.com?username=java&password=java4fun

                                    POST提交则以实体数据的方式向服务器提交数据。

                     请求路径:即指定访问资源的路径。

                     请求协议版本:HTTP/1.0  与  HTTP/1.1

                                    两者的区别在于:http/1.0获取资源后马上断开连接,http/1.1会保持连接。

 
     2、请求头: 通过请求头,可以告诉服务器客户机要访问的主机名,浏览器的基本信息,所支持的数据格式等等,以下是常用http请求头的作用。
                     1、Accept:告诉服务器客户机支持的文件类型, */*全部都支持
                     2、Accept-Charset:客户机所采用的编码。
                     3、Accept-Encoding:客户机支持的数据的压缩格式
                     4、Accept-Language:客户机的语言环境。
                     5、Host:客户机的想访问的主机名.
                     6、If-Modified-Since:资源缓存时间。
                     7、Referer:客户机通过这个头告诉服务器从哪个资源来访问服务器(防盗链)
                     8、User-Agent:客户机的软件环境.
                     9、Cookie:通过这个请求向服务器带数据。
                     10、Connection:close/Keep-Alive通过这个头告诉服务器是保持连接。
                     11、Date:当前时间。

     3、实体数据: 向服务器提交一些数据.实体数据以请求头之间必定存在一个空行。

HTTP请求实例:
POST /user/servlet/LoginServlet HTTP/1.1
Accept: text/html, application/xhtml+xml, */*
Referer: http://localhost:8080/user/servlet/LoginUIServlet
Accept-Language: zh-CN
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
Host: localhost:8080
Content-Length: 31
Connection: Keep-Alive
Cache-Control: no-cache
Cookie: JSESSIONID=BD5764192057489439FB5A577A0AFAB0

username=java&password=java4fun

http响应详解:
     1、状态行:
           HTTP/1.1 200 OK
               状态行分三个部 分: HTTP版本号 状态码  原因叙述
                   HTTP版本号:HTTP/1.0或HTTP/1.1
                     状态码:表示服务器对请求数据的处理结果回馈,分五大类:
                              1、100~199,成功接收请求,要求客户端继续提交一次请求以完整个处理过程。
                              2、200~299,请求成功并完成处理过程。
                              3、300~399,完成请求,但请求需要进一步细化,
                                   例如请求的资源如果移动到了一个新的地址,服务器返回302状态码,表示让浏览器去请求另外一个地址的资源,服务器会将请求地址通过Location消息头返回。又如当浏览器中已经缓存了请求的资源,服务器会反馈307或者304状态吗,告诉浏览器直接拿缓存的资源即可。
                              4、400~499,客户端错误, 403(无访问权限),404(未找到该资源)
                              5、500~599,服务端出错。
                    原因叙述: 对处理结果的一个描述。

      2、多个响应头:服务器告知客户机,服务器的基本信息以及如何处理数据。
        Location:这个头配合302状态码使用。告诉客户机重定向至何处。
        Server:告诉浏览器服务器的类型。
        Content-Encoding,服务器通过这个头,告诉浏览器数据的压缩格式。
        Content-Length:数据的长度。
        Content-Type:告诉浏览器回送数据的类型及编码格式。  tomcat/conf/web.xml中有其对应的文件类型。
        Last-Modified:服务器通过这个头,告诉浏览器当前资源的缓存时间。
        Refresh:服务器通过这个头,告诉浏览器隔多长时间刷新一次。 
                     response.setHeader("refresh","3,url='http://baidu.com'");
        Content-Disposition:服务器通过这个头,告诉浏览器以下载方式打开数据。
                     response.setHeader("content-disposition","attachment;filename=love.jpg");
        Transfer-Encoding:服务器通过这个头告诉浏览器的传送格式。
        Range头的应用:断点续传功能。用于多线程下载技术。
                       多线程下载实例: http://blog.youkuaiyun.com/java4found/article/details/8661134

        ETag:缓存相关的头。   
                    通过这个头,可以告诉知道数据内容有无更改,来控制浏览器是否拿缓存页面。
        Expires:告诉浏览器把回送的资源缓存多长时间。-1或0,则是不缓存。
        Cache-Control:no-cache
        Pragma:no-cache;
        以上三个响应头都是控制浏览器是否对数据进行缓存,通常对时时性很高的数据,都要控制浏览器不进行缓存。

      2、实体数据:请求资源的数据,实体数据以响应头之间必定存在一个空行。

HTTP响应实例:
HTTP/1.1 200 OK
Content-Type: image/gif
ETag: "2082195828"
Accept-Ranges: bytes
Last-Modified: Tue, 18 Jan 2011 06:39:02 GMT
Expires: Fri, 28 Mar 2014 12:56:27 GMT
Cache-Control: max-age=31104000
Content-Length: 43
Date: Tue, 02 Apr 2013 12:56:27 GMT
Server: BWS/1.0

GIF89a@#$%^&*((*&^
http响应实体数据是经过服务器数据压缩处理的,所以我们无法读懂,浏览器会根据响应头的信息,去解析这些数据,最终反馈给用户。


          





Git具体使用 git操作 阅读详情

相关推荐

Gitee 代码提交贡献度无绿点:3 种常见原因排查与修复方案

本文详细解析了Gitee代码提交后贡献度绿点缺失的三大常见原因:邮箱配置不匹配、时间窗口差异和Fork仓库问题。针对每种情况提供了具体的诊断方法和修复方案,包括修改Git邮箱配置、同步系统时间以及正确处理Fork仓库提交等实用技巧,帮助开发者确保代码贡献被准确统计。

weixin_27734811的博客 286

Git与GitHub核心区别解析:从本地版本控制到开源协作实战

版本控制系统是软件开发中管理代码变更的核心工具,其原理在于记录文件的历史状态,实现代码的追踪、回溯与并行开发。这项技术为团队协作与项目管理提供了坚实基础,广泛应用于开源项目、企业研发及个人知识管理等领域。在众多版本控制工具中,Git以其分布式架构和高效分支模型成为行业标准。而基于Git构建的在线平台,如GitHub,则将本地版本控制能力扩展至云端协作与代码托管。本文聚焦于厘清Git(本地版本控制工具)与GitHub(基于Git的托管服务平台)的核心区别与协作流程,通过解析**提交(Commit)**、**拉

weixin_42522669的博客 270

git pull原理与实战:从命令到协作规范

Git pull 是分布式版本控制中实现多人协同开发的基础操作,其本质是 fetch 与 merge/rebase 的组合动作,遵循 Git 对象模型与引用机制。理解其底层原理有助于规避合并冲突、历史污染和同步错位等常见问题。技术价值体现在保障协作意图准确传递、历史可追溯、本地工作可控及团队节奏同步。典型应用场景包括日常代码同步、CI/CD 流水线触发、跨团队开源贡献及高可靠性系统发布。本文深入解析 git pull 的非原子性、--rebase 与 --no-commit 的工程意义,并提供可落地的配置策

weixin_33696822的博客 451

GitHub新手入门全流程:从零到协作开发的完整指南

版本控制是现代软件开发的基础,它通过记录代码变更历史、管理分支合并,解决了团队协作中的代码冲突与版本混乱问题。Git作为分布式版本控制系统,其核心价值在于实现高效、安全的代码管理与协同开发。在实际工程实践中,开发者常借助GitHub等平台进行代码托管与开源协作。本文聚焦于GitHub的核心使用流程,涵盖仓库创建、代码提交、分支管理等关键操作,并针对网络连接与配置问题提供解决方案,帮助初学者快速掌握这一必备技能。

weixin_34294649的博客 649

从零掌握Git:安装配置到提交Pull Request的全流程指南

版本控制系统是现代软件开发的基石,Git作为分布式版本控制的事实标准,解决了多人协作中代码追踪、历史回退与分支管理的核心难题。无论是个人项目管理还是参与开源社区贡献,提交Pull Request都是开发者绕不开的关键操作。本文从Git安装配置入手,详解SSH免密认证、本地仓库初始化、功能分支策略以及Fork-克隆-推送-合并请求的完整路径,并结合高频命令速查与真实踩坑案例,帮助开发者快速建立规范、高效、可追溯的版本控制工作流,从容应对开源协作中的各类场景。

weixin_31083901的博客 242

公共Git Forge实战:从安装配置到Pull Request的完整托管流程

版本控制是软件开发的基础,而Git作为最流行的分布式版本控制工具,负责在本地记录每一次代码变更。然而,真正支撑团队协作的,是建立在Git之上的代码托管平台,也称作Git Forge。它提供了远程仓库托管、分支管理、权限控制和代码评审等能力,将底层Git引擎转化为完整的协作环境,大幅降低了开发者自建Git服务的运维成本。无论是个人项目备份、开源贡献,还是企业级团队协作,专业的公共Git Forge都能帮助开发者将精力聚焦于代码本身。本文以Codefloe为例,从Git安装与SSH配置入手,完整演示仓库初始化、

weixin_33834137的博客 401

深入Godot文档仓库:从Sphinx构建到社区贡献全流程解析

技术文档是软件开发中不可或缺的组成部分,它不仅是知识的载体,更是项目协作与传承的基础。其构建原理通常基于静态站点生成器,通过将结构化的文本源文件转换为可浏览的网页,实现内容的自动化部署与版本化管理。在开源游戏引擎领域,Godot采用Sphinx与reStructuredText这一成熟技术栈,构建了一套支持国际化、与引擎源码紧密联动的文档系统。这套系统的技术价值在于,它通过严谨的工程化流程,将社区贡献高效地整合为权威知识,直接服务于“godot导出apk”、“godot优化”等高频开发需求。其应用场景覆盖了

weixin_34082854的博客 397

Obsidian + Git:用版本控制实现可追溯的知识协同

版本控制是软件开发中保障代码演进可审计、可回滚、可协作的核心机制;其原理在于记录每次变更的完整上下文,而非简单覆盖文件。将这一思想迁移到知识管理领域,能从根本上解决多端编辑冲突、协作丢失、历史不可查等痛点。Git 提供的分支管理、提交日志、差异比对与克隆能力,天然适配 Obsidian 纯文本笔记架构,使知识库具备工业级可靠性。典型应用场景包括跨设备同步、团队知识共建、模板与插件的版本化分发,以及基于 Git Hook 的自动化发布。当 `git clone` 成为知识获取起点,`fatal: not a

weixin_34337381的博客 604

利用GitHub高效学习Python:从项目实战到开源贡献的完整指南

在编程学习过程中,掌握如何通过真实项目提升工程能力是关键。GitHub作为全球最大的开源代码托管平台,不仅提供了海量的Python项目案例,更是一个学习工程规范、问题解决思路和技术演进轨迹的宝库。其核心价值在于将学习路径从传统的语法练习,转变为基于真实问题驱动的探索与实践。通过克隆项目、分析代码结构、深究核心逻辑以及参与Issue讨论,学习者能系统性地掌握Web开发、数据分析、自动化脚本等热门领域的应用技能。本文以Python环境配置、Git操作为基础,结合虚拟环境管理和依赖安装等工程实践,详细拆解了如何利

weixin_30855761的博客 393

基于RAG与GitCode的SOP:让AI准确引用品牌信息的6步实践

这次我们来看一个非常实用的技术实践:如何通过一套标准化的操作流程(SOP),让你的品牌信息被主流AI模型(如ChatGPT、Claude、文心一言等)在回答中准确引用。这不是一个理论概念,而是一个经过4次复测、基于3个GitCode仓库验证过的可执行方案。 很多开发者和品牌方都遇到过类似问题:当用户向AI询问你的产品、公司或技术方案时,AI的回答要么信息陈旧,要么干脆说“我没有相关信息”。这背后是AI模型训练数据更新延迟与公开信息获取渠道的问题。本文提供的SOP,核心就是利用RAG(检索增强生成)技术的思想

weixin_34014555的博客 420

历史版本管理:从核心原理到Git实战的协作基石

版本控制系统是现代软件开发和团队协作的基石,其核心在于追踪和管理文件的变化历史。其底层原理主要分为快照模型和差异模型,前者如Git,通过记录完整项目状态实现高效回溯;后者则存储版本间的变化量以节省空间。这项技术的核心价值在于为项目提供安全网,实现清晰的演进追踪,并成为并行协作与实验性开发的沙盒。在应用场景上,它广泛应用于代码管理、设计稿迭代、文档协作等需要持续演进的领域。本文聚焦于Git这一主流工具,深入探讨了其分支策略、提交规范以及合并与变基等核心实践,旨在帮助团队建立坚固的“时间防线”,提升协作效率与项

aibiba0894的博客 340

GitHub新手入门:7个实操动作建立协作直觉

GitHub本质上是基于Git的分布式版本控制系统可视化协作平台,其核心价值在于记录‘人与代码的关系’,而非简单代码托管。理解这一原理,才能跳出‘当网盘用’的认知误区,掌握分支管理、提交语义、远程同步等关键机制。技术价值体现在降低协作信任成本,支撑开源贡献、CI/CD自动化、文档协同等真实场景。本文聚焦零基础用户,通过创建仓库、推送代码、发起PR、提Issue、配置Actions、解冲突、用Codespaces等7个可立即执行的操作,将抽象概念转化为肌肉记忆,自然融入版本控制、开源协作、持续集成等关键词。

weixin_30673611的博客 389

从零开始:手把手教你将本地项目发布到GitHub

版本控制是软件开发中不可或缺的基础技能,而代码托管平台则让项目协作与展示变得前所未有的简单。Git作为分布式版本控制工具,负责记录每一次文件变更,GitHub则是基于Git的托管平台,为开源项目提供远程仓库与协作入口。理解仓库、提交、分支、远程仓库之间的关系,掌握SSH密钥配置,是安全推送代码的前提。规范的开源项目还需要完善的README文档、.gitignore忽略规则与License许可证,这些细节决定了项目的可读性与可维护性。从个人学习项目到求职作品集,从本地文件夹到GitHub仓库,这套流程广泛应用

weixin_30256901的博客 376

Git与GitHub实战:从零开始为CircuitPython开源项目贡献代码

版本控制系统是现代软件开发的基础设施,它通过记录代码的每一次变更,实现了多人协作与历史追溯。Git作为分布式版本控制系统的代表,其核心原理在于为每个开发者提供完整的仓库副本,通过分支(Branch)实现并行开发,再通过合并(Merge)或拉取请求(Pull Request)完成代码集成。这套机制的技术价值在于,它极大地降低了协作门槛,保障了项目主线的稳定性,是开源生态繁荣的基石。无论是修复Bug还是添加新功能,开发者都可以在独立分支上安全地进行实验。在嵌入式开发、物联网(IoT)以及像CircuitPyth

weixin_28741707的博客 526

Eclipse + Gitee实战:团队协作中如何优雅解决代码冲突与版本回退

本文详细介绍了在Eclipse与Gitee团队协作中如何高效解决代码冲突与版本回退问题。通过Git核心概念解析、Eclipse冲突解决流程、Gitee Pull Request管理以及版本回退技巧,帮助开发者掌握pull和commit操作中的关键技能,提升团队协作效率与代码质量。

weixin_30527323的博客 416

Vercel+GitHub个人网站部署全流程:从构建到上线

网站部署是将本地开发成果转化为真实可访问服务的关键环节,其本质涉及环境抽象、网络协议与运行时生命周期管理。现代前端部署已从传统服务器运维转向边缘计算范式,Vercel 作为 Edge-as-a-Service 平台,通过自动框架识别、沙盒化构建和智能路由分发,大幅降低部署门槛。技术价值在于实现‘一次提交、全球生效’的确定性交付,支撑静态站点、SSG、SSR乃至边缘函数等多元应用形态。典型应用场景包括个人作品集、技术博客、原型验证站等轻量级 Web 项目。而 GitHub 不仅是代码托管平台,更作为可信源码中

weixin_33672400的博客 494

GitHub垃圾推送泛滥:64%事件流被污染,开发者如何应对?

在代码托管与开源协作领域,自动化脚本和API滥用正成为平台治理的新挑战。其核心原理是利用平台公开接口和社交属性,通过批量伪造账户与仓库操作,制造大量低质内容以获取曝光或SEO流量。这类行为的技术价值在于揭示了平台开放性与内容质量间的平衡难题,对开发者生态的实际影响则体现在项目发现效率降低、协作噪音增加及潜在安全风险。具体到应用场景,如GitHub这类主流代码托管平台,近期调查显示其公共事件流中高达64%的推送活动疑似来自名为“push-farm spam”的自动化垃圾网络。这直接关联到开发者的日常体验,使得

weixin_34232744的博客 444

GitHub热榜周榜项目评估指南:从star到代码质量的实操拆解

开源社区是技术创新的聚集地,而代码托管平台的热榜机制则为开发者提供了一扇观察技术趋势的窗口。许多开发者习惯以star数量衡量项目优劣,却忽视了榜单背后的算法逻辑与多维信号。理解热榜的周期差异、数据维度与项目活跃度指标,是进行技术选型与项目评估的基础。掌握从仓库元数据、README、Issue区的细节到提交频率的综合分析方法,能够帮助开发者识别真正有潜力的开源项目。在实际场景中,无论是将热榜项目用于学习参考、二次开发,还是贡献代码,遵循正确的评估框架与下载排障方法都能显著降低踩坑率。本文围绕GitHub热榜周

weixin_34232744的博客 207
上一篇: javaweb入门(1)--tomcat安装与测试
下一篇: javaweb入门(5)-- 详细了解http协议3
Sweeter
博客等级 码龄14年 81粉丝 41原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值