tomcat HTTP

01_WEB服务器的概述


WEB
是网页的意思,表示可以通过网络访问的资源

WEB资源的分类
静态的WEB资源
HTML,CSS,JS等都是静态的WEB资源技术
数据内容始终不会变化
动态的WEB资源  邮箱  在线邮箱  账户  
Servlet,JSP,PHP,Python
数据内容由程序动态的生成而来

软件开发架构
B/S browser/server 浏览器端/服务器端
WEB版本的QQ 网游 页游 
JavaWeb
优点:不需要本地资源,服务一旦更新,他就跟着更新
缺点:所有的代码都在服务器,服务器的压力比较大

C/S client/server 客户端/服务器端
QQ exe
优点:运行速度快,效果炫,减少与服务器的交互
缺点:点用本地资源,服务器一旦更新,本地软件也要更新
趋势:BS AJAX可以将部分的代码嵌入到浏览器,减少服务器压力,而且现在的服务器性能不断提升,并且可以搭建服务器集群
  

服务器
硬件
一台性能较好的电脑
软件
WEB服务器,数据库服务器  jdbc规范
局域网  公网ip     

常用的WEB服务器
Nginx    静态的web服务器(静态网页) 反向代理服务
tomcat java中常用的动态web服务器 免费 支持servlet jsp规范  
weblogic Bea公司 支持所有的JavaEE的规范 收费
webspere IBM公司 支持所有的JavaEE的规范 收费的
apache 发布php项目的 LAMP(linux Apache mysql php)
iis 发布.net网站


02_Tomcat的安装及常见问题


安装注意:
启动Tomcat需要JRE,还需要配置JAVA_HOME环境变量
端口号如果被占用,则无法启动Tomcat


网站访问的过程

www: World Wide Web 世界宽域网,又称万维网,是因为网页诞生以来,涉及到很多网站网站的客户端,
为了能让它们全部共享而组建的一个主机客服端!现在已经没什么特殊意义了。有他没他都可以.

域名: 英文为Domain Name,是互联网上一个企业或机构的名字,是互联网上企事业间相互联系的地址。
就象我们门牌号码一样。域名的形式是以若干个英文字母和数字组成,由“.”分隔成几份。 
cctv.com    有限的  

DNS(Domain Name System,域名系统),万维网上作为域名和IP地址相互映射的一个分布式数据库,
能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。
通过域名,最终得到该域名对应的IP地址的过程叫做域名解析(或主机名解析)。


http 超文本传输协议  不提供任何方式的数据加密  
https 安全套接字超文本传输协议 在http基础做了一层加密 ssL  

03_Tomcat的目录结构
bin:可执行程序,可以启动关闭tomcat
conf:配置文件
lib:jar包
logs:日志文件
temp:临时目录
webapps:发布的web项目
work:存放的是JSP转换后的Java文件,和编译后的class文件


04_JavaWeb项目的目录结构
根目录
WEB资源 HTML,CSS,JS,JSP
WEB-INF    只要有动态的资源,必须要有这个目录
web.xml 整个项目的配置文件,Servlet2.5规范
classes class文件
lib jar包


05_发布WEB项目的方式
发布WEB项目至Tomcat根目录下的webapps目录
虚拟路径
            

06_使用Eclipse创建WEB项目并发布
实现步骤 :  
1,将Eclipse切换为JavaEE视图
2,创建Web项目(Dynamic Web Project)
3,在WEB-INF目录下创建index.html (内容随意)
4,在Java Resoures目录下创建任意的java文件
5,手动配置tomcat
1,Windown – Preferences – Server – Runtim Environments
2,Servers页签 – open – server locations
6,发布项目




07_Tomcat的细节
默认的端口号
80 如果WEB服务器使用的端口号是默认的80,访问该服务器可以不用输入端口号
server.xml
默认的项目
ROOT 如果项目的名称使用的是默认的ROOT,访问该项目可以不用输入项目的名称
默认的页面
welcome-file-list



01_HTTP协议概述
概述
是超文本传输协议,是TCP/IP协议的一个应用层协议,
用于定义客户端和服务器端传输交换数据的过程,以及定义了数据本身的格式。
版本
HTTP/1.0  一次请求一次响应     建立 3次握手  你好吗  我很好 段  3次握手  你吃了 我吃了 段
HTTP/1.1  一次请求多次响应       交流   断开


02_HTTP协议的请求详解
请求行
GET /subject/schools/index.shtml HTTP/1.1
请求方式 资源地址 HTTP协议版本
请求头
主机名
Host: www.itcast.cn
连接方式
Connection: keep-alive
控制缓存
Cache-Control: max-age=0
浏览器支持的版本
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36
浏览器支持的类型格式
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,**;q=0.8
浏览器支持的解码格式
Accept-Encoding: gzip, deflate
浏览器支持的语言
Accept-Language: zh-CN,zh;q=0.8
请求体
username=zhangsan
注意:POST请求方式才有请求体



03_HTTP协议的响应详解
响应行
HTTP/1.1 200 OK
HTTP协议的版本 响应码/状态码
响应码
200 ok,响应成功
304 未更新,缓存是最新的版本
404 not found,找不到资源
500 服务器端出现了异常
响应头
响应的时间
Date: Thu, 28 Sep 2017 14:47:44 GMT
WEB服务器的版本
Server: Apache/2.4.23 (Win64) OpenSSL/1.0.2h PHP/5.6.28
服务器端支持范围(部分)请求
Accept-Ranges: bytes
连接的超时时间,和连接的允许最大请求数量
Keep-Alive: timeout=5, max=100
连接的方式
Connection: Keep-Alive
不明确响应体的大小
Transfer-Encoding: chunked
响应体的类型
Content-Type: text/html
响应体

一,Tomcat的目录结构
bin  启动关闭的命令
conf 配置文件
lib  启动的时候加载jar
logs 日志文件
temp 临时文件
webapps 发布web项目的目录
work jsp转换成的java文件,和编译之后class文件



【WEB动态资源目录结构】
website
|-----静态资源
|-----WEB-INF
                |-----web.xml :必须的
                |-----classes :可选的
                |-----lib :可选的

二,发布WEB项目的方式
方式一: 直接将项目拷贝到webapps下面
方式二: 配置虚拟路径
虚拟路径: 将硬盘上某个路径(项目)起一个别名,然后就可以直接访问别名
修改Tomcat的核心配置文件(server.xml)

<Context path="/kaka" docBase="c:/aa"></Context>
//即/heima这个虚拟路径映射到了c:/aa目录下,修改完以后要重启tomcat服务器
通俗讲就是我们把项目放在任何位置只要只要在docBase中配置了项目路径,并且我们给路径定义一个虚拟的路径/kaka ,
我们访问项目的时候就要以该虚拟路径进行访问项目,并加资源的位置



方式三:配置虚拟路径(推荐)
在conf\Catalina\localhost创建一个xml
<Context docBase="c:/aa"></Context>
//不需要写path,虚拟目录就是文件名


扩展:不用项目名,如何直接访问tomcat服务器下的某个项目,例如http://localhost:8080/会直接访问到目标项目,
   只需要将目标的web项目的文件夹名改为ROOT即可,但注意web项目内使用绝对路径的写法
   
    【没有配置JAVA_HOME引发tomcat一闪消失】
* 一定要配置JAVA_HOME环境变量.
【端口号冲突的问题】
* 一种:将占用端口的应用结束.
         * netstat -ano
         * 打开任务管理器结束:
* 二种:修改自身应用的端口号.
         * tomcat/conf/server.xml

三,用eclipse发布web项目步骤
1,创建项目
2,配置运行环境 关联Tomcat
3,添加一个servers并配置
4,发布项目

注意点:
如果要修改servers里面的选项
1,如果有项目先移除项目
2,右键clean 再重新点open打开修改


publish的作用就是及时发布项目,而我们是使用start功能只是在启动时在发布项目到tomcat的webAPPs下,
clean的作用就是:一般public提示有错误或者更改没有效果,clean一下就可以清除之前编译好的class文件


 四,什么是http协议
规定浏览器端和服务器端交流的格式,浏览器向服务器发送什么格式的数据,服务器才能解析 
服务器向浏览器发送什么样的数据,浏览器才能解析

特性
基于请求响应的模型
必须先有请求再有响应
请求和响应必须成对出现  404 500 200



五,请求
请求行
请求方式 get和post
1,get请求的数据会显示到地址栏中,相对不安全,post不会显示到地址栏上
2,get请求请求参数是拼接到请求地址上,post请求参数在请求体里面
3,get方式有大小的限制,post方式没有大小限制
请求路径:访问路径
协议版本:HTTP/1.1
请求头
Referer  代表网页的来源,可以防盗链
User-Agent 代表浏览器的信息,处理文件下载的乱码  IE 火狐 url  base64  
Cookie  携带用户保存Cookie信息    
请求体 

六,响应
响应行
协议版本:HTTP/1.1
响应状态码 
200 响应成功
302 重定向 
304 查找本地缓存
404 路径不存在
500 服务器内部错误
响应状态码介绍

响应头
Location 结合302状态码完成重定向
conten-Disposition 文件下载
Content-Type : 浏览器打开方式 处理中文乱码
Last-Modified: 与请求的if-Modified-Since一起使用查找本地缓存
set-cookie 从服务器向浏览器回写Cookie

响应体

页面的正文


HTTP的协议的概述】

Ø 协议:

* 什么是协议:规定双方需要遵守的规则.

Ø HTTP协议:

* 什么是HTTP协议:用来规定浏览器与服务器之前需要遵守的规则.

Ø HTTP协议的作用:规范浏览器和服务器之间的数据传递.

Ø HTTP协议的特点:

* 基于请求和响应的模型.

    * 必须先有请求后有响应.

    * 请求和响应必须成对出现.

* 默认的端口号是80.

Ø HTTP协议的版本:

* 1.0:每次响应后即刻关闭了连接.

* 1.1:现在使用.不是每次响应后挂断,等待长时间以后没有请求会挂断.

HTTP协议的演示】

抓包分析:GET方式:

* 请求部分:

GET /day09/demo1-http/demo2.html?name=aaa&age=23 HTTP/1.1

Accept: text/html, application/xhtml+xml, */*

X-HttpWatch-RID: 59176-10011

Referer: http://localhost:8080/day09/demo1-http/demo1.html

Accept-Language: zh-CN

User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko

Accept-Encoding: gzip, deflate

Host: localhost:8080

DNT: 1

Connection: Keep-Alive

 

抓包分析:POST方式:

POST /day09/demo1-http/demo2.html HTTP/1.1

Accept: text/html, application/xhtml+xml, */*

X-HttpWatch-RID: 59176-10031

Referer: http://localhost:8080/day09/demo1-http/demo1.html

Accept-Language: zh-CN

User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko

Content-Type: application/x-www-form-urlencoded

Accept-Encoding: gzip, deflate

Host: localhost:8080

Content-Length: 15

DNT: 1

Connection: Keep-Alive

Cache-Control: no-cache

 

name=bbb&age=38

 

* 响应部分:

HTTP/1.1 200 OK

Server: Apache-Coyote/1.1

Accept-Ranges: bytes

ETag: W/"145-1461807615933"

Last-Modified: Thu, 28 Apr 2016 01:40:15 GMT

Content-Type: text/html

Content-Length: 145

Date: Thu, 28 Apr 2016 01:43:52 GMT

 

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>Insert title here</title>

</head>

<body>

<h1>Demo2.html</h1>

</body>

</html>

HTTP协议的详解】

Ø 请求部分

* 请求行

    * 提交方式:

        * 提交方式有很多,常用的GETPOST:

        * GETPOST的区别:

            * GET的提交的参数会显示到地址栏上,POST不显示.

            * GET往往是有大小限制的,POST没有大小的限制.

            * GET没有请求体,POST有请求体.

    * 提交路径:

    * 协议版本:

* 请求头

    * 都是键值对的形式显示的.一般一个key对应一个value,也有个别的是一个key对应多个value.

    * User-Agent:代表浏览器的类型. --- 文件下载:下载中文文件:IE使用URLEncodor进行编码,Firefox使用Base64编码.

    * Referer:代表的是网页的来源. --- 防盗链.

    * If-Modified-Since:通常与响应中的头Last-Modified一起使用查找本地缓存.

* 请求体

    * 就是POST提交方式的提交的参数.

Ø 响应部分

* 响应行:

    * 协议版本

    * 状态码

        * 200:成功

        * 302:重定向

        * 304:查找本地缓存

        * 404:资源不存在

        * 500:服务器内部错误

    * 状态码描述

* 响应头:键值对,一般一个key对应一个value,也有一个key对应多个value.

    * Last-Modified:与请求中的If-Modified-Since一起使用查找本地缓存.

    * Content-Dispostion:文件下载的使用使用的一个头信息.

    * Location:重定向的跳转的路径.

    * Refresh:定时刷新/定时跳转.

* 响应体:显示浏览器的页面的内容.


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值