【Java框架型项目从入门到装逼】第三节 - 如何用Tomcat发布web项目?

简介: 【Java框架型项目从入门到装逼】第三节 - 如何用Tomcat发布web项目?

啥叫Tomcat?有道词典是这么说的。

35.png

这个我们姑且不管,实际上呢,Tomcat是一种Web服务器,我们自己做好了一个Web项目,就可以通过Tomcat来发布。服务器呢,又分为硬件服务器和软件服务器。硬件服务器一般来说就是一台电脑,而软件服务器则是一个应用程序,比如Tomcat它本身就是一个程序。

36.png

让我们来看一下Tomcat的目录结构:

37.png

Bin目录里面都是一些脚本文件:

38.png

我们需要关注的就是startup.bat这个文件,当我们双击这个文件,就可以启动Tomcat服务器。接下来,我们顺便来说一说配置环境变量的问题,我们知道,在安装JDK的时候就需要配置环境变量。简单来说,配置环境变量的目的就是让用户可以在任何目录都能访问到某一个文件夹的文件。比如,我们打开cmd命令窗口:


39.png

39.png


输入cmd,点确定。

40.png

我们希望通过这个命令来打开startup.bat,然而并没有什么卵用!

41.png

因为路径不对,是吧。好,那么现在我们调整到Tomcat的bin目录:

42.png


运行

35.png36.png


这样就好了,恭喜你,Tomcat服务器已经成功启动了!

大家是不是很好奇,有没有一种不需要跳转到指定目录就可以运行startup.bat的方法呢?这就需要我们配置环境变量了。

右键我的电脑,属性。


43.png44.png45.png46.png47.png


在path后面添加 ;%TOMCAT_HOME%\bin ,确定。

重新再cmd命令窗口执行startup.bat命令:

48.png


出现这个错误,它说环境变量名字不对,应该叫CATALINA_HOME,OK,那我们就改成这个环境变量,然后就好了。

现在,我们在conf目录中我们打开server.xml,可以查看Tomcat的端口号。


49.png

50.png

这个8080就是端口号,我们用http://localhost:8080 , 可以访问到Tomcat的首页。

52.png


##1、tomcat服务器映射方式一

tomcat服务器会自动管理webapps目录下的所有web应用,并把它映射成虚似目录。

现在我们来手工搭建一个web项目,首先,在webapps目录下新建一个文件夹,是的,就是文件夹,不管你项目是什么,肯定还是放在文件夹里面的。

53.png

项目名称就叫做myapp。

打开myapp,根据web项目的规范,我们需要有一个WEB-INF文件夹。

54.png

然后,在WEB-INF文件夹里面,必须要有一个web.xml文件。

Web.xml内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
  xmlns="http://java.sun.com/xml/ns/javaee" 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
  http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
  </welcome-file-list>
</web-app>


<?xml version="1.0" encoding="UTF-8"?> 这句话表示这个文件是xml文件。

<web-app version="2.5" 
  xmlns="http://java.sun.com/xml/ns/javaee" 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
  http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
</web-app>


web.xml的模式文件是由Sun公司定义的,每个web.xml文件的根元素中,都必须标明这个 web.xml使用的是哪个模式文件。其它的元素都放在之中。

<welcome-file-list>
   <welcome-file>index.jsp</welcome-file>
</welcome-file-list>


这个是设置欢迎页,因为我们现在还没有欢迎页,所以要写一个。

55.png


<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
  这是我的APP
</body>
</html>


然后访问http://localhost:8080/myapp/ 的时候,就会默认找到index.jsp文件。如果出现中文乱码,从以下几个方面考虑:

1、 文件本身的编码格式是不是UTF-8,不是的话就用一个文本工具另存为一下。

2、 Server.xml中有没有指定编码格式为UTF-8 。

<Connector port="8080" maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
    enableLookups="false" redirectPort="8443" acceptCount="100"
    connectionTimeout="20000" disableUploadTimeout="true" URIEncoding='UTF-8' />

3、 JSP页面有没有设置编码为UTF-8 。

##2、Tomcat服务器虚拟目录的映射方式二

在server.xml配置文件的添加配置。

<Host name="localhost"  appBase="webapps"
              unpackWARs="true" autoDeploy="true" 
              xmlValidation="false" xmlNamespaceAware="false"> 
  <Context path="/JavaWebApp" docBase="D:\myapp" />
</Host> 


其中,Context表示上下文,代表的就是一个JavaWeb应用,Context元素有两个属性,

 Ⅰ.path:用来配置虚似目录,必须以"/"开头。

 Ⅱ.docBase:配置此虚似目录对应着硬盘上的Web应用所在目录。


如果我们不想要把web项目丢到webapp目录,那又该怎么办呢?没错,我们就采用第二种方式。


我现在把myapp项目放到D盘根目录,为了防止你们说我使诈,我不但把访问地址改了,还把webapp目录下的myapp项目删掉了。


56.png

我们一般都推荐第二种方式。

相关文章
|
6天前
|
JSON Java Apache
非常实用的Http应用框架,杜绝Java Http 接口对接繁琐编程
UniHttp 是一个声明式的 HTTP 接口对接框架,帮助开发者快速对接第三方 HTTP 接口。通过 @HttpApi 注解定义接口,使用 @GetHttpInterface 和 @PostHttpInterface 等注解配置请求方法和参数。支持自定义代理逻辑、全局请求参数、错误处理和连接池配置,提高代码的内聚性和可读性。
|
16天前
|
人工智能 前端开发 Java
基于开源框架Spring AI Alibaba快速构建Java应用
本文旨在帮助开发者快速掌握并应用 Spring AI Alibaba,提升基于 Java 的大模型应用开发效率和安全性。
基于开源框架Spring AI Alibaba快速构建Java应用
|
16天前
|
消息中间件 Java 数据库连接
Java 反射最全详解 ,框架设计必掌握!
本文详细解析Java反射机制,包括反射的概念、用途、实现原理及应用场景。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
Java 反射最全详解 ,框架设计必掌握!
|
5天前
|
监控 安全 Java
Java中的多线程编程:从入门到实践####
本文将深入浅出地探讨Java多线程编程的核心概念、应用场景及实践技巧。不同于传统的摘要形式,本文将以一个简短的代码示例作为开篇,直接展示多线程的魅力,随后再详细解析其背后的原理与实现方式,旨在帮助读者快速理解并掌握Java多线程编程的基本技能。 ```java // 简单的多线程示例:创建两个线程,分别打印不同的消息 public class SimpleMultithreading { public static void main(String[] args) { Thread thread1 = new Thread(() -> System.out.prin
|
13天前
|
JavaScript 前端开发 开发工具
web项目规范配置(husky、eslint、lint-staged、commit)
通过上述配置,可以确保在Web项目开发过程中自动进行代码质量检查和规范化提交。Husky、ESLint、lint-staged和Commitlint共同作用,使得每次提交代码之前都会自动检查代码风格和语法问题,防止不符合规范的代码进入代码库。这不仅提高了代码质量,还保证了团队协作中的一致性。希望这些配置指南能帮助你建立高效的开发流程。
30 5
|
10天前
|
Java 大数据 API
14天Java基础学习——第1天:Java入门和环境搭建
本文介绍了Java的基础知识,包括Java的简介、历史和应用领域。详细讲解了如何安装JDK并配置环境变量,以及如何使用IntelliJ IDEA创建和运行Java项目。通过示例代码“HelloWorld.java”,展示了从编写到运行的全过程。适合初学者快速入门Java编程。
|
17天前
|
存储 安全 Java
🌟Java零基础-反序列化:从入门到精通
【10月更文挑战第21天】本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
55 5
|
14天前
|
安全 Java 调度
Java中的多线程编程入门
【10月更文挑战第29天】在Java的世界中,多线程就像是一场精心编排的交响乐。每个线程都是乐团中的一个乐手,他们各自演奏着自己的部分,却又和谐地共同完成整场演出。本文将带你走进Java多线程的世界,让你从零基础到能够编写基本的多线程程序。
29 1
|
18天前
|
缓存 Java 数据库连接
Hibernate:Java持久层框架的高效应用
通过上述步骤,可以在Java项目中高效应用Hibernate框架,实现对关系数据库的透明持久化管理。Hibernate提供的强大功能和灵活配置,使得开发者能够专注于业务逻辑的实现,而不必过多关注底层数据库操作。
12 1
|
20天前
|
Java 数据处理 开发者
Java多线程编程的艺术:从入门到精通####
【10月更文挑战第21天】 本文将深入探讨Java多线程编程的核心概念,通过生动实例和实用技巧,引导读者从基础认知迈向高效并发编程的殿堂。我们将一起揭开线程管理的神秘面纱,掌握同步机制的精髓,并学习如何在实际项目中灵活运用这些知识,以提升应用性能与响应速度。 ####
43 3