1. Web服务器
- web服务器由硬件和软件组成:
- 硬件:计算机系统
- 软件:计算机上安装的服务器软件,安装后可以为web应用提供网络服务。
- 常见的JavaWeb服务器:
- Tomcat(Apache):应用最广泛的web服务器。
- Jetty:更轻量级、更灵活的servlet容器。
- Jboss(Redhat):支持JavaEE,应用较广。
- GlassFish(Orcale):应用不是很广。
- Resin(Caucho)
- Weblogic(Orcale):付费,适合大型项目。
- Websphere(IBM):付费,适合大型项目。
服务器硬件为JRE提供硬件支持,JRE为Tomcat提供运行环境,Tomcat为APP提供网络服务。
JRE就像操作系统,Tomcat就像浏览器,APP就像网页。网页无法直接在操作系统上显示,必须由浏览器解析显示,浏览器也无法直接在计算机硬件上运行,必须通过操作系统与底层交互。也就是说,APP需要通过Tomcat提供的服务完成相应功能,而Tomcat需要在JRE上才能运行。
2. Tomcat
2.1 简介
Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。
2.2 安装
Tomcat版本、servlet版本和JavaEE版本对照关系
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官网https://tomcat.apache.org/下载对应的版本。我这里下载9.0版本的解压版。页面下方还有源码可以下载。
- 解压Tomcat到非中文无空格的路径。在解压之前,需要先安装好JDK,并配置好JAVA_HOME变量,如果之前安装过JDK,那么环境变量应该已经配置好了。
3. 点击bin/startup.bat启动服务,启动后窗口不能关闭。
- 打开浏览器输入http://localhost:8080访问测试,如果出现如下页面,说明打开服务成功。
- 关闭服务时,可以通过关闭第三步打开的窗口,还可以启动bin/shutdown.bat来关闭服务。
- 打开服务时,dos窗口出现乱码的原因是dos窗口的编码是GBK,而打印信息的编码是utf-8,所以会出现乱码,可以通过修改conf/logging.properties文件中的java.util.logging.ConsoleHandler.encoding修改为GBK即可解决问题。
2.3 Tomcat目录及测试
-
D:\apache-tomcat-9.0.83称为Tomcat的安装目录或根目录。
-
bin目录中存放的是二进制可执行文件,解压版下的bin目录中有startup.bat和shutdown.bat等文件,安装版下的内容与解压版可能不同。要使bin目录中的命令可以在命令行中使用,需要配置环境变量。在环境变量中,添加CATALINA_HOME的变量,值为Tomcat的安装路径,然后path中添加路径 %CATALINA_HOME%\bin。但是在配置好环境变量后,如果安装其他版本的Tomcat,点击该版本bin目录下的startup.bat文件,运行的也会是环境变量中绑定目录下的startup.bat文件。
-
conf目录中存放的是配置信息,其下有4个非常重要的文件:
-
server.xml:配置整个服务器的信息,例如端口号。默认的HTTP请求的端口号是8080.
-
tomcat-users.xml:存储tomcat用户的文件,保存用户名和密码,以及用户的角色信息。可以按照该文件中的注释信息添加tomcat用户,然后就可以在Tomcat主页中进入Tomcat Manager页面了。
-
web.xml:部署描述符文件,这个文件中注册了很多MIME类型,即文档类型。这些MIME类型是客户端与服务器之间说明文档类型的,如用户请求一个HTML网页,那么服务器还会告诉客户端浏览器响应的文档是text/html类型的,这就是一个MIME类型。客户端浏览器通过这个MIME类型就知道如何处理它了。
-
context.xml:对所有应用的统一配置,通常我们不会去配置它。
-
-
lib:Tomcat的类库,里面是jar文件。这个目录中的jar文件被Tomcat中的所有项目共享。
-
logs:这个目录是用于存放日志文件的,记录了Tomcat启动和关闭的信息,如果启动Tomcat时有错误,也会记录在日志文件中。不需要的日志文件可以删除。
-
temp:存放Tomcat的临时文件,这个目录下的东西可以在停止Tomcat后删除。
-
webapps:存放web项目的目录,其中每个文件夹都是一个项目。Tomcat有一些自带的项目,使用浏览器访问8080端口,访问的就是ROOT项目。
-
work:与JSP有关。
-
LICENSE:许可证。
-
NOTICE:说明文件。
2.4 Web项目的标准结构
- test_app:本应用的根目录。
- static:非必要目录,约定俗称的名字,可以改成其他名字,用于存放静态资源如css、js和图片等。
- WEB-INF:必要目录,并且名字不能更改,是受保护的资源目录,浏览器无法通过url直接访问该目录下的资源。
- classes:必要目录,用于存放字节码。如果项目中没有原码,则该目录不会出现。
- lib:必要目录,存放此项目需要依赖的jar包。
- web.xml:必要文件,项目的基本配置信息。较新版本中可以没有该文件。
- index.html:访问该项目时默认的访问页面。
- 其他html文件:项目中的其他html页面。
2.5 Web项目的部署方式
- 将编译好的项目直接放在Tomcat的webapps目录下。
- 将编译好的项目打包成war包,再放在webapps目录下,tomcat启动后会自动解压war包部署项目。
- 将编译好的项目放在其他路径下,通过配置XML文件使得tomcat能够找到对应的项目。
- 将项目直接放在D盘根目录下,然后在tomcat安装目录的conf\Catalina\localhost目录下新建一个与项目名相同的xml文件,并在文件中加上如下代码
<Context path="自定义的项目上下文路径" docBase="项目在磁盘中的位置" />
。项目上下文路径是在浏览器中需要输入的项目名称,需要与项目名称相同,如果不同则需要配置其他信息。
项目部署信息:
访问项目: - 在浏览器输入的url与服务器资源的对应关系:
- 访问webapps下自带的项目:
- docs项目:
- examples:
- host-manager和manager:访问这两个项目需要验证用户名和密码,可以在上面提到过的tomcat-users.xml文件中配置用户信息,加入以下代码即可:
<role rolename="admin-gui" /> <role rolename="admin-script" /> <role rolename="manager-script" /> <role rolename="manager-jmx" /> <role rolename="manager-status" /> <user username="admin" password="123456" roles="admin-gui,admin-script,manager-gui,manager-script,manager-jmx,manager-status" />
- ROOT:ROOT项目的上下文路径不为ROOT,直接访问8080端口访问的就是ROOT项目。
- 将项目直接放在D盘根目录下,然后在tomcat安装目录的conf\Catalina\localhost目录下新建一个与项目名相同的xml文件,并在文件中加上如下代码
2.6 IDEA中开发并部署运行Web项目
首先在IDEA中创建JavaWeb工程,然后将Java工程构建成可用于部署的app,再将app部署在tomcat上运行,这一系列操作都通过IDEA来完成。
2.6.1 IDEA关联本地Tomcat
- 打开IDEA的设置页面,找到Build,Execution,Deployment下的Application Servers。
- 点击加号并且选择Tomcat Server。
- 选择Tomcat的安装目录。
- 点击apply后,IDEA与Tomcat关联成功。
2.6.2 IDEA创建JavaWeb工程
-
首先创建一个空项目,空项目下可以放多个module,也可以直接创建web工程。
-
检查项目的SDK版本,语法版本,以及项目编译后的输出目录。
-
创建一个普通的Java项目。
-
为Java项目添加依赖。点击后选择Tomcat。
-
为Java项目添加framework support。在这里要注意版本的匹配问题,4.0版本可能不一定适用。
-
将index.jsp文件替换为index.html文件。
-
处理配置文件,在工程下建立一个resources目录,用于存放配置文件。都放在src目录下也可以,但是会很混乱。标记该目录为资源目录,否则该文件不参与编译。
-
在web目录的WEB-INF目录下建立lib目录,用于存放项目所需要的jar包依赖,并将lib目录添加为项目的依赖,环境级别选择module级别,降低对其他项目的影响。后续可以使用maven统一解决。
2.6.3 IDEA部署和运行web项目
- 可以通过查看web目录有无特殊标记确定IDEA是否识别该项目为web项目,以及artifacts下,有没有对应的_war_exploded,如果没有,就点加号添加。
- 在菜单栏的run选项下找到edit configuration,并点击加号添加本地Tomcat服务器。
- 然后在弹出页面的deployment选项中,通过加号添加要部署到Tomcat中的artifacts。application context就是应用上下文路径,也就是在url中需要填写的路径,这里可以和工程名不一样,也可以不写,但是要保留 ‘/’。
- after launch选项是指项目启动成功后,是否自动打开浏览器,并输入URL中的地址。点击apply完成设置。
- 运行项目。
2.6.4 IDEA部署运行项目的原理
- IDEA并没有将编译好的项目直接放入Tomcat的webapps目录下,而是根据关联的tomcat,创建了一个tomcat副本,然后将项目部署到了这个副本中。
- IDEA的tomcat副本在用户文件夹下的AppData\Local\JetBrains\IntelliJIdea2023.2\tomcat中。
- IDEA的tomcat副本并不是一个完整的tomcat,副本里只准备了和当前项目相关的配置文件。
- IDEA启动tomcat时,是让本地tomcat按照tomcat副本里的配置文件运行。
- IDEA的tomcat副本中的conf\Catalina\localhost\xml文件中配置了项目的上下文路径和磁盘中的路径,所以tomcat是通过该文件获得项目的路径的。