IDEA构建JavaWeb项目,并通过Tomcat成功运行
目录
一、Tomcat简介
二、Tomcat安装步骤
1.选择分支下载
2.点击下载zip安装包
3.解压到没有中文、空格和特殊字符的目录下
4.双击bin目录下的startup.bat脚本启动Tomcat
5.浏览器访问Tomcat
6.关闭Tomcat服务器
三、Tomcat目录介绍
四、WEB项目的标准结构
五、WEB项目部署的三种方式
(一)方式一——直接将编译好的项目放在webapps目录下
(二)方式二——war包放在webapps目录下
(三)IDEA中开发并部署运行WEB项目
六、IDEA中开发并部署运行WEB项目
1.创建一个空项目或空模块
2.配置Web Application
3.搭建内部框架
4.构建项目
5.运行Tomcat项目
6.浏览器访问
七、IDEA部署并运行JavaWeb项目的原理
八、Tomcat支持热部署
一、Tomcat简介
Web服务器通常由硬件和软件共同构成。
-
硬件:电脑,提供服务供其它客户电脑访问
-
软件:电脑上安装的服务器软件,安装后能提供服务给网络中的其他计算机,将本地文件映射成一个虚拟的url地址供网络中的其他人访问。
常见的JavaWeb服务器:
Tomcat(Apache):当前应用最广的JavaWeb服务器
Jetty:更轻量级、更灵活的servlet容器
JBoss(Redhat红帽):支持JavaEE,应用比较广EJB容器 –> SSH轻量级的框架代替
GlassFish(Orcale):Oracle开发JavaWeb服务器,应用不是很广
Resin(Caucho):支持JavaEE,应用越来越广
Weblogic(Orcale):要钱的!支持JavaEE,适合大型项目
Websphere(IBM):要钱的!支持JavaEE,适合大型项目
Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。
Tomcat 版本和Servlet版本之间的对应关系:
Servlet Version | Tomcat Version | JDK Version |
---|---|---|
6.1 | 11.0.x | 17 and later |
6.0 | 10.1.x | 11 and later |
5.0 | 10.0.x (superseded) | 8 and later |
4.0 | 9.0.x | 8 and later |
3.1 | 8.5.x | 7 and later |
3.1 | 8.0.x (superseded) | 7 and later |
3.0 | 7.0.x (archived) | 6 and later (7 and later for WebSocket) |
二、Tomcat安装步骤
注意:安装Tomcat之前要安装JDK!
官网:https://tomcat.apache.org/
1.选择分支下载
进入该网址:https://archive.apache.org/dist/tomcat/tomcat-8/v8.5.34/bin/
2.点击下载zip安装包
3.解压到没有中文、空格和特殊字符的目录下
4.双击bin目录下的startup.bat脚本启动Tomcat
会弹出一个Dos窗口,这个就是Tomcat服务器
如果你下载的Tomcat是10版本,Dos窗口打印的中文可能会有乱码,解决方式如下:
Tomcat——config——logging.properties文件:修改编码格式为GBK
5.浏览器访问Tomcat
浏览器地址栏输入:http://localhost:8080/
出现下面的页面,就说明Tomcat服务器访问成功。
6.关闭Tomcat服务器
8080端口只能被占用一次 重复启动时 会报错 端口占用 无法正常启动
关闭tomcat时 建议使用脚本关闭 主动释放端口 直接杀进程 端口释放不及时 有时候会卡主端口 长时间不释放
建议用脚本关闭
三、Tomcat目录介绍
bin:该目录下存放的是二进制可执行文件,如果是安装版,那么这个目录下会有两个exe文件:tomcat8.exe、tomcat8w.exe,前者是在控制台下启动Tomcat,后者是弹出GUI窗口启动Tomcat;如果是解压版,那么会有startup.bat和shutdown.bat文件,startup.bat用来启动Tomcat,但需要先配置JAVA_HOME环境变量才能启动,shutdown.bat用来停止Tomcat;
conf:这是一个非常非常重要的目录,这个目录下有四个最为重要的文件:
server.xml:配置整个服务器信息。例如修改端口号。默认HTTP请求的端口号是:8080
修改启动端口号:conf/server.xml
tomcat-users.xml:存储tomcat用户的文件,这里保存的是tomcat的用户名及密码,以及用户的角色信息。可以按着该文件中的注释信息添加tomcat用户,然后就可以在Tomcat主页中进入Tomcat Manager页面了;
<tomcat-users xmlns="http://tomcat.apache.org/xml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd"
version="1.0">
<role rolename="admin-gui"/>
<role rolename="admin-script"/>
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="manager-jmx"/>
<role rolename="manager-status"/>
<user username="admin"
password="admin"
roles="admin-gui,admin-script,manager-gui,manager-script,manager-jmx,manager-status"
/>
</tomcat-users>
web.xml:部署描述符文件,这个文件中注册了很多MIME类型,即文档类型。这些MIME类型是客户端与服务器之间说明文档类型的,如用户请求一个html网页,那么服务器还会告诉客户端浏览器响应的文档是text/html类型的,这就是一个MIME类型。客户端浏览器通过这个MIME类型就知道如何处理它了。当然是在浏览器中显示这个html文件了。但如果服务器响应的是一个exe文件,那么浏览器就不可能显示它,而是应该弹出下载窗口才对。MIME就是用来说明文档的内容是什么类型的!
context.xml:对所有应用的统一配置,通常我们不会去配置它。
lib:Tomcat的类库,里面是一大堆jar文件。如果需要添加Tomcat依赖的jar文件,可以把它放到这个目录中,当然也可以把应用依赖的jar文件放到这个目录中,这个目录中的jar所有项目都可以共享之,但这样你的应用放到其他Tomcat下时就不能再共享这个目录下的jar包了,所以建议只把Tomcat需要的jar包放到这个目录下;
logs:这个目录中都是日志文件,记录了Tomcat启动和关闭的信息,如果启动Tomcat时有错误,那么异常也会记录在日志文件中。
temp:存放Tomcat的临时文件,这个目录下的东西可以在停止Tomcat后删除!
webapps:存放web项目的目录,其中每个文件夹都是一个项目;如果这个目录下已经存在了目录,那么都是tomcat自带的项目。其中ROOT是一个特殊的项目,在地址栏中访问:http://127.0.0.1:8080,没有给出项目目录时,对应的就是ROOT项目。http://localhost:8080/examples,进入示例项目。其中examples"就是项目名,即文件夹的名字。
项目的访问路径与项目的部署目录可以不一致,可以在IDEA中配置:
work:运行时生成的文件,最终运行的文件都在这里。通过webapps中的项目生成的!可以把这个目录下的内容删除,再次运行时会生再次生成work目录。当客户端用户访问一个JSP文件时,Tomcat会通过JSP生成Java文件,然后再编译Java文件生成class文件,生成的java和class文件都会存放到这个目录下。
LICENSE:许可证。
NOTICE:说明文件。
四、WEB项目的标准结构
一个标准的可以用于发布的WEB项目标准结构如下
-
app 本应用根目录
-
static 非必要目录,约定俗成的名字,一般在此处放静态资源 (css js img)
-
WEB-INF 必要目录,必须叫WEB-INF,受保护的资源目录,浏览器通过url不可以直接访问的目录
-
classes 必要目录,src下源代码,配置文件,编译后会在该目录下,web项目中如果没有源码,则该目录不会出现
-
lib 必要目录,项目依赖的jar编译后会出现在该目录下,web项目要是没有依赖任何jar,则该目录不会出现
-
web.xml 必要文件,web项目的基本配置文件。较新的版本中可以没有该文件,但是学习过程中还是需要该文件
-
-
index.html 非必要文件,index.html/index.htm/index.jsp为默认的欢迎页
-
在tomcat的webapps目录下新建app文件,具体文件结构如下:
访问login.html:
访问regist.html:
访问static/img/logo.jpg:
如果在WEB-INF目录下放一张图片,图片无法访问:
五、WEB项目部署的三种方式
(一)方式一——直接将编译好的项目放在webapps目录下
上面已经演示过。
(二)方式二——war包放在webapps目录下
将编译好的项目打成war包放在webapps目录下,tomcat启动后会自动解压war包(其实和第一种一样)
-
在tomcat的conf下创建Catalina/localhost目录,并在该目录下准备一个app.xml文件
<!--
path: 项目的访问路径,也是项目的上下文路径,就是在浏览器中,输入的项目名称
docBase: 项目在磁盘中的实际路径
-->
<Context path="/app" docBase="D:\mywebapps\app" />
-
启动tomcat访问测试即可
url的组成部分和项目中资源的对应关系:
tomcat的webapps目录默认给我们提供了如下项目:
浏览器访问项目名,有没有输入index.html都是默认展示这一页
ROOT项目比较特殊,它的部署目录和访问路径不一致,访问方式如下:
浏览器地址不需要写ROOT:http://localhost:8080/index.jsp
(三)IDEA中开发并部署运行WEB项目
IDEA可以配置多个Tomcat,点击+号还可以继续新增
六、IDEA中开发并部署运行WEB项目
1.创建一个空项目或空模块
2.配置Web Application
如果你的Tomcat版本是10以上,需要先做这一步:
再重新勾选Web Application,选择5.0版本
3.搭建内部框架
删除index.jsp
Java代码写在src中,网页代码写在web目录下:
新增日程管理一期的login.html和regist.html到web下,新增static目录,下面放多个目录和文件
当前项目的jar包必须放在WEB-INF下的lib目录中
4.构建项目
选择要build的项目进行Build
- resources和src文件编译后的文件,放在classes中;
- web对应demo01_web01_war_exploded,demo01_web01_war_exploded就是可以在Tomcat中发布的app;
- static和WEB-INF对应demo01_web01_war_exploded下的static和WEB-INF;
build部分的步骤也可以跳过,在这里配置完成后直接启动项目即可:
5.运行Tomcat项目
6.浏览器访问
停止服务,删除out文件,再重新启动,浏览器输入url,也可以成功访问,IDEA会自动进行build
Catalina log乱码问题解决:
Tomcat10以上版本可能会出现乱码问题,修改config目录下的logging.properties文件的编码即可。
七、IDEA部署并运行JavaWeb项目的原理
构建好的项目并不会放在Tomcat安装目录的webapps中,防止污染本地安装的Tomcat,而是放在Tomcat生成的副本中
Tomcat磁盘上的软件按照Tomcat副本中的配置文件进行运行,这样既不会污染本地安装的Tomcat软件,创建的副本也很小。
IDEA部署并运行项目的原理
idea并没有直接进将编译好的项目放入tomcat的webapps中
idea根据关联的tomcat,创建了一个tomcat副本,将项目部署到了这个副本中
idea的tomcat副本在C:\Users\Administrator\AppData\Local\JetBrains\IntelliJIdea2022.2\tomcat\中
idea的tomcat副本并不是一个完整的tomcat,副本里只是准备了和当前项目相关的配置文件而已
idea启动tomcat时,是让本地tomcat程序按照tomcat副本里的配置文件运行
idea的tomcat副本部署项目的模式是通过conf/Catalina/localhost/*.xml配置文件的形式实现项目部署的
C:\Users\Administrator\AppData\Local\JetBrains\IntelliJIdea2022.2\tomcat\35d71a34-4fc7-4686-917a-b4aca77b806a\conf\Catalina\localhost目录下的*.xml文件:
<Context path="/web01" docBase="G:\develop\workspace\atguigujavaweb\one\basecode\out\artifacts\demo01_web01_war_exploded" />
八、Tomcat支持热部署
当想要修改代码时,不需要重启Tomcat服务,点击热部署按钮即可。