1. 简介

1.1 什么是Web服务器

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

1.2 Web服务器软件使用步骤

  • 准备静态资源。
  • 下载安装Web服务器软件。
  • 将静态资源部署到Web服务器上。
  • 启动Web服务器使用浏览器访问对应的资源。

上述内容在演示的时候,使用的是Apache下的Tomcat软件,至于Tomcat软件如何使用,后面会详细的讲到。而对于Web服务器来说,实现的方案有很多,Tomcat只是其中的一种,而除了Tomcat以外,还有很多优秀的Web服务器,比如:在这里插入图片描述

1.3 认识Tomcat

  • Tomcat是Apache软件基金会一个核心项目,是一个开源免费的轻量级Web服务器,支持Servlet/JSP少量JavaEE规范。
  • 概念中提到了JavaEE规范,那什么又是JavaEE规范呢?
    JavaEE:Java Enterprise Edition,Java企业版。指Java企业级开发的技术规范总和。包含13项技术规范:JDBC、JNDI、EJB、RMI、JSP、Servlet、XML、JMS、Java IDL、JTS、JTA、JavaMail、JAF。
  • 因为Tomcat支持Servlet/JSP规范,所以Tomcat也被称为Web容器、Servlet容器。Servlet需要依赖Tomcat才能运行。
  • Tomcat的官网:从官网上可以下载对应的版本进行使用。

Tomcat的LOGO
在这里插入图片描述

1.4 总结

  1. Web服务器的作用:
    • 封装HTTP协议操作,简化开发。
    • 可以将Web项目部署到服务器中,对外提供网上浏览服务。
  2. Tomcat是一个轻量级的Web服务器,支持Servlet/JSP少量JavaEE规范,也称为Web容器,Servlet容器。

2. 基本使用

2.1 下载

直接从官网下载
在这里插入图片描述
在这里插入图片描述
右边往下滑
在这里插入图片描述

2.2 安装

Tomcat是一个绿色版软件,直接解压即可

  • 自己选择磁盘目录目,将Tomcat软件安装包(我这里选择的是11.0.9版本)进行解压缩,会得到一个apache-tomcat-11.0.9的目录,Tomcat就已经安装成功。
    注意,Tomcat在解压缩的时候,解压所在的目录可以任意,但最好解压到一个不包含中文和空格的目录,因为后期在部署项目的时候,如果路径有中文或者空格可能会导致程序部署失败。
  • 打开apache-tomcat-11.0.9目录就能看到如下目录结构,每个目录中包含的内容需要认识下:
    在这里插入图片描述
    bin:目录下有两类文件,一种是以.bat结尾的,是Windows系统的可执行文件,一种是以.sh结尾的,是Linux系统的可执行文件。
    webapps:就是以后项目部署的目录,当发布Web应用时,默认情况下会将Web应用的文件存放于此目录中。
    work:Tomcat把由JSP生成的Servlet放于此目录下。

Tomcat是用Java语言编写的,所以依赖的都是些jar包。

到此,Tomcat的安装就已经完成。

2.3 卸载

卸载比较简单,可以直接删除目录即可。

2.4 启动

在apache-tomcat-11.0.9\bin目录下找到startup.bat,双击就会启动Tomcat。
在这里插入图片描述
启动后,通过浏览器访问 http://localhost:8080能看到Apache Tomcat的内容就说明Tomcat已经启动成功。
在这里插入图片描述

注意: 启动的过程中,控制台有中文乱码,这是因为Tomcat输出的日志信息是UTF-8编码,而我们Windows控制台是GBK的编码,所以控制台输出会产生乱码,需要修改 apache-tomcat-11.0.9\conf 目录下的 logging.prooperties 文件中的参数:

把java.util.logging.ConsoleHandler.encoding = UTF-8 中的 UTF-8 改为 GBK。
在这里插入图片描述

2.5 关闭

关闭有三种方式:

  • 直接x掉运行窗口:强制关闭(不建议)
  • 运行apache-tomcat-11.0.9\bin目录下的shutdown.bat:正常关闭
  • 直接在运行窗口中按ctrl+c:正常关闭

将来在正常关闭的情况下,可以执行一些资源释放的逻辑性处理,如果是强制关闭,这些方法就执行不了了。

2.6 配置

修改端口

  • Tomcat默认的端口是8080,要想修改Tomcat启动的端口号,需要修改 conf/server.xml 中如下图中的port的参数。
    在这里插入图片描述

注:如果将Tomcat端口号改为80,则将来访问Tomcat时,将不用输入端口号,即输入localhost即可,与localhost:80效果一样。因为HTTP协议默认端口号为80,即使不写端口号,也默认端口号为80。

启动时可能出现的错误

  • Tomcat的端口号取值范围是0-65535之间任意未被占用的端口,如果设置的端口号被占用,启动的时候就会包如下的错误:
    在这里插入图片描述
    出现这样的错误后,我们只需找到对应的应用程序,将其关掉,再启动Tomcat就可以了。
  • Tomcat启动的时候,启动窗口一闪而过:需要检查JAVA_HOME环境变量是否正确配置。
    因为Tomcat是由Java语言编写的,如果要运行Tomcat就需要当前电脑有JDK环境,去寻找JAVA_HOME安装目录,如果JAVA_HOME未正确配置,就找不到当前电脑中的JDK。
    在这里插入图片描述

2.7 部署

  • Tomcat部署项目:

    • 将项目放置到webapps目录下,即部署完成。这里我有一个示例项目:
      在这里插入图片描述
      其中有如下文件
      在这里插入图片描述
      直接将hello文件夹放置到webapps目录下,就部署成功了。
      在这里插入图片描述
    • 通过浏览器访问http://localhost:端口号/hello/a.html(端口号默认为8080,如果端口号设置为80则可以把:80省略),能看到下面的内容就说明项目已经部署成功。
      在这里插入图片描述
      但是呢随着项目的增大,项目中的资源也会越来越多,项目在拷贝的过程中也会越来越费时间,该如何解决呢?
  • 一般JavaWeb项目会被打包成war包,然后将war包放到Webapps目录下,Tomcat会自动解压缩war文件,这里我有一个haha.war包:

    • 将haha.war包拷贝到webapps目录下。
    • Tomcat检测到war包后会自动完成解压缩,在webapps目录下就会多一个haha目录。
      在这里插入图片描述
    • 通过浏览器访问http://localhost:端口号/haha/a.html,(端口号默认为8080,如果端口号设置为80则可以把:80省略),能看到下面的内容就说明项目已经部署成功。
      在这里插入图片描述

3. Maven创建Web项目

介绍完Tomcat的基本使用后,我们来学习在IDEA中如何创建Maven Web项目,学习这种方式的原因是以后Tomcat中运行的绝大多数都是Web项目,而使用Maven工具能更加简单快捷的把Web项目给创建出来,所以Maven的Web项目具体如何来构建呢?想要了解普通Java项目是如何构建Web项目的见:Java创建Web项目

在真正创建Maven Web项目之前,我们先要知道Web项目长什么样子,具体的结构是什么?

3.1 Web项目结构

Web项目的结构分为:开发中的项目和开发完可以部署的Web项目,这两种项目的结构是不一样的,我们一个个来介绍下:

  • Maven Web项目结构:开发中的项目
    在这里插入图片描述
    Maven Web的项目与之前Maven Java的项目区别就是多了webapp目录,这是Web项目特有的目录,这个目录下放了一些对应Web的资源。这些目录下的文件将来就可以对外提供服务,别人就可以访问到了。
    Web项目在pom文件中打包方式设置为war包的方式:
    在这里插入图片描述
  • 开发完成部署的Web项目
    其实就是把webapp目录下的资源
    在这里插入图片描述
    • 开发项目通过执行Maven打包命令package,打包完的war包就放在target目录下,可以将获取到war包部署到的Tomcat的webapps目录下,就可以来运行了。
    • 编译后的Java字节码文件和resources的资源文件,会被放到WEB-INF下的classes目录下。
    • pom.xml中依赖坐标对应的jar包,会被放入WEB-INF下的lib目录下。

3.2 创建Maven Web项目

介绍完Maven Web的项目结构后,接下来使用Maven来创建Web项目,创建方式有两种:使用骨架和不使用骨架。

3.2.1 使用骨架

具体的步骤包含:

  1. 创建Maven项目。
  2. 选择使用Web项目骨架。
  3. 输入Maven项目坐标创建项目。
  4. 确认Maven相关的配置信息后,完成项目创建。
  5. 删除pom.xml中多余内容。
  6. 补齐Maven Web项目缺失的目录结构。
  1. 创建Maven项目
    在这里插入图片描述
  2. 选择使用Web项目骨架
    在这里插入图片描述
  3. 输入Maven项目坐标创建项目
    在这里插入图片描述
  4. 确认Maven相关的配置信息后,完成项目创建
    在这里插入图片描述
  5. 删除pom.xml中多余内容,只留下面的这些内容,注意打包方式 jar和war的区别
    在这里插入图片描述
  6. 补齐Maven Web项目缺失的目录结构,默认没有java和resources目录,需要手动完成创建补齐(右击main -> New -> Directory -> 快捷选择java或resources创建):
    在这里插入图片描述
    最终的目录结果如下
    在这里插入图片描述

3.2.2 不使用骨架

具体的步骤包含:

  1. 创建Maven项目。
  2. 选择不使用Web项目骨架。
  3. 输入Maven项目坐标创建项目。
  4. 在pom.xml设置打包方式为war。
  5. 补齐Maven Web项目缺失webapp的目录结构。
  6. 补齐Maven Web项目缺失WEB-INF/web.xml的目录结构。
  1. 创建Maven项目
    在这里插入图片描述
  2. 选择不使用Web项目骨架
    在这里插入图片描述
  3. 输入Maven项目坐标创建项目
    在这里插入图片描述
  4. 在pom.xml设置打包方式为war,默认是不写,代表打包方式为jar
    在这里插入图片描述
  5. 补齐Maven Web项目缺失的Web资源目录webapp的目录结构
    在这里插入图片描述
  6. 补齐Maven Web项目缺失WEB-INF/web.xml的目录结构,如果补齐目录结构WEB-INF/web.xml时路径写错了,可以直接把补齐的目录结构WEB-INF/web.xml手动拖到webapp下
    在这里插入图片描述
  7. 补充完后,最终的项目结构如下:
    在这里插入图片描述

上述两种方式,创建的web项目,都不是很全,需要手动补充内容,至于最终采用哪种方式来创建Maven Web项目,都是可以的,根据各自的喜好来选择使用即可。

4. IDEA使用Tomcat

Maven Web项目创建成功后,通过Maven的package命令可以将项目打包成war包,将war文件拷贝到Tomcat的webapps目录下,启动Tomcat就可以将项目部署成功,然后通过浏览器进行访问即可。

然而我们在开发的过程中,项目中的内容会经常发生变化,如果按照上面这种方式来部署测试,是非常不方便的。

如何在IDEA中能快速使用Tomcat呢?

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

4.1 集成本地Tomcat

将本地安装好的Tomcat集成到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页面
    在这里插入图片描述
    点击启动Tomcat
    在这里插入图片描述

  6. 启动成功后,可以通过浏览器进行访问测试
    IDEA打开浏览器,访问的是当前这个项目的根目录
    在这里插入图片描述
    要想访问里面的资源,比如刚刚添加的html页面,直接在后面输入a.html -> 回车
    在这里插入图片描述

  7. 最终的注意事项
    在这里插入图片描述
    若想修改项目最终访问地址,点击Deployment,在下面Application context中修改
    在这里插入图片描述

4.2 Tomcat Maven插件

在IDEA中使用本地Tomcat进行项目部署,相对来说步骤比较繁琐,所以我们需要一种更简便的方式来替换它,那就是直接使用Maven中的Tomcat插件来部署项目,具体的实现步骤,只需要两步,分别是:

  1. 在pom.xml中添加Tomcat插件的依赖坐标,坐标添加完成后,就相当与在Maven项目中集成了一个内置的Tomcat。
    (可在pom.xml文件中按Alt+Insert -> 选择Plugin Template 快捷创建插件模板,然后填写坐标)
    在这里插入图片描述
    在这里插入图片描述
  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>8080</port><!--访问端口号 --><!--项目访问路径未配置访问路径: http://localhost:8080/tomcat-demo2/a.html配置/后访问路径: http://localhost:8080/a.html如果配置成 /hello,访问路径会变成什么?答案: http://localhost:80/hello/a.html--><path>/</path></configuration></plugin></plugins>
</build>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/916204.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/916204.shtml
英文地址,请注明出处:http://en.pswp.cn/news/916204.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

list 介绍 及 底层

list的相关文档&#xff1a;list - C Reference 一、list的介绍及使用 list中的接口比较多&#xff0c;此处类似&#xff0c;只需要掌握如何正确的使用&#xff0c;然后再去深入研究背后的原理&#xff0c;已达到可扩展的能力。以下为list中一些常见的重要接口。我们库里的list…

HCIP MGRE实验

一、实验要求 1、R5为ISP&#xff0c;只能进行IP地址配置&#xff0c;其所有地址均配为公有Ip地址; 2、 R1和R5间使用PPP的PAP认证&#xff0c;R5为主认证方&#xff1b; R2与R5之间使用PPP的CHAP认证&#xff0c;R5为主认证方; R3与R5之间使用HDLC封装; 3、R2、R3构建一…

基于PyTorch的多视角二维流场切片三维流场预测模型

基于PyTorch的多视角二维流场切片三维流场预测模型 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家&#xff0c;觉得好请收藏。点击跳转到网站。 1. 引言 计算流体动力学(CFD)在工程设计和科学研究中扮演…

全新轻量化PHP网盘搜索引擎系统源码

内容目录一、详细介绍二、效果展示1.部分代码2.效果图展示三、学习资料下载一、详细介绍 全新轻量化PHP网盘搜索引擎系统源码 基于PHPMYSQL开发 一、多样筛选功能&#xff1a;网站支持5类筛选功能&#xff0c;包括默认搜索、网盘类型、文件大小、时间排序以及网盘来源&#x…

C study notes[3]

文章目录operatonsloopsreferencesoperatons the fundamental operators such as ,-,* in C language can be simply manipulated. int sum 5 3; // sum 8 int difference 10 - 4; // difference 6 int product 6 * 7; // product 42the operator / was left to in…

练习实践-基础设施-文件共享-windows和linux之间的文件共享-smb服务搭建

参考来源&#xff1a; 在线书籍-linux就该这么学-第12章 安装软件包 配置文件/etc/samba/smb.conf 运维对待配置文件的态度&#xff0c;非必要不增加 安装完毕后打开Samba服务程序的主配置文件&#xff0c;好在参数并不多&#xff0c;只有37行。其中第17&#xff5e;22行代…

常用设计模式系列(十三)—组合模式

常用设计模式系列&#xff08;十三&#xff09;—组合模式 第一节 前言 hello大家好&#xff0c;今年已经过去了一半&#xff0c;年初立下的flag&#xff0c;不知道实现了没有&#xff0c;你的flag改了多少次&#xff1f;无论自己的愿望是否完成&#xff0c;我们都应该怀揣着追…

字节码操作工具——ByteBuddy应用(3)安全检查

一、检测方法名是否符合规范1、代码&#xff08;1&#xff09;MethodLoggerAgentpackage com.example.agent;import net.bytebuddy.agent.builder.AgentBuilder; import net.bytebuddy.asm.Advice; import net.bytebuddy.matcher.ElementMatchers;import java.lang.instrument.…

NineData 数据库 DevOps 全面支持 GaussDB,国产化管理再升级!

NineData 数据库 DevOps 平台现已全面兼容 GaussDB 全线产品&#xff08;包括 GaussDB 企业级、DWS 数据仓库、openGauss 开源版&#xff09;&#xff0c;实现一站式管理。无论 GaussDB 实例部署在哪个环境&#xff0c;企业所有开发者都可以通过 NineData 统一访问&#xff0c;…

C++ - 模板进阶

一、非类型模板参数模板参数 分为 类型形参与 非类型形参。 类型形参&#xff1a;出现在模板参数列表中&#xff0c;跟在 class 或者 typename 之类的参数类型名称。 非类型形参&#xff0c;就是用一个常量作为类(函数)模板的一个参数&#xff0c;在类(函数)模板中可将该参数…

【质量管理】软件缺陷管理实施方案(专业版)

引言 方案目标与范围 本方案以CMMI量化管理要求与ISO 9000质量体系为框架,核心目标是通过标准化缺陷管理流程实现缺陷全生命周期可控。具体包括:确保软件缺陷在全生命周期中被及时发现与修复,减少其对软件质量、发布计划及用户体验的负面影响;以“零缺陷”为首要目标,针对…

Elasticsearch 讲解及 Java 应用实战:从入门到落地

在数据量爆炸的今天&#xff0c;传统数据库的查询能力越来越难以满足复杂的检索需求。比如电商平台的商品搜索&#xff0c;需要支持关键词模糊匹配、多条件筛选、热门度排序等功能&#xff0c;这时候 Elasticsearch&#xff08;简称 ES&#xff09;就成了最佳选择。作为一款分布…

docker pull weaviate 国内拉取失败的问题

我是校内网&#xff0c;尝试了 改镜像源 (cooragent) ruiyCJQ:~/sdb/B/cooragent$ sudo vim /etc/docker/daemon.json [sudo] password for ruiy: (cooragent) ruiyCJQ:~/sdb/B/cooragent$ sudo service docker restart (cooragent) ruiyCJQ:~/sdb/B/cooragent$ sudo docke…

Vue项目使用Univer Sheets

Univer Excel主页链接&#xff1a;安装步骤 1. 安装 使用预设模式的包管理器安装 - 预设模式&#xff1a;可以理解为开包即用的模式&#xff0c;省去很多配置&#xff0c;当然自由度不如插件模式 pnpm add univerjs/presets univerjs/preset-sheets-core2. 前端代码 <te…

Python day24

浙大疏锦行 python day24 内容&#xff1a; 元组&#xff1a;类比于列表&#xff0c;不过元组的元素不能被修改&#xff0c;显示也是从[]改为了()&#xff0c;其余操作则是和列表类似&#xff0c;且元组是有序的可迭代对象&#xff1a;即可以使用迭代器访问的对象&#xff0c…

Three.js 动画系统入门:Tween.js 与 AnimationMixer 的使用

引言 动画是 Three.js 中增强 3D 场景动态效果的核心技术&#xff0c;能够为用户带来沉浸式体验。Three.js 支持通过 Tween.js 实现简单的属性动画&#xff0c;以及通过 AnimationMixer 处理复杂的混合动画和骨骼动画。本文将深入探讨如何使用 Tween.js 控制 Object3D 的属性动…

装修进度管理系统功能对比:主流工具9选

本文分享了9款常用的装修进度管理软件&#xff0c;包括&#xff1a;1.Worktile&#xff1b;2.中望软件&#xff1b;3.三维家&#xff1b;4.Procore&#xff1b;5.易达装修管理系统&#xff1b;6.装修管家&#xff1b;7.Zoho Projects&#xff1b;8.中建君联&#xff1b;9.一品装…

深度学习篇---预训练模型

在深度学习中&#xff0c;预训练模型&#xff08;Pretrained Model&#xff09; 是提升开发效率和模型性能的 “利器”。无论是图像识别、自然语言处理还是语音识别&#xff0c;预训练模型都被广泛使用。下面从概念、使用原因、场景、作用等方面详细介绍&#xff0c;并结合 Pyt…

Redis ①⑦-分布式锁

分布式锁 分布式锁是锁的一种&#xff0c;都是为了解决多线程/多进程环境下&#xff0c;对共享资源的访问冲突问题。 不过&#xff0c;像 Java 的 synchronized 或者 C 的 mutex 这种锁&#xff0c;都是进程内的锁&#xff0c;而分布式锁则是跨越进程/机器的锁。也就是可以针对…

OpenCV-图像预处理➀【图像颜色空间转换、灰度化实验、二值化处理、镜像翻转 和 仿射变换】

文章目录先言一、图像颜色空间转换1.RGB颜色空间2.颜色加法3.颜色加权加法4.HSV颜色空间5.图像转换&#xff08;cvtColor()&#xff09;二、灰度实验1.灰度图2.图像灰度化&#xff08;最大值法&#xff09;3.图像灰度化&#xff08;平均值法&#xff09;4.图像灰度化&#xff0…