Java web 入门知识 及HTTP协议详解



Java  web  入门知识 及HTTP协议详解





WEB入门

WEB,在英语中web即表示网页的意思,它用于表示Internet主机上供外界访问的资源。

Internet上供外界访问的Web资源分为:

静态web资源(如html 页面):指web页面*人们浏览的数据始终是不变。静态网页,图片 avi等

动态web资源:指web页面*人们浏览的数据是由程序产生的,不同时间点访问web页面看到的内容各不相同。

静态web资源开发技术

Html

常用动态web资源开发技术:

JSP/Servlet、ASP、PHP等

在Java中,动态web资源开发技术统称为Javaweb.

WEB服务器

学习web开发,需要先安装一台web服务器,然后再在web服务器中开发相应的web资源,供用户使用浏览器访问。

常见WEB服务器

WebLogic

是BEA公司的产品,是目前应用最广泛的Web服务器,支持JavaEE规范,而且不断的完善以适应新的开发要求。

WebSphereAS

一种常用的Web服务器是IBM公司的支持JavaEE规范,

JBoss

大名鼎鼎的红帽的产品,原来属于开源组织JbossAS,后被红帽收购。支持JavaEE规范,免费。

Tomcat

在小型的应用系统或者有特殊需要的系统中,可以使用一个免费的Web服务器:Tomcat,该服务器支持全部JSP以及 Servlet规范

Tomcat简介

Tomcat是在SUN公司推出的小型Servlet/JSP调试工具的基础上发展起来的一个优秀的Servlet容器,Tomcat本身完全用Java语言编写。目前是Apache开源软件组织的一个软件项目,它的官方网址为http://tomcat.apache.org。得到了广大开源代码志愿者的大力支持,且可以和目前大部分的主流Web服务器(IIS、Apache服务器)一起工作,它运行稳定、可靠且高效。已成为目前开发企业JavaWeb应用的最佳Servlet容器选择之一。

我们后面的JavaWeb学习都是基于Tomcat服务器的

安装tomcat

Tomcat6本身是基于JDK1.5的应用程序,因此在安装和使用之前必须先行安装1.5及以上版本的JDK(JRE)

解压安装

Exe安装

双击 bin 目录下的 startup.bat 文件

输入 http://localhost:8080/,显示如下界面代表安装成功

Java  web  入门知识 及HTTP协议详解Java  web  入门知识 及HTTP协议详解

War包

所以的war包其实就是讲webapp文件夹下的各种各样文件全部打包成一个后缀名为war的文件

那么war包有什么好处呢?

是这个样子的。如果在tomcat启动的启动的情况下,将打包好的web项目直接拷贝到tomcat/webapp下后,刷新当前目录会发现.war文件自动解压了。给我们程序员带来方便。

Web项目目录含义例:

MyApp:应用名称

|---html\js\jpeg文件

|---css文件

|---WEB-INF(目录):必须有,此目录中的资源文件用户无法直接访问到。

|----classes:该目录存放编译后的class文件。

|----lib:该目录存放该应用需要的jar包。

|----web.xml:当前应用的配置文件。

Tomcat的组成结构

Tomcat本身由一系列可配置的组件构成,其中核心组件是Servelt容器组件,它是所有其他Tomcat组件的顶层容器。每个组件都可以在Tomcat安装目录/conf/server.xml文件中进行配置,每个Tomcat组件在server.xml文件中对应一种配置元素。以下用XML的形式展示了各种Tomcat组件之间的关系

虚似目录的映射方式

Java  web  入门知识 及HTTP协议详解

方式一:(不建议使用。因为需要重新启动Tomcat才会生效)

在server.xml的Host元素内部配置如下内容

<Context path="/abc" docBase="E:\MyApp"/>   path:虚拟目录的名称,一般以/开头。docBase:真实应用所在的目录

方式二:(建议使用.因为不需要重启,比较方便,如果百度公司重启服务器就完蛋了)

在Tomcat\conf\[enginname]\[hostname]\xml配置文件

该配置文件的主文件名就是应用的虚拟目录名称。内容如下:

<Context docBase="E:\MyApp"/>

说明:

[enginename]:表示<Engine>的name属性

[hostname]:表示<Host>的name属性。

配置虚拟主机

2.2配置虚拟主机:server.xml的Host元素

a、按照课堂的doc文档,建立对应的目录结构

b、修改Tomcat\conf\server.xml,添加以下内容:

</Host>

<Host name="www.itheima.com"  appBase="heimaapps"

unpackWARs="true" autoDeploy="true"

xmlValidation="false" xmlNamespaceAware="false"/>

<Host name="www.itcast.cn"  appBase="itcastapps"

unpackWARs="true" autoDeploy="true"

xmlValidation="false" xmlNamespaceAware="false"/>

c、修改系统C:\Windows\System32\drivers\etc\hosts,添加以下内容

127.0.0.1       www.itheima.com

127.0.0.1       www.itcast.cn

HTTP协议详解:

HTTP协议

基本概念:

HTTP协议规定Web浏览器与Web服务器之间交换数据的过程及数据本身的格式。现有HTTP/1.0和HTTP/1.1两个版本。

HTTP/1.0版本:无状态协议。连接--->请求--->相应--->关闭,每次连接只能处理一次请求和相应。

HTTP/1.1版本:有状态协议,一次连接基础上可以发出多次请求和相应。在一次连接上可以处理多个请求和响应,多个请求和响应的过程是重叠的。同时也增加了多个的头。

注意:

当浏览器解析一个html文件时由连接或者超链接时,HTTP/1.0需要再次发起一次连接,而HTTP/1.1只需要发起一次连接,发起2次请求。

拓展:

常用协议的端口:

协议

指定端口

http

80

smtp

25

pop3

110

ftp

23

https

443

HTTP协议的组成:

请求部分

请求行:1.请求方式 2.访问资源的虚拟目录3.使用的协议

请求消息头

请求正文

响应部分

响应行:1.使用的协议 2.响应码 3.响应码描述

响应消息头

响应正文

请求部分:

GET /books/java.html HTTP/1.1

1.请求行:位于请求信息的第一行,包含:

(1)请求方式:常用的是GET和POST请求方式。

GET:默认请求方式。请求参数会出现在地址栏上,不安全。长度也有限制1Kb的大小范围内。

POST(建议使用):提交form表单,请求参数会出现在请求正文部分,较安全,也没有大小限制要求。

(2)请求资源路径:就是浏览器上输入的地址上主机端口后面的内容。

(3)使用的协议:使用HTTP/1.1版本

Accept: */*

Accept-Language: en-us

Connection: Keep-Alive

Host: localhost

Referer: http://localhost/links.asp

User-Agent: Mozilla/4.0

Accept-Encoding: gzip, deflate

2.请求消息头:

从第二行开始,到第一个空行,都是请求消息头部分。

每行都是一个消息头,由消息头名称和消息头取值组成,用冒号分隔,每个消息头可以有多个取值,用逗号隔开.

常用请求头详解:

(1)Accept:通知服务端,浏览器可接受的MIME类型。(Tomcat\conf\web.xml记载着文件系统的文件扩展名和MIME类型的对应关系)MIME类型格式:大类型/小类型,如:text/html,*/*表示什么格式都支持。

(2)Accept-Charset: 浏览器通过这个头告诉服务器,它支持哪种字符集。

(3)Accept-Encoding:浏览器能够进行解压缩的数据压缩方式,比如gzip 压缩格式。

(4)Accept-Language:浏览器所希望的语言种类,当服务器能够提供一种以上的语言版本时要用到。 可以在浏览器中进行设置。

(5)Host:初始URL中的主机和端口 。如:localhost:8080

(6)Referer:包含一个URL,取值为,当前页面是由哪个页面过来的。防盗链和广告网站投放数量统计的应用。

(7)Content-Type:正文内容类型,只有表单时,且method为post时,效果等同于form表单的属性。例:Content-Type:application/x-www-form-rulencoded

(8)If-Modified-Since: Wed, 02 Feb 2011 12:04:56 GMT利用这个头与服务器的文件进行比对,如果一致,则从缓存中直接读取文件。

(9)User-Agent:浏览器类型.

(10)Content-Length:表示请求消息正文的长度

(11)Connection:表示是否需要持久连接。如果服务器看到这里的值为“Keep -Alive”,或者看到请求使用的是HTTP 1.1(HTTP/1.1默认进行持久连接 )就是持久保持连接。

(12)Date:Date: Mon, 22 Aug 2011 01:55:39 GMT请求时间GMT

(13)Cookie:会话消息头,这是最重要的请求头信息之一

3.请求正文

响应部分:

HTTP/1.1 200 OK

1.响应行:位于响应信息的第一行,包含:

(1)服务器使用的协议:HTTP/1.1

(2)响应码:

常用响应码

状状码

含义

100-199

表示成功接收请求,要求客户端继续提交下一次请求才能完成整个处理过程

200-299

表示成功接收请求并已完成整个处理过程

300-399

为完成请求,客户需进一步细化请求。例如,请求的资源已经移动一个新地址

400-499

客户端的请求有错误

500-599

服务器端出现错误

200(正常):表示一切正常

302/307(临时重定向):请求重定向,表示请求的内容已被临时存放到别处了。

304(未修改):未修改,表示客户机缓存的版本是是最新的,可以继续使用,无需再请求

404(找不到):服务器上不存在客户机请求的资源。

500(服务器内部错误):服务器端的程序发生错误。

(3)响应码描述:OK,NotModfied

2.响应消息头

Location: http://www.it315.org/index.jsp指示新的资源的位置

Server:apache tomcat指示服务器的类型

Content-Encoding: gzip服务器发送的数据采用的编码类型

Content-Length: 80 告诉浏览器正文的长度

Content-Language: zh-cn服务发送的文本的语言

Content-Type: text/html; charset=GB2312服务器发送的内容的MIME类型

Last-Modified: Tue, 11 Jul 2000 18:23:51 GMT文件的最后修改时间

Refresh: 1;url=http://www.it315.org指示客户端刷新频率。单位是秒

Content-Disposition: attachment; filename=aaa.zip指示客户端下载文件

Set-Cookie:SS=Q0=5Lb_nQ; path=/search服务器端发送的Cookie

Expires: -1

Cache-Control: no-cache (1.1)

Pragma: no-cache   (1.0)

Connection: close/Keep-Alive

Date: Tue, 11 Jul 2000 18:23:51 GMT

常用的响应头详解:

Location:指定新的资源地址。结合302或307响应码来使用,完成请求重定向。

实例代码:

respones.setStatus(302);

reapones.setHeader(“location”,“/MyApp/index.html”)

这样就重新访问一个新的Web资源。

Content-Encoding:指示服务器给客户端的响应正文是经过gzip压缩的。

Content-Length:指示响应正文的长度。

Content-Type:指示正文的MIME类型.(text/html;charset = UTF-8)

Refresh:定时刷新。单位为秒,默认刷新自己。

刷新别的资源:3;URL=/Myapp/1.html

Content-Disposition:指示客户端下载资源

下载指定的资源:attachment;filename = 1.jpg

Set-Cookie:会话技术有关

以下三个头控制资源不要缓冲:(浏览器默认自动缓存)

Expires:-1(控制缓冲时间,单位为毫秒,为-1就不缓存)

Cache-Control:no-cache(HTTP/1.1)

Pragma:no-cache(HTTP/1.0)

通常情况下,静态资源需要缓存,缓存后直接从客户端获取资源,减轻服务器工作压力。动态资源不需要缓存,要求每次访问都从服务器获取资源,提高用户体验。

上一篇:vue 基础: 组件


下一篇:Webpack 4教程 - 第四部分,使用SplitChunksPlugin分离代码