> 文档中心 > JavaWeb『Tomcat』

JavaWeb『Tomcat』

Tomcat

  • 1.BS/CS
  • 2.Tomcat
  • 第一节 配置文件
    • 1、配置
      • ①设置
      • ②配置
    • 2、配置文件
      • ①XML
        • [1]名词解释
        • [2]可扩展
        • [3]XML基本语法
        • [4]XML约束
      • ②属性文件
      • ③其他形式
  • 第二节 Tomcat的部署和启动
    • 1、Tomcat扮演的角色
      • ①对外:Web服务器
      • ②对内:Servlet容器
    • 2、部署
      • ①前提
      • ②解压
      • ③Tomcat目录结构
      • ④启动Tomcat并访问首页
      • ⑤部署一个war包或者一个项目并启动Tomcat
      • ⑥访问部署的Web应用
      • ⑦关于Tomcat端口号
  • 第三节 在IDEA中关联Tomcat
  • 第四节 创建动态Web工程并部署运行
    • 1、第一步
    • 2、第二步
    • 3、动态Web工程目录结构介绍
    • 4、创建用来部署Web工程的Tomcat实例
    • 5、编写简单的测试代码
      • ①Java代码
      • ②JSP代码
      • ③启动专门为这个工程创建的Tomcat实例
    • 6、IDEA运行程序时界面布局
  • 第五节 在IDEA中重新部署运行
    • 1、为什么需要重新部署?
    • 2、如何重新部署?
      • ①清理部署目录
      • ②构建
      • ③效果
  • 第六节 导入别人的web module

1.BS/CS

CS:客户端服务器架构模式
『优点』:充分利用客户端机器的资源,减轻服务器的负荷(一部分安全要求不高的计算任务存储任务放在客户端执行,不需要把所有的计算和
存储都在服务器端执行,从而能够减轻服务器的压力,也能够减轻网络负荷)
『缺点』:需要安装;升级维护成本较高

BS:浏览器服务器架构模式
『优点』:客户端不需要安装;维护成本较低
『缺点』:所有的计算和存储任务都是放在服务器端的,服务器的负荷较重;在服务端计算完成之后把结果再传输给客户端,因此客户端和服务器端会进行非常频繁的数据通信,从而网络负荷较重

2.Tomcat

第一节 配置文件

1、配置

①设置

设置其实就是通过修改一个一个的参数,告诉应用软件它该怎么工作。

②配置

本质上配置和设置是一样的,只是对象和形式不同:

配置 设置
对象 开发中使用的应用程序或框架 应用软件
形式 特定格式的配置文件 应用软件的友好界面

2、配置文件

①XML

案例:

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"  version="4.0">        <servlet> <servlet-name>dispatcherServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  <init-param>     <param-name>contextConfigLocation</param-name>     <param-value>classpath:spring-mvc.xml</param-value> </init-param>  <load-on-startup>1</load-on-startup>    </servlet>    <servlet-mapping> <servlet-name>dispatcherServlet</servlet-name>   <url-pattern>/</url-pattern>    </servlet-mapping></web-app>

[1]名词解释

XML是eXtensible Markup Language的缩写,翻译过来就是可扩展标记语言。所以很明显,XML和HTML一样都是标记语言,也就是说它们的基本语法都是标签。

[2]可扩展

可扩展三个字表面上的意思是XML允许自定义格式。但是这不代表可以随便写

JavaWeb『Tomcat』

在XML基本语法规范的基础上,你使用的那些第三方应用程序、框架会通过设计 『XML约束』 的方式 『强制规定』 配置文件中可以写什么和怎么写,规定之外的都不可以写。

XML基本语法这个知识点的定位是:我们不需要从零开始,从头到尾的一行一行编写XML文档,而是在第三方应用程序、框架已提供的配置文件的基础上修改。要改成什么样取决于你的需求,而怎么改取决于XML基本语法具体的XML约束

[3]XML基本语法

  • XML声明

这部分基本上就是固定格式,知道就行。

  • 根标签

根标签有且只能有一个。

  • 标签关闭
    • 双标签:开始标签和结束标签必须成对出现。
    • 单标签:单标签在标签内关闭。
  • 标签嵌套
    • 可以嵌套,但是不能交叉嵌套。
  • 注释不能嵌套
  • 标签名、属性名建议使用小写字母
  • 属性
    • 属性必须有值
    • 属性值必须加引号,单双都行

到这里我们会发现XML的基本语法和HTML的基本语法简直如出一辙。其实这不是偶然的,XML基本语法+HTML约束=HTML语法。在逻辑上HTML确实是XML的子集。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">

从HTML4.01版本的文档类型声明中可以看出,这里使用的DTD类型的XML约束。也就是说http://www.w3.org/TR/html4/loose.dtd这个文件定义了HTML文档中可以写哪些标签,标签内可以写哪些属性,某个标签可以有什么样的子标签。

[4]XML约束

将来我们主要就是根据XML约束中的规定来编写XML配置文件。而XML约束主要包括DTD和Schema两种。如果XML配置文件使用的是DTD,那么对我们几乎没有影响。如果是Schema约束,需要我们稍微参与一点点。

  • DTD

将来在IDEA中有代码提示的协助,在DTD文档的约束下进行配置非常简单。

  • Schema

我们将来使用SSM框架中的Spring、SpringMVC框架时,会涉及到一点点对Schema约束的设置。不过不必紧张,有IDEA的支持操作会非常简单,我们现在只需要理解基本概念即可。

首先我们要理解一个概念:『名称空间』,英文:name space

JavaWeb『Tomcat』

Schema约束要求我们一个XML文档中,所有标签,所有属性都必须在约束中有明确的定义。

下面我们以web.xml的约束声明为例来做个说明:

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"  version="4.0">
属性名 作用
xmlns 指出当前XML文档约束规则的名称空间在哪里 我们就是通过这个属性来引用一个具体的名称空间
xmlns:xsi 指出xmlns这个属性是在哪个约束文档中被定义的
xsi:schemaLocation 语法格式:在xsi名称空间下引用schemaLocation属性 配置含义:指定当前XML文档中所用到的约束文档本身的文件的地址

xmlns和xsi:schemaLocation对应关系如下图:
JavaWeb『Tomcat』

引入多个名称空间的例子如下:

<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xmlns:mvc="http://www.springframework.org/schema/mvc"xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsdhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd"><context:component-scan base-package="com.atguigu.crud.component"/><bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="prefix" value="/WEB-INF/pages/"/><property name="suffix" value=".jsp"/></bean><mvc:default-servlet-handler/><mvc:annotation-driven/></beans>

JavaWeb『Tomcat』

看到这么复杂,这么长的名称空间字符串,我们会觉得很担心,根本记不住。但是其实不需要记,在IDEA中编写配置文件时,IDEA会协助我们导入,会有提示。我们理解各个部分的含义能够调整即可。

②属性文件

以properties作为扩展名的文件。

com.cdz.jdbc.url=jdbc:mysql://192.168.198.100:3306/mybatis1026com.cdz.jdbc.driver=com.mysql.jdbc.Drivercom.cdz.jdbc.username=rootcom.cdz.jdbc.password=123456
  • 由键值对组成
  • 键和值之间的符号是等号
  • 每一行都必须顶格写,前面不能有空格之类的其他符号

③其他形式

YAML语言的配置文件:在SpringBoot中使用。

spring:  profiles:    active: fc  datasource:    name: mydb    type: com.alibaba.druid.pool.DruidDataSource    url: jdbc:mysql://192.168.41.100:3306/spring_boot?serverTimezone=UTC    username: root    password: 123456    driver-class-name: com.mysql.cj.jdbc.Drivermybatis:  mapper-locations: classpath*:/mybatis-mapper/*Mapper.xmllogging:  level:    com.cdz.function.compute.mapper: debug

第二节 Tomcat的部署和启动

1、Tomcat扮演的角色

①对外:Web服务器

JavaWeb『Tomcat』

②对内:Servlet容器

JavaWeb『Tomcat』

2、部署

①前提

Tomcat本身是一个Java程序,所以当前系统中必须正确配置了JAVA_HOME环境变量。我们可以通过下面的命令检测:

C:\Users\zhu>java -versionjava version "1.8.0_131"Java(TM) SE Runtime Environment (build 1.8.0_131-b11)Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)C:\Users\zhu>echo %JAVA_HOME%E:\javaJDK\jdk8C:\Users\zhu>echo %PATH%C:\ProgramData\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files\NVIDIA Corporation\NVIDIA NvDLISR;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;D:\anaconda3;D:\anaconda3\Library\mingw-w64\bin;D:\anaconda3\Library\usr\bin;D:\anaconda3\Library\bin;D:\anaconda3\Scripts;C:\Users\zhu\AppData\Local\Microsoft\WindowsApps;E:\IntelliJIDEA\IntelliJ IDEA 2021.3.2\bin;;E:\javaJDK\jdk8\bin;E:\mysql-5.7.19-winx64\bin;

②解压

将Tomcat压缩包解压到一个非中文无空格的目录下。

JavaWeb『Tomcat』

③Tomcat目录结构

  • bin可执行文件,即启动,停止等的目录
  • conf配置文件目录
  • lib存放运行时的jar包目录
  • logs日志文件目录
  • webapps项目部署的目录
  • work工作目录
  • temp临时目录

④启动Tomcat并访问首页

启动Tomcat:运行Tomcat解压后根目录下\bin\startup.bat即可

在浏览器输入localhost:8080

JavaWeb『Tomcat』

如果需要停止Tomcat,则运行shutdown.bat程序

提示:将来我们在IDEA中启动Tomcat,如果IDEA卡死强关,Tomcat不会正常退出。下次再启动Tomcat会因为残留进程仍然占用8080端口,导致新的进程无法启动。此时可以使用shutdown.bat结束残留进程。

⑤部署一个war包或者一个项目并启动Tomcat

把项目或者war包扔进webapps目录里面就行了

在Tomcat启动过程中,会打印启动日志,其中我们能看到hello.war被部署的日志信息

此时,我们回到webapps目录,能看到test.war被解压了:

JavaWeb『Tomcat』

⑥访问部署的Web应用

在浏览器输入 localhost:8080/test/insdex.html 就能访问项目了。

⑦关于Tomcat端口号

在server.xml中

JavaWeb『Tomcat』

……<Server port="8005" shutdown="SHUTDOWN">……<Connector port="8080" protocol="HTTP/1.1"   connectionTimeout="20000"   redirectPort="8443" />……<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

三个位置共定义了3个端口号,Tomcat启动后,这个三个端口号都会被占用

第三节 在IDEA中关联Tomcat

JavaWeb『Tomcat』
JavaWeb『Tomcat』
JavaWeb『Tomcat』

JavaWeb『Tomcat』
选择你安装Tomcat的文件位置,这里是放在E盘下
JavaWeb『Tomcat』
JavaWeb『Tomcat』
JavaWeb『Tomcat』

第四节 创建动态Web工程并部署运行

1、第一步

创建empty project

2、第二步

以下操作基于IDEA2021.3,不同版本的操作会不一样
创建动态Web工程:
就是先创建一个普通java项目。一直next,最后finish
JavaWeb『Tomcat』
JavaWeb『Tomcat』
JavaWeb『Tomcat』
JavaWeb『Tomcat』
然后然后右键点击项目,再点Add Framework Support…
JavaWeb『Tomcat』
JavaWeb『Tomcat』
创建好后的工程:

JavaWeb『Tomcat』
注意:src目录应该是蓝色的,web目录的图标上有个蓝色的圆点。

3、动态Web工程目录结构介绍

目录或文件名 功能
src目录 存放Java源文件
web目录 存放Web开发相关资源
web/WEB-INF目录 存放web.xml文件、classes目录、lib目录
web/WEB-INF/web.xml文件 别名:部署描述符deployment descriptor 作用:Web工程的核心配置文件
web/WEB-INF/classes目录 存放编译得到的*.class字节码文件
web/WEB-INF/lib目录 存放第三方jar包

4、创建用来部署Web工程的Tomcat实例

JavaWeb『Tomcat』
JavaWeb『Tomcat』
JavaWeb『Tomcat』
通常我们会觉得现在这个Application context太长了,改简短一些会更方便
JavaWeb『Tomcat』
我习惯把后面的项目名删掉保留 /JavaWeb『Tomcat』
JavaWeb『Tomcat』
创建好后的效果:
JavaWeb『Tomcat』

5、编写简单的测试代码

①Java代码

JavaWeb『Tomcat』

public class Hello {    public String getMessage() { return "这是代码测试";    }}

②JSP代码

JavaWeb『Tomcat』

③启动专门为这个工程创建的Tomcat实例

JavaWeb『Tomcat』
跳转到浏览器显示
JavaWeb『Tomcat』

6、IDEA运行程序时界面布局

JavaWeb『Tomcat』

第五节 在IDEA中重新部署运行

1、为什么需要重新部署?

对于已经运行过的Web项目,如果我们增加了目录和文件,那么部署目录有可能不会自动同步过来,从而造成实际运行的效果和我们期望的不同。

我们在工程目录已经新增了./images目录和两个图片:
JavaWeb『Tomcat』
但是在部署目录并没有出现:
JavaWeb『Tomcat』
即使执行了重新部署也没有起作用。

2、如何重新部署?

①清理部署目录

JavaWeb『Tomcat』
JavaWeb『Tomcat』

②构建

JavaWeb『Tomcat』

③效果

重新构建后的部署项目:
JavaWeb『Tomcat』

第六节 导入别人的web module

如果你想把别人的module导入自己的project中运行起来,可以参考下面的操作:

  • 做下面操作前,需要把要导入的module复制到project目录下。
    JavaWeb『Tomcat』
    JavaWeb『Tomcat』
    JavaWeb『Tomcat』
    JavaWeb『Tomcat』
    如果导入项目有依赖包的话,右键点击依赖包项目,在点add as Library…
    JavaWeb『Tomcat』
    再进入Project Structure
    JavaWeb『Tomcat』
    JavaWeb『Tomcat』
    JavaWeb『Tomcat』

JavaWeb『Tomcat』
JavaWeb『Tomcat』
JavaWeb『Tomcat』
JavaWeb『Tomcat』
JavaWeb『Tomcat』
这里要加上你要访问的页面
JavaWeb『Tomcat』
访问成功,添加功能也正常
JavaWeb『Tomcat』