当前位置: 首页 > news >正文

TomcatHttp协议

说明:以下内容如有侵权,请联系删除

第一章 WEB开发概述

1.1 软件架构

C/S架构

C/S架构:即客户端/服务器(Client/Server),例如QQ、LOL

必须在客户端下载一个软件,安装,服务器端的程序一旦更新,客户端也必须同步更新。所有涉及财产信息都存在服务器端,安全性比较高的、画质、音效等等用户体验要好很多的。

优点:
 用户体验效果好
 对信息的安全控制较强
 应用服务器运行数据负荷较轻,部分计算在客户端完成

缺点:
 维护麻烦(服务器更新,客户端也必须更新)
 安装使用依赖其它条件
 占用空间

B/S架构

B/S架构:即浏览器/服务器(Browser/Server);

客户端只需要有一个浏览器就可以访问服务器端数据了,所有的数据更新操作都在服务器端完成

优点:
 维护方便
 占用空间少
缺点:
 动画效果受限
 对信息的安全控制较低(网银需要使用U盾,在浏览器端加密)
 应用服务器运行数据负荷较重,大部分计算都在服务器端完成,可以使用Ajax改善!

结论:Java开发注重的是B/S架构!

1.2 WEB交互过程

WEB采用B/S通信模式,通过超文本传送协议(HTTP, Hypertext transport protocol)进行通信。通过浏览器地址栏编写URL,向服务器发送一个请求,服务器端根据请求进行相应的处理,处理完成之后,会向浏览器作出一个响应,及将服务器端资源发送给浏览器。

结论:永远都是从客户端向服务器端发起请求,然后服务器端响应结果数据到客户端(周而复始),请求和响应式成对出现,先有请求,后有响应。

在这里插入图片描述

1.3 WEB资源

在WEB通信中,我们都是通过浏览器去访问服务器端的一些资源数据(或页面或图片等等!)在这些资源数据中它分为静态资源和动态资源!

 静态资源:指web页面中供人们浏览的数据始终是不变。比如:HTML、CSS、JS、图片、多媒体。

 动态资源:指web页面中供人们浏览的数据是由程序产生的,不同时间点访问web页面看到的内容各不相同。比如:JSP/Servlet、ASP、PHP

在这里插入图片描述
注意:
如果用户访问的是一个静态资源,那么服务器端是直接响应的!
如果用户访问的是一个动态资源,那么服务器会先将动态资源转成静态资源,然后再将这个静态资源响应到客户端浏览器!

结论:
客户端永远得到的是静态资源!
在这里插入图片描述

1.4 WEB服务器

Web服务器一般指网站服务器,是指驻留于因特网上某种类型计算机的程序,可以向浏览器等Web客户端提供文档,[1] 也可以放置网站文件,让全世界浏览;可以放置数据文件,让全世界下载。(服务器指的是某款软件!!!!) ===>>>>它是一个容器(可以存放资源文件),然后通过互联网,让其它的用户来访问这个服务器里面的资源文件!

Web服务器的作用是接收客户端的请求,给客户端做出响应。

对于JavaWeb程序而言,还需要有JSP/Servlet容器,JSP/Servlet容器的基本功能是把动态资源转换成静态资源,当然JSP/Servlet容器(服务器!)不只这些功能,我们会在后面一点一点学习。

我们需要使用的是Web服务器和JSP/Servlet容器,通常这两者会集于一身。下面是对JavaWeb服务器:
 Tomcat(Apache):当前应用最广的JavaWeb服务器;(免费,不是支持所有的JavaEE规范)【中小型的】

 JBoss(Redhat红帽):支持JavaEE,应用比较广;EJB容器(银行)

 Resin(Caucho):支持JavaEE,应用越来越广;

 Weblogic(Orcale):要钱的!支持JavaEE,适合大型项目;

 Websphere(IBM):要钱的!支持JavaEE,适合大型项目;

 Glass Fish:最早是Sun公司的产品,后来被Oracle收购,开源,中型服务器。

补充:规范

J2EE 企业级开发Java规范。标准规范包括:servlet、jsp、jdbc、xml、jta、javamail等。在java中规范就是接口。J2EE又称为JavaEE。

WEB服务器对JavaEE规范部分或全部支持(实现),也就是WEB服务器实现部分或全部接口。
在这里插入图片描述

第二章 WEB服务器Tomcat

在这里插入图片描述

2.1 Tomcat概述

Tomcat 服务器是一个免费的开放源代码的Web应用服务器软件,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。【大型项目和并发访问用户很多的场合下依旧可以胜任!服务器集群】

支持Servlet和JSP 规范,且最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现。(Tomcat服务器是在不断更新的!)

Tomcat版本问题(了解)
在这里插入图片描述

2.2 Tomcat安装

Tomcat分为安装版和解压版(绿色版):
 安装版:一台电脑上只能安装一个Tomcat;(需要配置环境变量!!!)
 解压版:无需安装,解压即可用,解压多少份都可以,所以我们选择解压版。
我们主要使用解压版的Tomcat!(可以进行集群操作)
在这里插入图片描述
在这里插入图片描述
说明:
tar.gz 文件 是linux操作系统下的安装版本
exe文件是window操作系统下的安装版本
zip文件是window操作系统下压缩版本(我们选择zip文件)
在这里插入图片描述
在这里插入图片描述

2.3 Tomcat目录结构

在这里插入图片描述
 bin:该目录下存放的是二进制可执行文件,如果是安装版,那么这个目录下会有两个exe文件:tomcat6.exe、tomcat6w.exe,前者是在控制台下启动Tomcat,后者是弹出UGI窗口启动Tomcat;如果是解压版,那么会有startup.bat和shutdown.bat文件,startup.bat用来启动Tomcat,但需要先配置JAVA_HOME环境变量才能启动,shutdawn.bat用来停止Tomcat;

 conf:这是一个非常非常重要的目录,这个目录下有四个最为重要的文件:
(1) server.xml:配置整个服务器信息。例如修改端口号,添加虚拟主机等;下面会详细介绍这个文件;
(2) tomcat-users.xml:存储tomcat用户的文件,这里保存的是tomcat的用户名及密码,以及用户的角色信息。可以按着该文件中的注释信息添加tomcat用户,然后就可以在Tomcat主页中进入Tomcat Manager页面了;
(3) web.xml:部署描述符文件,这个文件中注册了很多MIME类型,即文档类型。这些MIME类型是客户端与服务器之间说明文档类型的,如用户请求一个html网页,那么服务器还会告诉客户端浏览器响应的文档是text/html类型的,这就是一个MIME类型。客户端浏览器通过这个MIME类型就知道如何处理它了。当然是在浏览器中显示这个html文件了。但如果服务器响应的是一个exe文件,那么浏览器就不可能显示它,而是应该弹出下载窗口才对。MIME就是用来说明文档的内容是什么类型的!
(4) context.xml:对所有应用的统一配置,通常我们不会去配置它。

 lib:Tomcat的类库,里面是一大堆jar文件。如果需要添加Tomcat依赖的jar文件,可以把它放到这个目录中,当然也可以把应用依赖的jar文件放到这个目录中,这个目录中的jar所有项目都可以共享之,但这样你的应用放到其他Tomcat下时就不能再共享这个目录下的Jar包了,所以建议只把Tomcat需要的Jar包放到这个目录下;

 logs:这个目录中都是日志文件,记录了Tomcat启动和关闭的信息,如果启动Tomcat时有错误,那么异常也会记录在日志文件中。

 temp:存放Tomcat的临时文件,这个目录下的东西可以在停止Tomcat后删除!

 webapps:存放web项目的目录,其中每个文件夹都是一个项目;如果这个目录下已经存在了目录,那么都是tomcat自带的。项目。其中ROOT是一个特殊的项目,在地址栏中没有给出项目目录时,对应的就是ROOT项目。http://localhost:8080/examples,进入示例项目。其中examples就是项目名,即文件夹的名字。

 work:运行时生成的文件,最终运行的文件都在这里。通过webapps中的项目生成的!可以把这个目录下的内容删除,再次运行时会生再次生成work目录。当客户端用户访问一个JSP文件时,Tomcat会通过JSP生成Java文件,然后再编译Java文件生成class文件,生成的java和class文件都会存放到这个目录下。

 LICENSE:许可证。

 NOTICE:说明文件。

2.4 Tomcat启动停止和访问

准备工作
在启动Tomcat之前,我们必须要配置环境变量(Tomcat本身也是使用Java语言编写的):
 JAVA_HOME:必须先配置JAVA_HOME,因为Tomcat启动需要使用JDK;
 CATALANA_HOME:如果是安装版,那么还需要配置这个变量,这个变量用来指定Tomcat的安装路径,例如:D:\Develop\Tomcat\apache-tomcat-8.5.27

启动和停止
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
访问

在这里插入图片描述
URL请求路径
URL(Uniform Resource Locator),统一资源定位符是对互联网上资源位置的一种表示,互联网上的每个文件都有一个唯一的URL。
完整格式 协议://域名(ip地址):端口号/资源位置?参数=值
协议:http、https、ftp等
域名:域名或IP地址,都可以访问WEB资源
端口号:程序必须使用端口号,才可以让另一个计算机访问。http协议的默认端:80
资源位置:用于描述WEB资源再服务器上的位置。
参数=值:浏览器和服务器交互传递的数据
例如:
常见路径
http://www.itcast.cn:80/subject/javaeezly/index.shtml
百度搜索“传智播客”
https://www.baidu.com/s?wd=%E4%BC%A0%E6%99%BA%E6%92%AD%E5%AE%A2&rsv_spt=1&rsv_iqid=0xf504606300003bdd&issp=1&f=8&rsv_bp=0&rsv_idx=2&ie=utf-8&tn=99669880_hao_pg&rsv_enter=1&rsv_sug3=18&rsv_sug1=14&rsv_sug7=101&rsv_t=7f8cIV2VNr%2FgqROJl21aOvqclyXrBlfjfN2SpvKmAxyU9b7y1aijHlMemkz8XwApcrvn64yf&rsv_sug2=0&inputT=4187&rsv_sug4=5015

2.5 Tomcat启动常见问题

无法启动(闪退)
在这里插入图片描述
端口号冲突问题
当同一台计算机启动两个tomcat时,第二个tomcat将会在控制台抛异常,摘要信息如下:
在这里插入图片描述
你可以可以去D:\Develop\Tomcat\apache-tomcat-8.5.27_teach\logs查看catalina对应的log日志文件!
上面截图中,控制台将出现大量异常信息,描述的是8080端口被占用!

查看本地端口使用情况,关闭占用端口的程序,在dos窗口中输入 netstat –nao 就可以查看当前端口的占用情况:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.6 Tomcat发布WEB项目

在webapps文件夹下面直接发布
在这里插入图片描述
使用虚拟路径的方式发布项目(了解)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.7 IDE集成Tomcat

IDE集成Tomcat
在这里插入图片描述
在这里插入图片描述
IDE创建WEB项目
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
部署
在这里插入图片描述
测试
在这里插入图片描述

第三章 Http协议

在这里插入图片描述

3.1 Http协议概述

Http协议引入
在这里插入图片描述
Http协议的概念

HTTP(hypertext transport protocol),即超文本传输协议。这个协议详细规定了浏览器和万维网服务器之间互相通信的规则。(用于定义WEB浏览器与WEB服务器之间交换数据的过程)(规定了请求与响应的数据的格式!)

互联网的数据传输底层依赖tcp协议,http协议架构在tcp协议之上,它规范了传输数据的内容和格式。
在这里插入图片描述
HTTP就是一个通信规则,通信规则规定了客户端发送给服务器的内容格式(请求),也规定了服务器发送给客户端的内容格式(响应)。其实我们要学习的就是这个两个格式!客户端发送给服务器的格式叫“请求协议”;服务器发送给客户端的格式叫“响应协议”。今天我们主要学习请求协议,明天学习响应协议!

Http协议的组成
HTTP请求协议、HTTP响应协议。

HTTP请求包括:请求首行、请求头、请求体(get请求没有请求体、post请求有)
HTTP响应包括:响应首行、响应头、响应体

Http协议的作用和特点
在这里插入图片描述
Http协议的版本
在这里插入图片描述

3.2 如何获取Http协议里的数据

谷歌浏览器获取Http协议里的数据
在这里插入图片描述
火狐浏览器获取Http协议里面的数据
在这里插入图片描述

3.3 Http请求协议

【在表单中没有明确指定method为post,其余全部为get方式!】
学习http请求信息的组成,我们的目的是,了解浏览器将那些数据,按照什么样的格式发送给服务器。http请求一共分为三个部分:请求行,请求头,请求体。其格式如下:

请求首行;(请求方式 请求的地址 协议与版本)
请求头信息;(请求头名称:请求头值)
空行;
请求体。(POST请求有请求体、GET请求没有请求体)

浏览器发送给服务器的内容就是这个格式的,如果不是这个格式服务器将无法解读!在HTTP协议中,请求有很多请求方法,其中最为常用的就是GET和POST。

接下来我们要看看具体的内容。演示的时候,我们以IE浏览器为例,后面切换为谷歌浏览器!

GET请求
在这里插入图片描述
在这里插入图片描述
请求首行
GET /day31_Http_306/username=jack&password=123 HTTP/1.1:
请求方式GET,
请求服务器路径(/day31_Http_36/a.html?username=jack&password=123),
协议和版本:HTTP/1.1;

请求头
(重要的两个请求头:User-Agent Cookie)
 Host:localhost:请求的主机名为localhost;

 User-Agent:Mozilla/5.0(Windows NT 5.1; rv:5.0)Gecko/20100101 Firefox/5.0:
与浏览器和OS相关的信息。有些网站会显示用户的系统版本和浏览器版本信息,这都是通过获取User-Agent头信息而来的;

 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8:
告诉服务器,当前客户端可以接收的文档类型,其实这里包含了*/*,就表示什么都可以接收;

 Accept-Language: zh-cn,zh;q=0.5:
当前客户端支持的语言,可以在浏览器的工具选项中找到语言相关信息;

 Accept-Encoding: gzip, deflate:
支持的压缩格式。数据在网络上传递时,可能服务器会把数据压缩后再发送;

 Accept-Charset: GB2312,utf-8;q=0.7,*;q=0.7:
客户端支持的编码;

 Connection: keep-alive:
客户端支持的链接方式,保持一段时间链接,默认为3000ms;

 Cookie: JSESSIONID=369766FDF6220F7803433C0B2DE36D98:
因为不是第一次访问这个地址,所以会在请求中把上一次服务器响应中发送过来的Cookie在请求中一并发送去过;这个Cookie的名字为JSESSIONID,然后在讲会话是讲究它!

Http协议规定有7种方式,常用的有GET和POST,GET请求没有请求体!

POST请求
在这里插入图片描述
Referer请求头
Referer请求头是比较有用的一个请求头,它可以用来做统计工作,也可以用来做防盗链。

统计工作:我公司网站在百度上做了广告,但不知道在百度上做广告对我们网站的访问量是否有影响,那么可以对每个请求中的Referer进行分析,如果Referer为百度的很多,那么说明用户都是通过百度找到我们公司网站的。

防盗链:我公司网站上有一个下载链接,而其他网站盗链了这个地址,例如在我网站上的index.html页面中有一个链接,点击即可下载JDK7.0,但有某个人的微博中盗链了这个资源,它也有一个链接指向我们网站的JDK7.0,也就是说登录它的微博,点击链接就可以从我网站上下载JDK7.0,这导致我们网站的广告没有看,但下载的却是我网站的资源。这时可以使用Referer进行防盗链,在资源被下载之前,我们对Referer进行判断,如果请求来自本网站,那么允许下载,如果非本网站,先跳转到本网站看广告,然后再允许下载。
在这里插入图片描述
常见请求头(了解)
在这里插入图片描述

3.4 Http响应协议

Http响应协议的格式
响应协议的格式如下:

响应首行;
响应头信息;
空行;
响应体。

响应内容是由服务器发送给浏览器的内容,浏览器会根据响应内容来显示。

响应首行
在这里插入图片描述
在这里插入图片描述
响应头对浏览器来说很重要,它说明了响应的真正含义。例如200表示响应成功了,302表示重定向,这说明浏览器需要再发一个新的请求。

 200:请求成功,浏览器会把响应体内容(通常是html)显示在浏览器中;

 404:请求的资源没有找到,说明客户端错误的请求了不存在的资源;

 405:服务器端的方法出现错误(你需要调用的方法被修改了)

 500:请求资源找到了,但服务器内部出现了错误;

 302:重定向,当响应码为302时,表示服务器要求浏览器重新再发一个请求,服务器会发送一个响应头Location,它指定了新请求的URL地址;

 304:当用户第一次请求index.html时,服务器会添加一个名为Last-Modified响应头,这个头说明了index.html的最后修改时间,浏览器会把index.html内容,以及最后响应时间缓存下来。当用户第二次请求index.html时,在请求中包含一个名为If-Modified-Since请求头,它的值就是第一次请求时服务器通过Last-Modified响应头发送给浏览器的值,即index.html最后的修改时间,If-Modified-Since请求头就是在告诉服务器,我这里浏览器缓存的index.html最后修改时间是这个,您看看现在的index.html最后修改时间是不是这个,如果还是,那么您就不用再响应这个index.html内容了,我会把缓存的内容直接显示出来。而服务器端会获取If-Modified-Since值,与index.html的当前最后修改时间比对,如果相同,服务器会发响应码304,表示index.html与浏览器上次缓存的相同,无需再次发送,浏览器可以显示自己的缓存页面,如果比对不同,那么说明index.html已经做了修改,服务器会响应200。
在这里插入图片描述

响应头
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="Refresh" content="3;http://www.itcast.cn"><title>Refresh定时刷新</title><script>window.onload=function(){//定义一个计数遍历time = 3;//定时操作(周期1秒)setInterval("changeTime()",1000);}//书写改变时间的函数function changeTime(){if(time>1){//修改span中的数字document.getElementsByTagName("span")[0].innerText=--time;}}</script></head><body><span>3</span>秒后跳转到传智首页!</body>
</html>

响应体
响应体:就是服务器发送给浏览器的正文

http://www.dtcms.com/a/443165.html

相关文章:

  • JavaScript 数组元素移动至特定索引位置
  • 怎么学做淘宝电商网站沈阳网站建设方案服务
  • 沧州海外网站建设广告联盟怎么做
  • 专业模板建站服务网站维护有多长时间
  • 红黑树动画演示
  • 当“技能拼装”遇上“多智能体协奏”——Microsoft Agent Framework 与 Semantic Kernel 全维度深度拆解与实战指南
  • 那些网站可以做淘宝店铺推广wordpress 平台
  • 云原神官方网站正版下载郑州网站优化的微博_腾讯微博
  • 做蛋糕招聘网站wordpress七牛云使用
  • 网站开发项目技能比赛获奖报道h5创建网站
  • 深圳网站维护制作电子商务网站创建方案
  • 摄影师网站html5房地产招新人的坑
  • Effective Python 第38条:简单的接口应该接受函数,而不是类的实例
  • 彩票理财网站建设做毛绒玩具在什么网站上找客户
  • Python f-string 用法详解
  • 广州做网站哪间公司好广东网站建设公司电话
  • 怎样在工商网站做遗失wordpress批量修改文章内链接
  • 百度网站v2升级到v3怎么做培训学校招生方案
  • 网站流量转化seo的宗旨是
  • [YMOJ]现代化开源OJ(在线编程)平台技术分享
  • 长沙自适应网站制作wordpress 页面 插件
  • 徐州的网站设计公司企业管理
  • 企业网站优化方案模板学做php网站有哪些
  • 网站建设需准备什么软件北京网站搭建开发
  • 网站稳定期怎么做海外精品网站建设
  • apache 配置网站公司域名注册查询
  • 浅谈高校图书馆网站建设公司装修费分几年摊销
  • 从工具到语境:Anthropic 双文启示下的 AI 代理工程实践心得
  • 做5173这样的网站要多少人5 网站建设进度表
  • 广东专业的网站制作江门cms模板建站