目录
前言
一、认识Tomcat
1.1、Tomcat是什么
1.2、Tomcat的下载安装
1.3、Tomcat目录介绍
1.4、启动Tomcat
1.5、使用Tomcat部署静态页面
二、使用Servlet来输出Hello World!
2.1、Servlet是什么
2.2、Servlet输出Hello World!的七大步骤
2.3、具体过程
2.3.1、创建maven项目
2.3.2、引入依赖
2.3.3、创建目录
2.3.4、编写代码
2.3.5、打包程序
2.3.6、部署
2.3.7、验证程序
2.4、简化步骤
本篇博客主要简单介绍一下Tomcat及其使用和Servlet的基本使用,再使用Servlet来打印Hello World。
Tomcat 是一个 HTTP 服务器. 前面我们已经学习了 HTTP 协议, 知道了 HTTP 协议就是 HTTP 客户端和 HTTP 服务器之间的交互数据的格式. 同时也通过 ajax 和 Java Socket 分别构造了 HTTP 客户端. HTTP 服务器我们也同样可以通过 Java Socket 来实现. 而 Tomcat 就是基于 Java 实现的一个开源免费, 也是被广泛使用的 HTTP 服务器.
下载地址:https://tomcat.apache.org/download-80.cgi
这里我们下载的是Tomcat 8,进去之后只要下载压缩包即可,解压缩后即可使用。
启动Tomcat,对于Window用户只需要双击运行bin目录里的startup.bat即可,对于Linux和mac用户,只要运行startup.sh就可以。
启动正常的话会出现以下黑框:
乱码的原因是 :Tomcat 默认按照 UTF-8 的编码方式处理中文. 而 Windows 的 cmd 默认是 GBK 编码,这里乱码不影响使用,因此暂不做处理。
启动成功之后在浏览器中输入127.0.0:8080就会出现以下欢迎页面:
常见的启动失败的情况:
一般启动失败都是因为端口被占用,如果端口被占用了,我们启动之后,黑框就会很快一闪而过,不会停留。首先我们需要知道,Tomcat启动时会默认绑定8005和8080两个端口,所以一般这种情况我们只需要找到绑定了8080端口和8005端口的程序,将其关闭即可。
我们可以通过以下方法来关闭端口:
首先使用netstat -ano | findstr 8080的命令来找到对应的进程,接着在任务管理器中根据进程id来找到对应的进程,关闭对应的进程即可(下图中的最后一行就是进程id)
启动失败还可能是环境变量配置失败导致的,这时候需要我们去配置以下环境变量。如下图所示:
配置方法:可以参考这篇文章☞Tomcat 的安装与环境配置教程(超详细)-腾讯云开发者社区-腾讯云 (tencent.com)
静态页面:也就是内容始终固定的页面. 即使 用户不同/时间不同/输入的参数不同 , 页面内容也不会发生变 化. (除非网站的开发人员修改源代码, 否则页面内容始终不变). 对应的, 动态页面指的就是 用户不同/时间不同/输入的参数不同, 页面内容会发生变化。我们写的HTML就是静态页面。
我们只需要将我们的webapp拷贝到里面的就可以了,如下:
上图中我拷贝了一个简单的web网站,内部目录如下:
这时候我们直接在自己电脑浏览器中输入:127.0.0:8080/Blog_System/login.html就可以访问了,但是现在这样子仅限于在自己电脑上访问,要实现通过网络来访问,就需要部署到云服务器上,至于如何让部署到云服务器上,这个这里先不介绍,等到后续再介绍。这里先简单了解一下部署的到Tomcat上即可。
Srevlet是一种实现动态页面的技术. 是一组 Tomcat 提供给程序猿的 API, 帮助程序猿简单高效的开发一 个 web app。
要使用Servlet来输出Servlet来输出Servlet大致分为七个步骤:
1.创建一个maven项目
2.引入Servlet的依赖
3.创建目录(webapp)
4.编写代码
5.打包成war包
6.部署到Tomcat上
7.验证程序(发送请求验证)
什么是maven项目?maven项目有什么用?maven是一个构建工具,功能是帮助我们去构建,测试,打包一个项目,相比于我们以前写的java程序都是直接点击开始运行就可以,因为以往写的都是只有一个java文件,简单且单一,但是,在一个真正的项目中,就会复杂很多,还会涉及到很多个模块,很多模块之间就可能会存在依赖关系,还有就是会依赖很多第三方库,由于以上问题,因此就诞生了很多构建工具,maven就是现在比较流行的,Ant则是一个老的构建工具,Gradle则是一个更新的构建工具,目前主要是andriod生态在使用。
如何创建maven项目:
创建完成之后的目录结构如下所示:
因为我们这里要使用Servlet来编写代码,因此需要引入Servlet的相关依赖。我们可以去MVN中央仓库引入依赖。MVN地址:Maven Repository: Central (mvnrepository.com)
具体我们需要引入哪些依赖呢?
第一个就是Servlet的依赖:进入之后直接搜索Servlet,点击第一个Java Servlet API就可以
进去之后下划选择Servlet 3.1版本,这个版本是和Tomcat 8.5版本相对应的:
最后就是点击3.1.0进入,复制以下内容:
复制以上内容之后,放到pom.xml中,需要注意的是在pom.xml中的dependencies标签中,如下所示:
第一次引入依赖可能会比较慢,字体可能会是红色的,等到变成白色的就可以了,等的比较久的话可以刷新试一下(如下所示),实在不行的话就将maven改为国内源,具体如何修改可以参照这篇文章☞配置Maven项目国内源_小白学编程~的博客-CSDN博客
这里创建maven目录是固定套路的,只需要记住即可(大小写也是需要注意的):
其中,web.xml中需要将以下文本复制进去(在IDEA中报红的话也属于正常情况,没问题的话可以忽略这种情况):
Archetype Created Web Application
首先我们在main目录里的java目录中创建一个java文件,接着就可以编写代码了。
在编写代码时HttpServlet如果标红了,原因一般是依赖引入失败了,可以尝试刷新一下,如果还不行的话可以重启IDEA一般就可以了。
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
//这个注解一定要写,且开头是"/",否则后续会出现404错误
@WebServlet("/hello")
public class Hello extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//会在控制台输出,客户端是看不到的
System.out.println("Hello World!");
//这个是给resp的body写入字符串,这个内容会被HTTP响应并返回给服务器显示到网页上
resp.getWriter().write("Hello World!");
}
}
我们需要将这个程序打包成war包,Java程序一般情况下是打包成jar包,而我们是要将程序部署到Tomcat上所以需要打成war包,war包相当于是Tomcat的定制版压缩包。
步骤如下所示:
打包成功就会出现以下页面:
在目录中会多一个target 目录:
但是此时打包的是jar包,为了打包成war包,我们可以在pom.xml中假如以下代码:
打包成war时的常见错误及解决办法:
错误:
org.apache.maven.plugins
maven-war-plugin
3.2.0
false
打包完成后就如下图所示:
首先我们先在文件夹中打开war包,如下所示:
接着再将war复制到Tomcat的webapps中就算是部署完成了。
在验证程序之前我们需要先启动Tomcat,接着去触发一个get请求,因为我们在上面的代码中重写了doGet方法,要输出的HelloWorld也是在doGet方法中,所以要执行doGet方法,要执行doGet方法就需要触发Get请求。这里只需要我们在浏览器中输入正确的url就可以了。
关于URL的几点注意事项:
这里我们的程序是运行在我们自己的主机上的,所以URL就是127.0.0.1:8080,接着后面的路径就取决于我们打包后war包的名字,这里war包的名字也就是一级路径,也成为Context Path或Application Path标识了一个webapp。接着二级路径就是我们在代码中写的注解(这里的注解一定要带有"/"否则会出现404错误)。
上述都准备好之后就可以去浏览器中输入URL来验证程序了,结果如下:
这时候在Tomcat服务器这边也是可以看到输出的(这个对应java程序中的System.out.println("Hello World!"));
上述七个步骤其实还是挺繁琐的,因此我们就可以借助IDEA中的一些插件中来简化一些步骤。具体我们可以借助smart Tomcat来简化打包部署的过程。
接下来就是具体的配置过程了:
接着点击Plugins,搜索smart Tomcat点击下载就可以。
下载之后就可以开始配置了:
配置成功后就是以下页面:
配置过程中可能出现的错误:一般出现以下错误就是端口被占用了,只需要关闭端口即可
这时候我们只要我们在IDEA中点击三运行之后,在浏览器中输入地址也可以正常访问,这时候IDEA的控制台就相当于Tomcat的服务端了。
这里的Context Path和拷贝到webapps中Context Path的区别:在IDEA中的Context Path是我们在配置smart Tomcat时自己配置的,而拷贝到webapps中的Context Path则是对应的war包名。
拷贝部署和使用smart Tomcat的区别:当我们的项目要真正上线时,还是需要通过拷贝的方式来部署的,smart Tomcat只适用于在开发阶段的调试阶段使用的。