JavaWeb总结(一)
在学习Web应用程序客户端界面设计时,我们已经知道组成一个基本的Web应用程序需要Web服务器、Web客户端浏览器、HTTP协议以及静态HTML文件。
Web服务器:接收客户端请求,然后向客户端返回一些结果;
浏览器:允许用户请求服务器上的某个资源,并且向用户显示请求的结果;
HTML:告诉用户浏览器怎么向用户显示内容;
HTTP:Web上客户端和服务器之间通信所用的协议;
HTTP
HTTP是一种超文本传送协议(HyperText Transfer Protocol),是一套计算机在网络中通信的一种规则。在TCP/IP体系结构中,HTTP属于应用层协议,位于TCP/IP协议的顶层。HTTP是一种无状态的协议(在Web浏览器[客户端]和Web服务器之间不需要建立持久的链接)。整个过程就是当一个客户端向服务器发送一个请求(Request),然后WEB服务器返回一个响应(Response)。之后链接就关闭了。HTTP遵循请求/响应(Request/Response)模型的,所有的通信交互都被构造在一套请求和响应模型中。
HTTP定义的事务处理由以下四个步骤组成
客户端和Web服务器建立链接;
客户端发送HTTP请求;
服务器端接收客户端的HTTP请求,生成HTTP响应回发;
客户端和Web服务器建立链接;

发送请求信息
一旦建立了TCP链接,Web浏览器就会向Web服务器发送请求命令。HTTP协议将来自于客户端的请求信息封装成HTTP请求,它包括请求行、请求头、消息体以及分隔请求头和消息体的空行;
请求行:请求行是一个ASCII文本行,由三个标记组成:请求的HTTP方法、请求的URL、HTTP版本。中间用空格分开
在HTTP版本1.1中,定义了有八种可能的HTTP请求方法

Ⅰ GET:由于向服务器检索资源;
Ⅱ POST:由于向服务器发送数据,并要求指定的URL处理;
Ⅲ HEAD:与GET方法相同,服务器只返回状态行和头标,并不返回请求文档;
Ⅳ PUT:请求服务器保存请求数据作为指定URL新内容;
Ⅴ DELETE:请求服务器删除URL中命名的资源;
Ⅵ OPTIONS:请求关于服务器支持的请求方法信息;
Ⅶ CONNECT:已文档化但当前未实现的一个方法,预留做隧道处理;
在这些方法中,我们最常用的是GET和POST方法,其它几种方法对于Web开发者来说不是很常用。
|
方法 |
为该方法为该方法的请求 |
|
POST |
在浏览器地址栏输入URL; |
|
GETGET |
通常被用于发送私密信息或者大量信息,或者上传文件。如果一个应用程序需要修改数据或者添加数据,并且通过HTTP发送请求,那么就应该使用POST方法。 |
请求头:
HTTP协议使用HTTP头来传递请求的元信息,HTTP头是一个用冒号分隔的名称/值对,冒号前面是HTTP头的名称,后面是HTTP的值。常见的请求头由用户代理资料、可以接受的格式、语言以及内容编码,这些信息用于告诉服务器客户端是什么,客户端想要得到什么格式的回馈信息等。
空行:
发送回车符和退行,通知服务器一下不再有请求头。
消息体:
HTTP请求中带有查询字符串时,如果是GET方法,查询字符串或表单数据附加在请求行中,那么消息体中就没有内容;如果是POST方法,查询字符串或表单数据就添加在消息体中。
回送响应消息
Web服务器解析请求,定位并读取指定的资源。将文件以及其它信息组成HTTP响应返回到客户端。HTTP响应包括:状态行、响应头、消息体以及分隔消息头和响应头的一个空行。
状态行:
每个HTTP响应以一个状态行开头。状态行由HTTP协议版本、响应状态码和响应描述组成,三者之间用空格分开。
响应状态码是一个三位的数字,它分为以下几个组:
Ⅰ 100~199:信息,请求收到,继续处理;
Ⅱ 200~299:成功,行为被成功地接受、理解和采纳;
Ⅲ 300~399:重定向,为了完成请求,必须进一步执行的动作;
Ⅳ 400~499:客户端错误,请求包含语法错误或者请求无法实现;
Ⅴ 500~599:服务器错误,服务器不能实现一种明显的无效请求;
每一个响应状态码都有相关联的字符串响应描述。
响应头:
响应头与请求头一样,也是一个用冒号分隔的名称/值对,冒号前面是HTTP头的名称,后面是HTTP头的值。典型的响应头包括内容描述、内容长度、时间邮戳、服务器信息、内容最后更改的时间。这些信息帮助客户端得到发送过来的内容是什么、内容的大小、数据是否比以前一次响应更新。
在响应头中,最重要的HTTP头是Content-Type,它指定MIME类型。MIME类型告诉浏览器要接受的数据是什么类型,这样浏览器才知道如何显示这些数据。这个值通常与HTTP请求头中的Accept相关
空白行:
最后一个响应头之后是一个空行,发送回车符和退行,表明以下不再有响应头。
消息体:
要发送给客户端的HTML文档或其他要显示的内容等。Web服务器把发送给客户端的文档信息放在消息体中。
关闭连接
HTTP响应到达客户端后,浏览器先解析HTTP响应中的状态行,查看请求是否成功的状态代码。然后解析每一个响应头,读取响应消息体,将消息体渲染在浏览器页面上。
一个HTML文档可能包含其它的需要被载入的资源,浏览器会识别,并对这些资源再进行额外的请求,这个过程可以一直循环到所有的数据都按照响应头标中规定的格式恢复到页面中。数据传送完毕,服务器关闭连接,即无状态协议。
JavaWeb总结(一)的更多相关文章
- 从啥也不会到可以胜任最基本的JavaWeb工作,推荐给新人的学习路线(二)
在上一节中,主要阐述了JavaScript方面的学习路线.先列举一下我朋友的经历,他去过培训机构,说是4个月后月薪过万,虽然他现在还未达到这个指标. 培训机构一般的套路是这样:先教JavaSE,什么都 ...
- JavaWeb——Servlet
一.基本概念 Servlet是运行在Web服务器上的小程序,通过http协议和客户端进行交互. 这里的客户端一般为浏览器,发送http请求(request)给服务器(如Tomcat).服务器接收到请求 ...
- JavaWeb——Listener
一.基本概念 JavaWeb里面的listener是通过观察者设计模式进行实现的.对于观察者模式,这里不做过多介绍,大概讲一下什么意思. 观察者模式又叫发布订阅模式或者监听器模式.在该模式中有两个角色 ...
- .JavaWeb文件上传和FileUpload组件使用
.JavaWeb文件上传 1.自定义上传 文件上传时的表单设计要符合文件提交的方式: 1.提交方式:post 2.表单中有文件上传的表单项:<input type="file" ...
- javaWeb应用打包
在Java中,使用"jar"命令来对将JavaWeb应用打包成一个War包,jar命令的用法如下:
- JavaWeb——tomcat安装及目录介绍
一.web web可以说,就是一套 请求->处理->响应 的流程.客户端使用浏览器(IE.FireFox等),通过网络(Network)连接到服务器上,使用HTTP协议发起请求(Reque ...
- 做JavaWeb开发不知Java集合类不如归家种地
Java作为面向对象语言对事物的体现都是以对象的形式,为了方便对多个对象的操作,就要对对象进行存储.但是使用数组存储对象方面具有一些弊端,而Java 集合就像一种容器,可以动态地把多个对象的引用放入容 ...
- JavaWeb基础学习体系与学习思路
对于JAVAWEB的学习,首先一定要明确的是学习整体框架和思路,要有一个把控.对于WEB,很多人认为是做网页,简单的把静态网页与JAVAWEB与网页设计一概而论. 拿起一本JS就开始无脑的学习,学了一 ...
- Eclipse下配置javaweb项目快速部署到tomcat
用惯了VS,再用Eclipse,完全有一种从自动挡到手动挡的感觉啊. 很多同学在Eclipse下开发web项目,每一次修改代码,看效果的时候都有右键项目->Run as -> Run on ...
- javaweb学习笔记之servlet01
一.Servlet概述 A servlet is a small Java program that runs within a Web server. Servlets receive and re ...
随机推荐
- .NET基础一
.NET FrameWork是用于Windows的新托管代码编程模型,它包含CLR(Common Language Runtime)以及BCL(Base CLass Library)构成. 一.CLR ...
- Error:Could not find com.android.tools.build:gradle:3.0.0
Error:Could not find com.android.tools.build:gradle:3.0.Searched in the following locations: file ...
- [翻译] LLSimpleCamera
LLSimpleCamera https://github.com/omergul123/LLSimpleCamera LLSimpleCamera is a library for creating ...
- October 1st 2017 Week 40th Sunday
It's only after we've lost everything that we're free to do anything. 只有我们失去了所有之后我们才能随心而为. After los ...
- 你的ABAP程序给佛祖开过光么?来试试Jerry这个小技巧
最近Jerry在忙一个项目,技术栈换成了nodejs平台,语言换成了JavaScript,因为赶项目进度,一直没时间更新公众号.感谢大家的支持,关注人数还是慢慢地增长到了3000. 今天我们来聊聊一个 ...
- Hibernate核心对象
1.Configuration Configuration 类负责管理Hibernate的配置信息.它包括如下内容: Hibernate运行的底层信息:数据库的URL.用户名.密码.JDBC驱动类,数 ...
- js实现svg图形转存为图片下载[转]
我们知道canvas画布可以很方便的js原生支持转为图片格式并下载,但是svg矢量图形则并没有这方面原生的支持.研究过HighChart的svg图形的图片下载机制,其实现原理大体是浏览器端收集SVG代 ...
- Linux配置CentOs7.4(网络连接处理)
说明:CentOS 7.0默认安装好之后是没有自动开启网络连接的! 进入登录界面 账号输入root 回车 再输入上面设置的root密码回车 系统登录成功 设置IP地址.网关DNS cd /etc/s ...
- BZOJ1189:[HNOI2007]紧急疏散EVACUATE(最大流,枚举)
Description 发生了火警,所有人员需要紧急疏散!假设每个房间是一个N M的矩形区域.每个格子如果是'.',那么表示这是一 块空地:如果是'X',那么表示这是一面墙,如果是'D',那么表示这是 ...
- 利用mpvue开发微信小程序
最近公司部门负责人提出需求需要开发一款微信小程序,由于本人之前是做前端开发的,对于小程序开发一窍不通,但是很多时候我们都是把不会做变成我会学.于是便在网上寻找小程序开发教程,相比于相生的小程序开发,本 ...