1. Web服务器
PC机器安装一个具有web服务的软件,称之为web服务器。
1.1 Web服务软件的作用
把本地的资源共享给外部访问。
1.2 常见的Web服务软件
(1)Tomcat::Apache组织提供一个免费的小型的服务器软件。支持Servlet和JSP规范。
(2)WebLogic:Bea公司的一个收费的大型的服务器软件,后被Oracle收购。支持EE的所有的规范
(3)WebSphere:IBM公司的一个收费的大型的服务器软件,支持EE的所有的规范。
(4)JBoss:是一个基于J2EE的开放源代码的应用服务器。JBoss是一个管理EJB的容器和服务器,JBoss核心服务不包括支持servlet/JSP的WEB容器,一般与Tomcat或Jetty绑定使用。
1.3 Tomcat概述
Tomcat服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。支持Servlet和JSP 规范,且最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现。
1.4 Tomcat目录结构
bin:脚本目录
启动脚本:startup.bat
停止脚本:shutdown.bat
conf:配置文件目录
核心配置文件:server.xml
用户权限配置文件:tomcat-users.xml
所有web项目默认配置文件:web.xml
lib:依赖库,tomcat和web项目中需要使用的jar包
logs:日志文件.
localhost_access_log.*.txt tomcat记录用户访问信息,星*表示时间。
例如:localhost_access_log.2016-02-28.txt
temp:临时文件目录,文件夹内内容可以任意删除。
webapps:默认情况下发布WEB项目所存放的目录。
work:tomcat处理JSP的工作目录。
1.5 启动和访问
tomcat解压目录/bin/startup.bat双击运行启动tomcat
1.6 web应用目录结构
在JavaEE规范中,WEB项目存在一定的目录结构,具体结构如下:
项目名称
|-----静态资源.HTML,CSS,JS
|-----WEB-INF
|----web.xml 当前WEB项目的核心配置,Servlet2.5必须有,3.0可省略。
|----lib 当前WEB项目所需要的第三方的jar的存放位置。
|----classes Java源码编译后生成class文件存放的位置。
1.7 部署JavaWeb应用到Tomcat服务器上
方式一:直接把应用拷贝到Tomcat\webapps目录中
方式二:把应用打成war包。
2.HTTP协议
2.1 HTTP协议概述
HTTP是HyperText Transfer Protocol(超文本传输协议)的简写,用于定义WEB浏览器与WEB服务器之间交换数据的过程及数据本身的格式。
2.2 HTTP请求与响应内容
2.3 HTTP请求内容分析
(1)请求行
GET http://localhost:8080/HTTP/index.html HTTP/1.1
#请求方式
常见的请求方式:
GET 请求获取Request-URI所标识的资源
POST 在Request-URI所标识的资源后附加新的数据
HEAD 请求获取由Request-URI所标识的资源的响应消息报头
PUT 请求服务器存储一个资源,并用Request-URI作为其标识
DELETE 请求服务器删除Request-URI所标识的资源
TRACE 请求服务器回送收到的请求信息,主要用于测试或诊断
CONNECT 保留将来使用
OPTIONS 请求查询服务器的性能,或者查询与资源相关的选项和需求
常用的请求方式:GET 和 POST
Get与Post请求的区别:
GET方式提交
a)地址栏(URI)会跟上参数数据。以?开头,多个参数之间以&分割。
b)GET提交参数数据有限制,不超过1KB。
c)GET方式不适合提交敏感密码。
d)注意:浏览器直接访问的请求,默认提交方式是GET方式
POST方式提交
a)参数不会跟着URI后面。参数而是跟在请求的实体内容中。没有?开头,多个参数之间以&分割。
b)POST提交的参数数据没有限制。
c)POST方式提交敏感数据。
#请求资源
URL: 统一资源定位符。http://localhost:8080/HTTP/index.html只能定位互联网资源。是URI 的子集。
URI: 统一资源标记符。/HTTP/index.html。用于标记任何资源。可以是本地文件系统,局域网的资源,可以是互联网。
#http协议版本
http1.0:当前浏览器客户端与服务器端建立连接之后,只能发送一次请求,一次请求之后连接关闭。
http1.1:当前浏览器客户端与服务器端建立连接之后,可以在一次连接中发送多次请求。(基本都使用1.1)
(2)请求头
Accept text/html,application/xhtml+xm…plication/xml;q=0.9,*/*;q=0.8 --浏览器接受的数据类型
Accept-Encoding gzip, deflate --浏览器接受的数据压缩格式
Accept-Language zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2 --浏览器接受的语言
Cache-Control max-age=0
Connection keep-alive -- 浏览器跟服务器连接状态。close: 连接关闭 keep-alive:保存连接
Host localhost:8080 --当前请求访问的目标地址
If-Modified-Since Mon, 19 Mar 2018 02:52:32 GMT --浏览器最后的缓存时间
Referer: --当前请求来自于哪里
Cookie: -- 浏览器保存的cookie信息
If-None-Match W/"2665-1521427952627"
Upgrade-Insecure-Requests 1
User-Agent Mozilla/5.0 (Windows NT 10.0; …)Gecko/20100101 Firefox/59.0 --浏览器类型
Accept:浏览器可接受的MIME类型告诉服务器客户端能接收什么样类型的文件。
Accept-Charset: 浏览器通过这个头告诉服务器,它支持哪种字符集
Accept-Encoding:浏览器能够进行解码的数据编码方式,比如gzip
Accept-Language:浏览器所希望的语言种类,当服务器能够提供一种以上的语言版本时要用到。可以在浏览器中进行设置。
Host:初始URL中的主机和端口
Referrer:包含一个URL,用户从该URL代表的页面出发访问当前请求的页面
Content-Type:内容类型,告诉服务器浏览器传输数据的MIME类型,文件传输的类型
If-Modified-Since: Wed, 02 Feb 2011 12:04:56 GMT利用这个头与服务器的文件进行比对,如果一致,则从缓存中直接读取文件。
User-Agent:浏览器类型.
Content-Length:表示请求消息正文的长度
Connection:表示是否需要持久连接。如果服务器看到这里的值为“Keep -Alive”,或者看到请求使用的是HTTP 1.1(HTTP 1.1默认进行持久连接)
Cookie:这是最重要的请求头信息之一 (在讲会话时解析)
Date:请求时间GMT
(3)请求内容
当请求方式是POST方式时,才能看见消息正文
如:uName=tom&pwd=123
2.4 HTTP响应内容分析
HTTP/1.1200 OK --响应行
Accept-Ranges bytes --响应头
Content-Length 145
Content-Type text/html
Date Mon, 19 Mar 2018 02:55:40 GMT
ETag W/"145-1521428128560"
Last-Modified Mon, 19 Mar 2018 02:55:28 GMT
Server Apache-Coyote/1.1
(1)响应行
第一行: HTTP/1.1 200 OK
协议/版本 响应状态码 对响应码的描述(一切正常)
状态代码有三位数字组成,第一个数字定义了响应的类别,且有五种可能取值:
1xx:指示信息--表示请求已接收,继续处理
2xx:成功--表示请求已被成功接收、理解、接受
3xx:重定向--要完成请求必须进行更进一步的操作
4xx:客户端错误--请求有语法错误或请求无法实现
5xx:服务器端错误--服务器未能实现合法的请求
常见响应状态码:
200(正常) 一切正常
302/307(临时重定向)
304(未修改)表示客户机缓存的版本是最新的,客户机可以继续使用它,无需到服务器请求。
404(找不到) 服务器上不存在客户机所请求的资源。
500(服务器内部错误)
(2)响应消息头
Location: 指示新的资源的位置,通常和302/307一起使用,完成请求重定向
Server:apachetomcat指示服务器的类型
Content-Encoding: gzip服务器发送的数据采用的编码类型
Content-Length:145 告诉浏览器正文的长度
Content-Language:zh-cn服务发送的文本的语言
Content-Type: text/html 服务器发送的内容的MIME类型
Last-Modified: 9Mar 2018 02:55:28 GMT文件的最后修改时间
Refresh: 1指示客户端刷新频率。单位是秒
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: 19Mar 2018 02:55:40 GMT
(3)响应正文
和网页右键“查看源码”看到的内容一样。