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允许自定义格式。但是这不代表你可以随便写。
在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
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对应关系如下图:
引入多个名称空间的例子如下:
<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>
看到这么复杂,这么长的名称空间字符串,我们会觉得很担心,根本记不住。但是其实不需要记,在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服务器
②对内:Servlet容器
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压缩包解压到一个非中文无空格的目录下。
③Tomcat目录结构
- bin可执行文件,即启动,停止等的目录
- conf配置文件目录
- lib存放运行时的jar包目录
- logs日志文件目录
- webapps项目部署的目录
- work工作目录
- temp临时目录
④启动Tomcat并访问首页
启动Tomcat:运行Tomcat解压后根目录下\bin\startup.bat即可
在浏览器输入localhost:8080
如果需要停止Tomcat,则运行shutdown.bat程序
提示:将来我们在IDEA中启动Tomcat,如果IDEA卡死强关,Tomcat不会正常退出。下次再启动Tomcat会因为残留进程仍然占用8080端口,导致新的进程无法启动。此时可以使用shutdown.bat结束残留进程。
⑤部署一个war包或者一个项目并启动Tomcat
把项目或者war包扔进webapps目录里面就行了
在Tomcat启动过程中,会打印启动日志,其中我们能看到hello.war被部署的日志信息
此时,我们回到webapps目录,能看到test.war被解压了:
⑥访问部署的Web应用
在浏览器输入 localhost:8080/test/insdex.html 就能访问项目了。
⑦关于Tomcat端口号
在server.xml中
……<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
选择你安装Tomcat的文件位置,这里是放在E盘下
第四节 创建动态Web工程并部署运行
1、第一步
创建empty project
2、第二步
以下操作基于IDEA2021.3,不同版本的操作会不一样
创建动态Web工程:
就是先创建一个普通java项目。一直next,最后finish
然后然后右键点击项目,再点Add Framework Support…
创建好后的工程:
注意: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实例
通常我们会觉得现在这个Application context太长了,改简短一些会更方便
我习惯把后面的项目名删掉保留 /
创建好后的效果:
5、编写简单的测试代码
①Java代码
public class Hello { public String getMessage() { return "这是代码测试"; }}
②JSP代码
③启动专门为这个工程创建的Tomcat实例
跳转到浏览器显示
6、IDEA运行程序时界面布局
第五节 在IDEA中重新部署运行
1、为什么需要重新部署?
对于已经运行过的Web项目,如果我们增加了目录和文件,那么部署目录有可能不会自动同步过来,从而造成实际运行的效果和我们期望的不同。
我们在工程目录已经新增了./images目录和两个图片:
但是在部署目录并没有出现:
即使执行了重新部署也没有起作用。
2、如何重新部署?
①清理部署目录
②构建
③效果
重新构建后的部署项目:
第六节 导入别人的web module
如果你想把别人的module导入自己的project中运行起来,可以参考下面的操作:
- 做下面操作前,需要把要导入的module复制到project目录下。
如果导入项目有依赖包的话,右键点击依赖包项目,在点add as Library…
再进入Project Structure
这里要加上你要访问的页面
访问成功,添加功能也正常