目录

一、HTTP协议

1、基本介绍

2、请求数据格式

3、响应数据格式

二、Tomcat

1、基本介绍

2、基本使用

3、项目部署


一、HTTP协议

1、基本介绍

▶ 概述

HTTP协议(HyperText Transfer Protocol) : 主要定义通信规则,是超文本传输协议,规定了浏览器和服务器之间数据传输的规则。

数据传输的规则指的是请求数据和响应数据需要按照指定的格式进行传输。


   浏览器发送请求给服务器,服务器响应数据给浏览器,这整个过程都需要遵守一定的规则,TCP、UDP等这些都属于规则,这里我们需要使用的是HTTP协议,这也是一种规则。如果想知道具体的格式,可以打开浏览器,点击`F12`打开开发者工具,点击`Network`来查看某一次请求的请求数据和响应数据具体的格式内容,如下图:

▶ HTTP 特点

▷ 基于TCP协议: 面向连接,安全。TCP是一种面向连接的(建立连接之前是需要经过三次握手)、可靠的、基于字节流的传输层通信协议,在数据传输方面更安全。

▷ 基于请求-响应模型的:一次请求对应一次响应,请求和响应是一一对应关系。

▷ HTTP协议是无状态协议 : 对于事物处理没有记忆能力。每次请求-响应都是独立的,无状态指的是客户端发送HTTP请求给服务端之后,服务端根据请求响应数据,响应完后,不会记录任何信息。这种特性有优点也有缺点:① 缺点:多次请求间不能共享数据;②优点:速度快

▶ 请求之间无法共享数据会引发的问题

例如:京东购物,`加入购物车`和`去购物车结算`是两次请求,HTTP协议的无状态特性,加入购物车请求响应结束后,并未记录加入购物车是何商品发起去购物车结算的请求后,因为无法获取哪些商品加入了购物车,会导致此次请求无法正确展示数据。

具体使用的时候,我们发现京东是可以正常展示数据的,原因是Java早已考虑到这个问题,并提出了使用`会话技术(Cookie、Session)`来解决这个问题。

2、请求数据格式

▶ 简单介绍

请求数据总共分为三部分内容,分别是请求行、请求头、请求体:

▷ 请求行: HTTP请求中的第一行数据,请求行包含三块内容,分别是 GET[请求方式] /[请求URL路径] HTTP/1.1[HTTP协议及版本],请求方式有七种,最常用的是GET和POST。

▷ 请求头: 第二行开始,格式为key: value形式。请求头中会包含若干个属性,常见的HTTP请求头有:

● Host: 表示请求的主机名
   ● User-Agent: 浏览器版本,例如Chrome浏览器的标识类似Mozilla/5.0 ...Chrome/79;IE浏览器的标识类似Mozilla/5.0 (Windows NT ...)like Gecko;
   ● Accept:表示浏览器能接收的资源类型,如text/*,image/*或者*/*表示所有;
   ● Accept-Language:表示浏览器偏好的语言,服务器可以据此返回不同语言的网页;
   ● Accept-Encoding:表示浏览器可以支持的压缩类型,例如gzip, deflate等。

▷ 请求体: POST请求的最后一部分,存储请求参数:

如上图红线框的内容就是请求体的内容,请求体和请求头之间是有一个空行隔开。此时浏览器发送的是POST请求。GET和POST两个请求之间的区别:

○ GET请求:请求参数在请求行中,没有请求体,请求参数大小有限制

○ POST请求:请求参数在请求体中,请求参数大小没有限制

▶ 请求头数据有什么用处?

举例说明: 服务端可以根据请求头中的内容来获取客户端的相关信息,有了这些信息服务端就可以处理不同的业务需求,比如:

● 不同浏览器解析HTML和CSS标签的结果会有不一致,所以就会导致相同的代码在不同的浏览器会出现不同的效果。
  ● 服务端根据客户端请求头中的数据获取到客户端的浏览器类型,就可以根据不同的浏览器设置不同的代码来达到一致的效果。
  ● 这就是我们常说的浏览器兼容问题。

3、响应数据格式

▶ 简单介绍

响应数据总共分为三部分内容,分别是响应行、响应头、响应体:

▷ 响应行:响应数据的第一行,响应行包含三块内容,分别是 HTTP/1.1[HTTP协议及版本] 200[响应状态码] ok[状态码的描述]

▷ 响应头:第二行开始,格式为key:value形式。响应头中会包含若干个属性,常见的HTTP响应头有:

● Content-Type:表示该响应内容的类型,例如text/html,image/jpeg;
   ● Content-Length:表示该响应内容的长度(字节数);
   ● Content-Encoding:表示该响应压缩算法,例如gzip;
   ● Cache-Control:指示客户端应如何缓存,例如max-age=300表示可以最多缓存300秒

▷ 响应体: 最后一部分,存放响应数据。上图中<html>...</html>这部分内容就是响应体,它和响应头之间有一个空行隔开。

▶ 响应状态码

三个常见的响应状态码:

● 200  ok :客户端请求成功
  ● 404  Not Found :请求资源不存在
  ● 500 Internal Server Error :服务端发生不可预期的错误


二、Tomcat

1、基本介绍

▶ Web概述
  Web是全球广域网,也称为万维网(www),能够通过浏览器访问的网站。在我们日常的生活中,经常会使用浏览器去访问`百度`、`京东`、`传智官网`等这些网站,这些网站统称为Web网站。
▶ B/S架构
  B/S 架构:Browser/Server,浏览器/服务器 架构模式,它的特点是,客户端只需要浏览器,应用程序的逻辑和数据都存储在服务器端。浏览器只需要请求服务器,获取Web资源,服务器把Web资源发送给浏览器即可。

大家回想下我们平常的上网过程: 打开浏览器访问百度首页,输入要搜索的内容,点击回车或百度一下,就可以获取和搜索相关的内容。思考下搜索的内容并不在我们自己的点上,那么这些内容从何而来?答案很明显是从百度服务器返回给我们的;日常百度的小细节,逢年过节百度的logo会更换不同的图片,服务端发生变化,客户端不需做任务事情就能获取最新内容
  所以说B/S架构的好处: 易于维护升级(服务器端升级后,客户端无需任何部署就可以使用到新的版本)。

▶ 静态资源
  静态资源主要包含HTML、CSS、JavaScript、图片等,主要负责页面的展示。但是由于做出来的这些内容都是静态的,这就会导致所有的人看到的内容将是一模一样。
  在日常上网的过程中,我们除了看到这些好看的页面以外,还会碰到很多动态内容,比如我们常见的百度登录效果:`张三`登录以后在网页的右上角看到的是 `张三`,而`李四`登录以后看到的则是`李四`。所以不同的用户访问相同的资源看到的内容大多数是不一样的,要想实现这样的效果,光靠静态资源是无法实现的。

▶  动态资源
  动态资源主要包含Servlet、JSP等,主要用来负责逻辑处理。动态资源处理完逻辑后会把得到的结果交给静态资源来进行展示,动态资源和静态资源要结合一起使用。

▶  数据库
  数据库主要负责存储数据。整个Web的访问过程就如下图所示:

(1)浏览器发送一个请求到服务端,去请求所需要的相关资源;
(2)资源分为动态资源和静态资源,动态资源可以是使用Java代码按照Servlet和JSP的规范编写的内容;
(3)在Java代码可以进行业务处理也可以从数据库中读取数据;
(4)拿到数据后,把数据交给HTML页面进行展示,再结合CSS和JavaScript使展示效果更好;
(5)服务端将静态资源响应给浏览器;
(6)浏览器将这些资源进行解析;
(7)解析后将效果展示在浏览器,用户就可以看到最终的结果。

▶ Web服务器

什么是Web服务器?

Web服务器是一个应用程序(软件),对HTTP协议的操作进行封装,使得程序员不必直接对协议进行操作,让Web开发更加便捷。主要功能是"提供网上信息浏览服务"。Web服务器是安装在服务器端的一款软件,将来我们把自己写的Web项目部署到Web Tomcat服务器软件中,当Web服务器软件启动后,部署在Web服务器软件中的页面就可以直接通过浏览器来访问了。

▶ Tomcat 概述

Tomcat是Apache软件基金会一个核心项目,是一个开源免费的轻量级Web服务器,支持Servlet/JSP少量JavaEE规范。因为Tomcat支持Servlet/JSP规范,所以Tomcat也被称为Web容器、Servlet容器。Servlet需要依赖Tomcat才能运行。

官网: https://tomcat.apache.org/

▶ JavaEE规范

Java Enterprise Edition,Java企业版。指Java企业级开发的技术规范总和。包含13项技术规范:JDBC、JNDI、EJB、RMI、JSP、Servlet、XML、JMS、Java IDL、JTS、JTA、JavaMail、JAF。

2、基本使用

▶ 下载安装

1、去官网下载对应版本的压缩包。

2、直接将压缩包解压即安装成功。

注意:Tomcat在解压缩的时候,解压所在的目录可以任意,但最好解压到一个不包含中文和空格的目录,因为后期在部署项目的时候,如果路径有中文或者空格可能会导致程序部署失败。

3、打开`apache-tomcat-8.5.68`目录就能看到如下目录结构:

▷ bin: 目录下有两类文件,一种是以`.bat`结尾的,是Windows系统的可执行文件,一种是以`.sh`结尾的,是Linux系统的可执行文件。

▷ webapps: 就是以后项目部署的目录。

▶ 启动

▷ 双击: bin\startup.bat

▷ 启动后,通过浏览器访问 `http://localhost:8080`能看到Apache Tomcat的内容就说明Tomcat已经启动成功。

▷ 注意: 启动的过程中,控制台有中文乱码,需要修改conf/logging.prooperties 目录下的文件:UTF-8 --> GBK

▷ 闪退问题:

Tomcat启动的时候,启动窗口一闪而过: 需要检查JAVA_HOME环境变量是否正确配置

▶ 关闭

▷ 关闭有三种方式 :

● 直接x掉运行窗口:强制关闭。[不建议]
  ● bin\shutdown.bat:正常关闭。
  ● ctrl+c: 正常关闭。[建议]

▶ 端口配置

▷ Tomcat默认的端口是8080,要想修改Tomcat启动的端口号,需要修改 conf/server.xml

注意: HTTP协议默认端口号为80,如果将Tomcat端口号改为80,则将来访问Tomcat时,将不用输入端口号。

▷ 启动时可能出现的错误

Tomcat的端口号取值范围是0-65535之间任意未被占用的端口,如果设置的端口号被占用,启动的时候就会包如下的错误: 

3、项目部署

▶ Tomcat部署项目

将项目放置到webapps目录下,即部署完成。一般JavaWeb项目会被打包成war包,然后将war包放到Webapps目录下,Tomcat会自动解压缩war文件,Tomcat检测到war包后会自动完成解压缩,在webapps目录下就会多一个项目目录,通过浏览器访问`http://localhost/项目路径`,能看到下面的内容就说明项目已经部署成功。

▶ Web项目结构

Web项目的结构分为: 开发中的项目和开发完可以部署的Web项目,这两种项目的结构是不一样的。

▷ Maven Web项目结构: 开发中的项目

▷ 开发完成部署的Web项目

● 开发项目通过执行Maven打包命令package,可以获取到部署的Web项目目录
  ● 编译后的Java字节码文件和resources的资源文件,会被放到WEB-INF下的classes目录下
  ● pom.xml中依赖坐标对应的jar包,会被放入WEB-INF下的lib目录下

▶ 创建Maven Web项目(两种方式)

▷ 使用骨架,具体的步骤包含:
  1.创建Maven项目
  2.选择使用Web项目骨架

  3.输入Maven项目坐标创建项目

  4.确认Maven相关的配置信息后,完成项目创建

  5.删除pom.xml中多余内容

 6.补齐Maven Web项目缺失的目录结构

▷ 不使用骨架,具体的步骤包含:

1. 创建Maven项目 

2. 选择不使用Web项目骨架

3. 输入Maven项目坐标创建项目

   4. 在pom.xml设置打包方式为war,默认是不写代表打包方式为jar

5. 补齐Maven Web项目缺失webapp的目录结构

6. 补齐Maven Web项目缺失WEB-INF/web.xml的目录结构

7. 补充完后,最终的项目结构如下:

▶ IDEA使用Tomcat

在IDEA中集成使用Tomcat有两种方式,分别是集成本地Tomcat和Tomcat Maven插件。

▷ 集成本地Tomcat:将刚才本地安装好的Tomcat8集成到IDEA中,完成项目部署。

1. 打开添加本地Tomcat的面板

2.  指定本地Tomcat的具体路径 

3. 修改Tomcat的名称,此步骤可以不改,只是让名字看起来更有意义,HTTP port中的端口也可以进行修改,比如把8080改成80

4. 将开发项目部署项目到Tomcat中

扩展内容: xxx.war和 xxx.war exploded这两种部署项目模式的区别?

● war模式是将WEB工程打成war包,把war包发布到Tomcat服务器上

● war exploded模式是将WEB工程以当前文件夹的位置关系发布到Tomcat服务器上
   ● war模式部署成功后,Tomcat的webapps目录下会有部署的项目内容
   ● war exploded模式部署成功后,Tomcat的webapps目录下没有,而使用的是项目的target目录下的内容进行部署
   ● 建议大家都选war模式进行部署,更符合项目部署的实际情况

5. 部署成功后,就可以启动项目,为了能更好的看到启动的效果,可以在webapp目录下添加a.html页面

6. 启动成功后,可以通过浏览器进行访问测试

7. 最终的注意事项

▷ Tomcat Maven插件

1. 在pom.xml中添加Tomcat插件

<build><plugins><!--Tomcat插件 --><plugin><groupId>org.apache.tomcat.maven</groupId><artifactId>tomcat7-maven-plugin</artifactId><version>2.2</version></plugin></plugins></build>

2. 使用Maven Helper插件快速启动项目,选中项目,右键-->Run Maven --> tomcat7:run

注意:如果选中项目并右键点击后,看不到Run Maven和Debug Maven,这个时候就需要在IDEA中下载Maven Helper插件,具体的操作方式为: File --> Settings --> Plugins --> Maven Helper ---> Install,安装完后按照提示重启IDEA,就可以看到了。

Maven Tomcat插件目前只有Tomcat7版本,没有更高的版本可以使用,使用Maven Tomcat插件,要想修改Tomcat的端口和访问路径,可以直接修改pom.xml

<build><plugins><!--Tomcat插件 --><plugin><groupId>org.apache.tomcat.maven</groupId><artifactId>tomcat7-maven-plugin</artifactId><version>2.2</version><configuration><port>80</port><!--访问端口号 --><!--项目访问路径未配置访问路径: http://localhost:80/tomcat-demo2/a.html配置/后访问路径: http://localhost:80/a.html如果配置成 /hello,访问路径会变成http://localhost:80/hello/a.html--><path>/</path></configuration></plugin></plugins>
</build>

Tomcat基本使用以及项目部署。相关推荐

  1. 使用Tomcat Maven插件进行项目部署

    使用Tomcat Maven插件进行项目部署 一.使用插件原因 IDEA中使用关联本地Tomcat进行项目部署,步骤比较繁琐. 因此可以直接使用Maven中的Tomcat插件来部署项目. 二.部署步骤 ...

  2. idea tomcat项目部署失败_阿里云centons安装Jdk和tomcat,mysql以及项目部署(阿里云入门)...

    买了个阿里云ECS服务器,自己摸索安装,适合小白看看,教程该做的都有列出来. 1.购买服务器 2.查看阿里云管理 点击实例进入 修改密码可以点击管理--出现的页面点击更多---重置实例密码 3.下载x ...

  3. idea tomcat启动成功但是访问方面都是404_IDEA相关配置【集成Tomcatamp;项目部署】...

    "知其然知其所以然"始终是Brick我学习新兴技术的出发点,那么咱们来聊聊以下几个问题 问题1:在编写完web项目之后,我们怎么才能运行项目呢? --需要部署项目到Tomcat上. ...

  4. eclipse中配置tomcat之后指定项目部署的目录

    2019独角兽企业重金招聘Python工程师标准>>> 在eclipse中配置tomcat之后,默认情况下部署项目是将项目部署到eclipse自带的tomcat上,除非自己手动指定, ...

  5. 将Web项目部署到华为云服务器的Linux的Tomcat中

    将Web项目部署到阿里云服务器的Linux的Tomcat中 01_用SSH Secure Shell Client或Xshell 6这个Windows客户端工具,将在Windows中已经开发完毕的Ja ...

  6. PHP项目部署在tomcat,在Tomcat中部署Web项目的操作方法(必看篇)

    在这里介绍在Tomcat中部署web项目的三种方式: 1.部署解包的webapp目录 2.打包的war文件 3.Manager Web应用程序 一:部署解包的webapp目录 将Web项目部署到Tom ...

  7. 通过XShell将linux服务器上的Tomcat下项目部署后,怎样对日志操作来调试

    场景 使用XShell将linux服务器上的Tomcat下的项目部署后, 发现项目跑不起来. 此时你想通过查看Tomcat运行的日志来调试. 实现 可以进入到Tomcat下的logs目录下 输入: l ...

  8. 多个Spring Boot项目部署在一个Tomcat容器无法启动

    Tomxin7 Simple, Interesting | 简单,有趣 本文将花费您五分钟时间 业务介绍 最近用Spring Boot开发了一个翻译的小项目,但是服务器上还跑着其他项目,包括一个同样用 ...

  9. MAC + Tomcat——部署Web项目时Tomcat启动成功,但部署的Web项目404错误

    问题描述 尝试在mac系统尝试部署web项目. 项目部署成功后,可以访问首页,可是一旦访问自己的部署的项目就报404的错误. 问题分析 和window部署有些不同 例如如下访问 http://127. ...

最新文章

  1. [转]c# 泛类型(泛型) 以及强类型与弱类型的 理解及优化
  2. 快速入门分库分表概念原理
  3. freebsd ports安装mysql_FreeBSD Ports 方式安装MySQL及注意事项
  4. aws s3仅允许cloudfront访问_初创公司如何用AWS搭建高扩展性架构
  5. java面向对象的特征 —(13)
  6. fork、getpid、getppid函数
  7. PNG图在IE6下透明的终极解决方案
  8. 为什么这本搜索引擎营销的书畅销呢?
  9. 数据--第34课 - 二叉树的深层性质
  10. Ubuntu下fcitx安装。(ibus不会用)
  11. 嵌入式Linux用java_嵌入式linux 开发步骤详细解析(Hello Embedded World)
  12. oracle查询平均每月数据,oracle 按每天,每周,每月,每季度,每年查询统计数据
  13. Python操作MyS QL
  14. 在JSP打开EXCEL文件
  15. [转载]胡永恒:《最深刻地影响我的人》
  16. 学术篇 | 面向分类的脑电接口Fuzzy-Rough特征选择
  17. 表格处理:换行还是不换行?
  18. [高数][高昆轮][高等数学上][第一章-函数与极限]10.闭区间上连续函数的性质
  19. 为什么IT白领生命如此短暂--猝死!!! 让所谓的PMP和IT项目管理见鬼吧。
  20. 献给1986,1987年出生的人

热门文章

  1. CSGO人机试刀【没有刀的都可以人机体验】
  2. Binary XML file line #2 in com.example.helloworld:layout/activity_main: Binary XML file line #2 in c
  3. Spring Validated分组校验
  4. 乔布斯最后付出心血最多的是iPhone 5而非iPhone 4S
  5. 登录可以用微信的163邮箱!TOM VIP商务邮全新而来!
  6. 嵌入式Linux驱动笔记(十六)------设备驱动模型(kobject、kset、ktype)
  7. 关于关于高博3d2d程序报错的改动
  8. Go语言的函数与数组
  9. 最新尚硅谷Java MyBatisPlus教程(完整)
  10. Nginx中的location规则与rewrite重写(详解)