Tomcat&Http协议-授课
1 JavaEE规范
-
JavaEE(Java Enterprise Edition):Java 企业版
-
它是由 SUN 公司领导、各个厂家共同制定并得到广泛认可的工业标准
-
JavaEE 规范是很多 Java 开发技术的总称。这些技术规范都是沿用自 J2EE 的。一共包括了 13 个技术规范
-
包括:JDBC,JNDI,EJB,RMI,IDL/CORBA,JSP,Servlet,XML,JMS,JTA,JTS,JavaMail,JAF
1.2 Web概述和资源分类
1.2.1 Web概述
- WEB 在计算机领域中代表的是网络
- 像我们之前所用的 WWW,它是 World Wide Web 三个单词的缩写,称为:万维网
- 网络相关技术的出现都是为了让我们在网络的世界中获取资源,这些资源的存放之处,我们把它叫做网站
- 我们通过输入网站的地址(网址),就可以访问网站中提供的资源(不区分局域网或广域网)
1.2.2 资源分类
- 静态资源
- 网站中提供给人们展示的资源是一成不变的,也就是说不同人或者在不同时间,看到的内容都是一样的
- 例如:我们看到的新闻,网站的使用手册,网站功能说明文档等等
- 作为开发者来说,我们编写的 HTML、CSS、JavaScript 都属于静态资源
- 注意:这里说的是js文件本身属于静态资源,但是js可以实现界面动态效果
- 动态资源
- 网站中提供给人们展示的资源是由程序产生的,在不同的时间或不同的人由于身份的不同,所看到的内容是不一样的
- 例如:我们在12306上购买火车票,火车票的余票数由于时间的变化,会逐渐的减少,直到最后没有余票。
- 作为开发者来说,我们编写的 JSP、Servlet 等都属于动态资源
1.3 系统结构
1.3.1 系统结构简介
-
在我们前面课程的学习中,开发的都是 Java 工程。这些工程在企业中称之为项目或者产品。它都是有系统架构的
-
基础结构划分:
- CS 结构
- BS 结构
-
技术选型划分:
- Model1 模型
- Model2 模型
- MVC 模型
- 三层架构+ MVC 模型
-
部署方式划分:
- 一体化结构
- 垂直拆分结构
- 分布式结构
- 微服务结构
1.3.2 C/S结构
- CS 结构:(Client Server) 客户端+服务器的方式
1.3.3 B/S结构 ***
- BS 结构:(Browser Server) 浏览器+服务器的方式
1.3.4 两种结构的区别及优略
两种结构的区别
第一:硬件环境不同,C/S通常是建立在专用的网络或小范围的网络环境上(即局域网),且必须要安装客户端。而B/S是建立在广域网上的,适应范围强,通常有操作系统和浏览器就行。
第二:C/S结构比B/S结构更安全,因为用户群相对固定,对信息的保护更强。
第三:B/S结构维护升级比较简单,而C/S结构维护升级相对困难。
优略
1 C/S:是能充分发挥客户端PC的处理能力,很多工作可以在客户端处理后再提交给服务器。对应的优点就是客户端响应速度快。
2 B/S:总体拥有成本低、维护方便、 分布性强、开发简单,可以不用安装任何专门的软件就能 实现在任何地方进行操作,客户端零维护,系统的扩展非常容易,只要有一台能上网的电脑就能使用。
关于课程中结构的选择:我们的课程中涉及的系统结构都是是基于B/S结构。
2 Tomcat服务器
2.1. 服务器介绍
-
服务器是计算机的一种,它比普通计算机运行更快、负载更高、价格更贵。服务器在网络中为其它客户机(如 PC 机、智能设备等)提供计算或者应用服务。服务器具有高速的 CPU 运算能力、长时间的可靠运行、强大的 I/O 外部数据吞吐能力以及更好的扩展性
-
说白了,服务器(硬件)就是更牛逼的电脑
-
而我们这里所说的服务器,其实是 web 服务器,或者应用服务器。它本质就是一个软件,通过和硬件的相结合,从而达到帮助我们来发布应用的功能,让用户通过客户机访问我们的应用
-
服务器的概念非常的广泛,它可以指代一台特殊的计算机(相比普通计算机运行更快、负载更高、价格更贵),也可以指代用于部署网站的应用。
-
我们这里说的服务器,其实是web服务器,或者应用服务器。它本质就是一个软件,一个应用。作用就是发布我们的应用(工程),让用户可以通过浏览器访问我们的应用。
-
常见的应用服务器,请看下表:
服务器名称 | 说明 |
---|---|
weblogic | 实现了javaEE规范,重量级服务器,又称为javaEE容器 |
websphereAS | 实现了javaEE规范,重量级服务器。 |
JBOSSAS | 实现了JavaEE规范,重量级服务器。免费的。 |
Tomcat | 实现了jsp/servlet规范,是一个轻量级服务器,开源免费。 |
- 总结:
- 我们想要将一个项目让广大网民都可以访问,就需要将项目发布到一个web应用服务器中,然后这个web 应用服务器需要安装在一台服务器电脑上
- 就是说我们的项目,需要web应用服务器(软件)和服务器电脑(硬件)结合之后,才可以让广大网民访问
- web应用服务器Tomcat是用来管理项目的,而单单只要这个tomcat是不行的,如果咱们将tomcat装到自己的电脑上,有两个问题,1:性能太差,经不起多人访问;2:互联网用户无法访问咱们的电脑
- 我们需要一台有外网ip地址的,一台真正的服务器电脑
- Tomcat:是一个软件/应用服务器,用于发布项目,应用
- 服务器:是一个硬件服务器,真实的一台电脑
2.2 Tomcat介绍
-
Tomcat 是 Apache 软件基金会的 Jakarta 项目组中的一个核心项目,由 Apache、Sun 和其他一些公司及个人共同开发而成
-
由于有了 Sun 公司的参与和支持,最新的 Servlet、JSP 规范总是能在 Tomcat 中得到体现
-
因为 Tomcat 技术先进、性能稳定,而且免费,所以深受 Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的 Web 应用服务器
-
Tomcat 官网:https://tomcat.apache.org/
- 这只猫就是tomcat的logo
-
Tomcat各版本所需支持
2.2 Tomcat基本使用
2.2.1 Tomcat下载与安装
2.2.2 Tomcat目录结构详解 ***
- 重要记忆的目录:bin,conf,webapps
2.2.3 Tomcat启动和停止及问题分析解决
1)启动和停止
其中.bat
文件是针对windows
系统的运行程序,.sh
文件是针对linux
系统的运行程序。
2)启动问题
-
第一个问题:启动一闪而过
原因:没有配置环境变量
解决办法:配置上JAVA_HOME环境变量(一定要确保自己的jdk路径是对的,并且路径不要到bin,是到jdk根路径)
如果配置过JAVA_HOME还不行,就配置一个CTATLINE_HOME ,路径为tomcat根路径
-
第三个:启动产生很多异常,但能正常启动
原因:Tomcat中部署着很多项目,每次启动这些项目都会启动。而这些项目中有启动报异常的。
解决办法:
能找到报异常的项目,就把它从发布目录(webapps)中移除 不能确定报异常的项目,就重新解压一个新的Tomcat
-
第四个:其它问题
例如:启动产生异常,但是不能正常启动。此时就需要解压一个新的Tomcat启动,来确定是系统问题,还是Tomcat的问题
所以,此时就需要具体问题,具体分析,然后再对症解决
3)访问自己的界面
-
tomcat的项目发布目录:我们可以在webapps目录放入自己的项目,这样tomcat启动之后就可以访问这个项目
-
新建项目:新建hello/hello.html
-
编写内容:这里没写html的声明,html基本的结构标签,但是浏览器也可以解析
-
访问
2.3 Tomcat 乱码问题
-
问题描述:启动tomcat之后,控制台(命令行)出现乱码
-
问题解决:
- 打开tomcat目录下conf/logging.properties文件
- 修改如下:(将UTF-8改为gbk,因为cmd命令行窗口的字符集是gbk,所以要统一)
- 重新启动tomcat
2.4 IDEA集成Tomcat服务器 ***
- 第一步:点击 Run -> Edit Configurations
- 第二步:点击 Templates-> Tomcat Server -> Local(往下拖才能看到Tomcat Server)
- 第三步:点击 Configure -> Tomcat Home -> 选择 tomcat 所在路径
-
通过创建项目,验证Tomcat安装成功
- 创建一个Java Enterprise项目
- 项目名称
-
选择语言级别
-
最终:能看到下方的Tomcat即可
2.5 Linux系统安装Tomcat
第一步:找到Tomcat
apache-tomcat-9.0.29.tar.gz
第二步:上传到linux
在crt上 使用 alt+p
将windows上的软件拖进去即可(root目录)
第三步:进入/home/
cd /home/
第四步:移动 tomcat…tar.gz 到 /home/
mv apache-tomcat-9.0.29.tar.gz /home/
第五步:解压Tomcat
tar -zxvf apache-tomcat-9.0.29.tar.gz
第六步:进入 apache-tomcat-9.0.29/bin
cd /apache-tomcat-9.0.29/bin
第七步:启动tomcat
方式1:
./startup.sh
方式2:
sh startup.sh
第八步:访问:http://linuxip地址:8080
**第九步:修改防火墙的规则 **(如果访问不了,执行此步)
方式1:service iptables stop 关闭防火墙(不建议); 用到哪一个端口号就放行哪一个(80,8080,3306…)
方式2:放行8080 端口
2.6 JavaWeb项目创建 ***
2.6.1 JavaWeb工程概述
-
JavaWeb
应用是一个全新的应用种类。这类应用程序指供浏览器访问的程序,通常也简称为web应用 -
一个web应用由多个静态web资源和动态web资源组成,例如:html、css、js文件,jsp文件、java程序、支持jar包、工程配置文件、图片、音视频等等。
-
Web应用开发好后,若想供外界访问,需要把web应用所在目录交给Web服务器管理(Tomcat就是Web服务器之一),这个过程称之为虚似目录的映射
-
web工程目录
- .iml是项的配置文件(idea自动维护,我们不需要管)
2.6.2 JavaWeb应用的创建
- 创建项目(新建一个空项目,然后再新建一个web模块)
- 项目名称
-
选择语言级别
-
目录结构
- src:存放源代码的
- web:存放项目相关资源的(html、css、js、jsp、图片等)
- WEB-INF:存放相关配置的(web.xml等)
2.6.3 JavaWeb应用的部署
- 应用部署,就是项目发布
1)IDEA部署
-
点击 Run -> Edit Configurations
-
点击 Tomcat Server -> Deployment
- Application Context是项目访问路径(项目根路径),/代表默认路径,多个项目中只能有一个默认路径
-
点击 Tomcat Server -> Server
- After launch:启动tomcat自动以谷歌浏览器打开首页:http://localhost:8080/ , 这里的/就是刚刚配置的默认路径
- update resources , 是tomcat启动之后,我们还可能会修改项目,那这时候不用重新启动tomcat,只需要刷新浏览器,就可以看到修改后的内容
-
启动 tomcat 服务
-
验证结果:能看到Conneted to Server就说明启动成功,并且会自动打开项目首页
- 这里为啥显示的是一个 $END$,这是他默认访问的是index.jsp
-
根路径设置
-
修改之后,访问的路径就是/webdemo/
-
改一下首页
-
效果:不用重启tomcat,因为我们已经配置过 update resources,自动更新资源
注意: http://localhost:8080/ 访问项目根路径,相当于访问项目的web目录
如果通过url访问某个目录,默认打开此目录中的index.jsp、index.html、index.htm
可以配置虚拟路径:Application Context (应用上下文/项目根路径) /webdemo 指向的是项目的web目录
2.7 Tomcat配置
2.7.1 Tomcat配置文件介绍 ***
- 主配置文件 server.xml
- 8080 端口:tomcat 服务默认端口号。访问 url 地址后必须手动写 :8080
- 80 端口:HTTP协议采用的端口号。访问 url 地址后不用写 :80
- 一般我们访问人家的网址都是不用添加8080的,这是因为项目发布之后都会将端口改为80,80端口可以省略
-
可以改为80端口,重启tomcat进行测试,访问http://localhost
- 扩展:在今日资料中有tomcat其他的配置文件,“day01_tomcat和http协议\资料\扩展资料”,感兴趣的可以先自己了解下,我们后边用到的话会详细介绍
-
测试完之后,再改为8080端口
2.7.2 Tomcat配置虚拟目录 (了解)
- 虚拟目录的作用:可以发布任意目录下的项目
- 之前我们以war包形式发布的webdemo项目,是必须放到webapps目录下的,那我们能不能将其他目录的项目也发布到tomcat呢?
- 可以,需要配置虚拟目录
- 步骤:
-
编辑 server.xml 配置文件,找到<Host>标签
-
加入以下内容
- path 属性:访问资源的虚拟目录名称
- docBase属性:项目真实存在的路径
-
将之前发布的webdemo,copy到D盘,改名字为my
-
重启tomcat,访问:http://localhost:8080/my