什么是Tomcat?
Tomcat是一个web服务器,用于提供web(http,https)服务端程序,它是一个基于Java实现的一个开源且免费,也被广泛使用的HTTP服务器
我们前面学习的HTTP协议,知道HTTP协议就是约定HTTP客户端和HTTP服务端之间数据交互的格式,Tomcat服务器已经给我们包装好了对请求的解析和分用,以及响应的封装,它的优势在于不同地方需要提供服务端功能,不需要我们自己手动去写请求的解析和响应的封装
Tomcat的安装及环境配置
直接去Tomcat官网下载,下载地址:Tomcat下载地址
下载完后进行解压,但是注意的是解压的路径不要存在中文,否则点击启动脚本无法执行
检测JAVA_HOME环境变量是否配置成功
要启动Tomcat,需要提前配置jdk环境变量,可以在cmd中使用"%java_home%/bin/java" -version命令来检查配置JAVA_HOME环境变量是否正确
启动Tomcat服务器
如果双击后,出现了一个小的黑窗口,闪一下就没了,可能是环境变量没有配置好
端口被其他程序绑定时的处理方法
注意要观察启动的信息有没有报错,如果有Address already in use,表示Tomcat需要绑定的端口(默认绑定8080端口),被其他程序占用了
检查某个端口是否被占用:
windows:netstat -ano | findstr 端口号
linux:netatat -anp | grep 端口号
如果端口号被其他应用程序占用,使用taskkill -pid pid号 -f来处理掉程序
如果启动Tomcat后,访问127.0.0.1:8080,出现如下页面:
这种情况也是端口号被占用,只需要将8080端口绑定的程序杀死即可
查看8080端是否被占用:
杀死该应用程序(注意要以管理员身份运行):
解决掉端口及环境变量问题,重新启动Tomcat服务器
重新启动Tomcat,访问127.0.0.1:8080,出现如下页面表示Tomcat启动成功
使用这两个都可以访问:
本机IP:127.0.0.1
本机域名:localhost
注意:在windows上通过cmd方式启动Tomcat会出现乱码,但是不影响使用,乱码的原因是Tomcat默认按照UTF-8方式处理中文,而windows的cmd默认是GBK编码
Tomcat的目录结构
对目录结构的说明:
bin:存放执行脚本,如启动脚本,终止脚本,.bat是windows上的批处理脚本,.sh是linux上的批处理脚本
conf:存放配置文件,配置文件可以配置服务器的端口等
lib:存放Tomcat服务器需要的运行内库,里面都是jar格式的文件(jar格式是一个压缩格式,里面存放class文件)
logs:存放日志文件,运行产生的信息,用来定位一些信息
temp:临时文件夹,不用关心
webapps:存放web应用,一个webapp就是一个web应用,可以存多个webapp
work:Tomcat内部进行预编译的文件夹
下面的都是一些文档
我们最关心的是webapps目录,它是用来存放web应用的文件夹,关于web应用:一个具有完整功能的网站,可以称之为web应用,比如百度搜索,实现了完整的搜索引擎功能,淘宝实现了独立完整的电商功能,一个Tomcat服务器上是可以同时部署多个这样的web应用,这些web应用以目录的形式存放于webapps目录中
部署Web项目
webapps目录下,每一个文件夹就是一个webapp
这个页面就是webapps文件夹中ROOT文件夹下的页面
如果不是ROOT文件夹,还需要输入文件夹的名称才可以访问
示例:在webapps目录下,创建一个test文件夹,在test文件夹中创建一个index.html,使用浏览器访问
注意:
webapps目录下,每一个文件夹就是一个webapp
webapps目录下,不能直接访问html文件
对于非ROOT目录,访问时要带上webapp文件夹名称,对于ROOT目录,不用带文件夹名称
例如:在ROOT目录下,创建一个index.html,使用浏览器访问
/ 会默认查找index.html资源
使用这个路径127.0.0.1:8080也可以访问到
webapp文件夹的名字,不要有空格,中文,特殊字符
部署博客系统页面到Tomcat服务器中
1. 把之前的博客系统页面文件直接复制到webapps目录下
2. 更改文件夹名字,不要出现中文等特殊符号
3. 访问博客系统页面:
除了这种部署方式,还有更简便的部署方式,将在下一篇文章Servlet中讲解
为什么要使用项目构建工具?
前面在数据库的JDBC编程中,引入了jar后缀的文件作为项目依赖,才可以使用里面的类和接口,通过下载jar文件,然后配置到项目依赖中,操作是比较繁琐的
使用项目构建工具,可以通过配置使用相同的依赖,构建工具会自动下载,并引入为项目的依赖包
对于打包来说:是将程序实现的功能打一个jar包,提供给别人使用
对于Web开发来说:需要把html,css,js,class文件复制到Tomcat的webapps目录下的文件夹中,过程是比较复杂的,使用构建工具后,可以把web应用打一个war格式的文件,war格式是一个压缩格式的文件,里面包含了web应用的内容
对于Java项目,构建工具有很多产品,如ant(比较老了,几乎被淘汰了),gradle(安卓开发比较常用),maven(后端开发使用广泛)
Maven工具的介绍
Maven是一个项目构建工具,创建的项目只要遵循Maven规范(称为Maven项目),即可以使用Maven来进行管理:编译,打包等
Maven是一个Java开发的程序,可以单独下载使用,但是idea内置了maven这个程序作为插件,可以直接在idea中使用
IDEA中创建Maven项目
创建项目时不在创建之前的Java项目,而是选择创建Maven项目
选择创建Maven项目的路径
创建完成后,如果右下角出现以下弹窗,需要开启自动导入功能:
第一次创建可能需要下载很多程序:
Maven面板里面,可以看到Maven项目的命令,插件和依赖包:
Maven查找依赖的流程
Maven项目中可以引入依赖包,引入后,加载依赖包的方式为在Maven仓库中搜索,Maven仓库可以理解为存放依赖包的仓库,分为本地仓库和远程仓库两种
Maven项目配置文件
项目的根路径下,生成了一个pom.xml文件(Maven的配置文件),可以配置项目需要引入的依赖,编译结构,打包等
引入依赖包的方式
groupId:组织名,一般为公司域名
artifactId:组织名,一般是项目的名称
version:版本号
注意:在idea中修改了pom.xml后,记得刷新Maven面板才能生效
本项目作为一个产品,也有对应的三个属相唯一标识
Maven项目的结构(由Maven规范规定的)
在java目录下,随便创建一个类,在resources目录下随便创建一个配置文件,运行观察编译目录
Maven的生命周期命令
Maven构建工具主要目的就是对Maven项目进行管理,这些都是通过Maven的生命周期命令来管理的,在IDEA创建的Maven项目中,打开Maven面板,展开项目的Lifecycle即为生命周期命令
总结常用Maven生命周期命令:
clean:清除命令,删除target编译目录
compile:编译命令,编译开发代码,资源文件
package:打包命令,将整个项目打包为一个压缩文件