在介绍Servlet之前我们先来认识一下Tomcat.
一.什么是Tomcat💢
Tomcat是一个HTTP服务器.
前面我们学习了HTTP协议,知道HTTP协议就是HTTP客户端和HTTP服务器之间交互数据的格式.
而Tomcat就是基于java实现的一个开源的免费的也是被使用最广泛的服务器.
Tomcat在网上直接安装就好,Tomcat版本有很多,本文就默认是Tomcat8.
接下来我们简单的认识一下Tomcat的结构.
1.Tomcat的目录结构
下载后对Tomcat目录进行解压,可以看到以下结构:
webapps文件夹是我们最常用的文件夹,就是用来存放web应用(一个具有独立完整功能的“网站”)的文件夹.
2.启动Tomcat服务器
就是双击bin文件夹里的startup bat.
出现以上日志就说明Tomcat启动成功了,接着在浏览器输入 127.0.0.1:8080 就可以访问Tomcat默认的欢迎页面.
二.什么是Servlet💢
Servlet是Tomcat给程序猿提供的API,帮助程序猿更好的构建动态网页,更简单高效的开发一个WebApp.
这里给出静态网页和动态网页的区别:
静态网页:内容是始终固定的页面,即使访问的用户不同/时间不同/输入的参数不同,页面的内容也不会发生变化(例如Tomcat的欢迎页面).
动态网页:会随着访问的用户不同/时间不同/输入的参数不同,从而页面产生不一样的变化(例如b站的主页).
三.Servlet的基本使用❗
在学习C语言和Java的时候我们第一次接触的代码都是“万恶之源”Hello World 而学习Servlet也是要从Hello World开始,但是这可比前面那两个复杂多了.
1.创建项目
Maven是Idea内置的一个构建工具,可以用来编译代码、打包程序、管理依赖……
创建成功就会是这样的:
2.引入依赖
由于Servlet不是java标准库中自带的,所以我们要在pom.xml里引入Servlet依赖.
在Java中央仓库中找Servlet依赖.
由于Servlet和Tomcat需要版本适配我们是Tomcat8故需要选择3.0.1版本.
接下来在pom.xml中在这个位置创建一个<dependencies>标签.
再把中央仓库Maven里的内容复制进去.
如果是第一次使用Maven,那么这里的代码有部分会变红,不用担心这个是Maven根据代码内容,自动下载对应的jar包到本地.
完成这部后让我们来看看目录中的结构:
但是有了这些目录还不够,还要创建一个符合Tomcat要求的目录结构.
3.创建目录
在main目录下创建一个webapp目录.
在webapp目录下创建一个WEB-INF目录.
在WEB-INF目录下创建一个web.xml文件.
在web.xml里输入以下代码:
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
<display-name>Archetype Created Web Application</display-name>
</web-app>
到这里我们创建目录的工作就结束了.
4.编写代码
在main/java目录下创建一个类,并继承HttpServlet类.
在这个类上方加上 @WebServlet("/hello") 注解.
加上注解的作用是Tomcat收到请求中,路劲为/hello的请求才会调用HelloServlet这个类的代码.
重写doGet方法.
HttpServletRequest 表示 HTTP 请求 . Tomcat 按照 HTTP 请求的格式把字符串格式的数据转成了一个 HttpServletRequest 对象 . 后续想获取请求中的信息 ( 方法 , url, header, body 等 ) 是通过这个对象来获取. HttpServletResponse 表示 HTTP 响应 . 代码中把响应对象构造好 ( 构响应的状态码 , header, body 等 )resp.getWriter() 会获取到一个流对象 , 通过这个流对象就可以写入一些数据 , 写入的数据会被构造成一个 HTTP 响应的 body 部分 , Tomcat 会把整个响应转成字符串 , 通过 socket 写回浏览器.
5.打包程序
在 pom.xml 中新增一个 packing 标签, 表示打包的方式是打一个 war 包.
在pom.xml中新增一个<build>标签,内置一个<finalName>标签,表示打包出的war包名字.
那么完整的pom.xml就是:
再使用Maven的package就会生成一个war包.
6.部署程序
将刚刚生成的war包拷贝到Tomcat的webapp目录下.
启动Tomcat,解压war包会自动生成一个目录.
7.验证程序
在浏览器地址栏输入 127.0.0.1:8080/HelloServlet/hello 就可以看到HelloWorld了.
在上面的URL中,/HelloServlet目录又称为ContextPath,/hello目录又称为ServletPath.