JavaWeb-Tomcat

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)
  1. 根据对照关系,选择相应的Tomcat版本,去Tomcat官网https://tomcat.apache.org/下载对应的版本。我这里下载9.0版本的解压版。页面下方还有源码可以下载。![在这里插入图片描述](https://file.jishuzhan.net/article/1732941322416820225/8b14742c5eb5386dfb6a3760d96b2ec3.webp)
  2. 解压Tomcat到非中文无空格的路径。在解压之前,需要先安装好JDK,并配置好JAVA_HOME变量,如果之前安装过JDK,那么环境变量应该已经配置好了。
    3. 点击bin/startup.bat启动服务,启动后窗口不能关闭。
  3. 打开浏览器输入http://localhost:8080访问测试,如果出现如下页面,说明打开服务成功。
  4. 关闭服务时,可以通过关闭第三步打开的窗口,还可以启动bin/shutdown.bat来关闭服务。
  5. 打开服务时,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项目的部署方式

  1. 将编译好的项目直接放在Tomcat的webapps目录下。
  2. 将编译好的项目打包成war包,再放在webapps目录下,tomcat启动后会自动解压war包部署项目。
  3. 将编译好的项目放在其他路径下,通过配置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项目。

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是通过该文件获得项目的路径的。
相关推荐
编程、小哥哥11 分钟前
netty之Netty与SpringBoot整合
java·spring boot·spring
IT学长编程1 小时前
计算机毕业设计 玩具租赁系统的设计与实现 Java实战项目 附源码+文档+视频讲解
java·spring boot·毕业设计·课程设计·毕业论文·计算机毕业设计选题·玩具租赁系统
莹雨潇潇1 小时前
Docker 快速入门(Ubuntu版)
java·前端·docker·容器
杨哥带你写代码2 小时前
足球青训俱乐部管理:Spring Boot技术驱动
java·spring boot·后端
郭二哈2 小时前
C++——模板进阶、继承
java·服务器·c++
A尘埃2 小时前
SpringBoot的数据访问
java·spring boot·后端
yang-23072 小时前
端口冲突的解决方案以及SpringBoot自动检测可用端口demo
java·spring boot·后端
沉登c2 小时前
幂等性接口实现
java·rpc
代码之光_19802 小时前
SpringBoot校园资料分享平台:设计与实现
java·spring boot·后端
科技资讯早知道3 小时前
java计算机毕设课设—坦克大战游戏
java·开发语言·游戏·毕业设计·课程设计·毕设