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/,显示如下界面代表安装成功
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组件之间的关系
虚似目录的映射方式
方式一:(不建议使用。因为需要重新启动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)
通常情况下,静态资源需要缓存,缓存后直接从客户端获取资源,减轻服务器工作压力。动态资源不需要缓存,要求每次访问都从服务器获取资源,提高用户体验。