文章目录
- 一、什么是 Servlet
- 二、创建一个简单的 Servlet 程序
- 1. 创建项目
- 2.引入依赖
- 3. 创建目录
- 4.编写代码
- 5. 打包程序
- 6. 部署
- 7.验证
- 整体过程总结
- 三、使用 Smart Tomcat 插件简化项目创建
- 四、创建项目时可能遇到的几个问题。
一、什么是 Servlet
Servlet 是一种实现 动态页面的技术。是由 Tomcat 提供给程序员的 一组 API,用来帮助程序员简单高效的开发 web app。
网页分为两类:
静态页面:页面的内容是固定不变的。(一个单纯的 HTML 页面)
动态页面:页面内容随输入的参数的不同而改变。(是 HTML + 数据 组成)
二、创建一个简单的 Servlet 程序
这里,我们使用 Servlet 程序实现出一个 Hello world 打印。将其部署到 Tomcat 上。通过 使用浏览器访问 ,的形式得到 Hello world 字符串。
这里的实现相对于直接使用某一种语言进行打印而言,还是比较复杂的。这里大致分为 7 个步骤。
- 创建项目
- 引入依赖
- 创建目录结构
- 编写代码
- 打包程序
- 部署程序
- 验证
下面,我会就上面的 7 个步骤依次进行详细的解释。
1. 创建项目
此处创建的项目被称之为 Maven 项目。
maven 是一个 “工程管理” 工具。
所谓 “工程管理” 管理的是下面的几个内容
- 规范目录结构
- 管理依赖 (使用什么第三方库,都会进行处理)
- 构建
- 打包 等。。。
要完成这里的工作,主要使用的就是上面所标注的两点。
如上图所示,创建一个新的项目,选择 maven 之后选择好存储目录,最后直接点击 完成 即可。
此处需要注意,如果是第一次创建 maven 项目,需要从 中央仓库加载一些 maven 依赖,可能需要等待较长的时间。
当成功创建项目后,在左侧的文件区域,会出现下图的内容 (大致了解其中不同文件夹的含义):
2.引入依赖
在上面我们提到,Servlet 代码,是基于 Tomcat 的 API 来实现的。所以,这里需要通过第三方库进行引入。
这里的第三方库是 maven 官网,相关链接如下:maven网站
进入网站,在搜索框输入 Servlet 会得到下面的页面:
如图,罗列出的第一个就是我们要选择的。
点击进入,这里会有多个版本的选择。根据需要,选择合适的版本。(ps:本人在这里使用的 Tomcat 8 对应的版本选择 3.1.0)
点击进入
如图所示,页面向下滑动,我们会看到这段字符。
在这里,我们将不会使用以往的方式下载 jar 包进行引入。而是直接将这段文字复制导入即可。(其实也就是该依赖在 maven 仓库的坐标)
如图所示,这里标记了两处标签。
需要注意的是:
- 绿色 标记的 “dependencies” 是自己先写上去的。属于 project 顶级标签的子标签。
- 红色 标记的 “dependency” 是其中的一个依赖。如果需要有多个依赖加入。以一组 “denpendency” 为单位添加即可。
3. 创建目录
虽然 maven 已经帮助我们创建出了一些目录,但是仍然有欠缺。
此处是使用 maven 开发一个 web 程序,还要有别的目录。
所需要创建的目录:
- 在 main 目录下创建出一个 webapp 目录。
- 在 webapp 目录下创建 WEB-INF 目录
- 在 WEB-INF 目录下创建一个 web.xml 文件。
如图:
解释 web.xml 在这里的作用
当前,我们实现的是 Servlet 程序,相较于之前的代码,此处是没有 main 方法的。
我们知道,main 方法就是让程序启动的一个关键。就好比是汽车的发动机。
对于此处的程序,我们可以将其类比为一列火车。
这里的 Servlet 程序是基于 Tomcat 来实现的。
Servlet 在这里就是没有动力的车厢。
Tomcat 在这里就是一节火车头。
需要注意的是,要成为一列火车,是需要将车头与车厢进行连接的。
此时,目录下的 WEB-INF / 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>
如图所示,这里 web.xml 中的代码是固定的,直接引用即可。
4.编写代码
首先,我们需要在 Java 文件夹中创建出一个 class 类,来写入后续的代码。
这里先直接展示起手的代码:
public class HelloServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
super.doGet(req, resp);
}
}
代码分析:
这里重写的 doGet 方法被 Tomcat 调用时,当收到一个 get 请求时,就会触发这个方法。
对于 req (请求):由 Tomcat 解析并构造。
对于 resp (响应):默认是一个空对象。
(这里不是 null,只是 new 了一个对象,其中的属性没有设置)
所以此时,就需要程序员根据需要设定响应。
此时代码就需要进行修改
@WebServlet("/test")
public class HelloServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 这个代码必须被注释掉,在父类中,这个方法只是返回了一个错误页面
//super.doGet(req, resp);
// 这个是在服务器的控制台进行打印
System.out.println("hello world");
//想要将 hello world 返回到客户端,就需要使用下面的代码
// getWriter 会得到一个 Write 对象
resp.getWriter().write("hello world");
}
}
代码分析:
到这里,我们还需要注意代码最上面的一个注解,如图:
注解在这里的作用,就是针对方法进行额外的 “解释说明” 对这个方法赋予额外的含义。
这里的作用就是将类与 HTTP 的请求路径关联起来。
5. 打包程序
将程序编译好后,再讲这些 .class 文件构成压缩包,但是此处要打的是一个 war 包,不是jar 包。
(war 是 Tomcat 专属的用来描述 webapp 的程序,一个 war 就是一个 webapp)
这里直接使用 maven 就可以直接打包,如图:
当出现上图中的情况时,就表明打包成功。
注意事项:
这里需要注意的是,在默认情况下 maven 打的是一个 jar 包。
对此,就需要在 .xml 文件中进行调整,如图:
打包完成后,在 target 文件中,就可以找到我们打出来的包。
6. 部署
这一步的操作非常简单,只需要直接将 war 包拷贝到 Tomcat 的 webapp 中即可。
之后启动 Tomcat 即可。
7.验证
将压缩好的 war 包放入 webapp 中后,启动 Tomcat。
运行结果:
- 在网页页面:
- 在 Tomcat 服务器端口:
如图,我们发现出现了多个结果。
出现这样的结果,原因是,只要访问一次页面,就会在控制台出现一次。
整体过程总结
- 首先,在浏览器中输入对应的 URL 后,浏览器就会构造一个 HTTP GET 请求,发送给 Tomcat。
- 第二,Tomcat 就会根据第一路径,确定具体的 webapp。
- 第三,又会根据具体的 第二级路径 ,确定了调用的类。
- 第四,就会通过 GET / POST 方法来确定要调用 HelloServlet 中的哪一个方法 (doGet , doPost)
- 最后,Tomcat 就会执行对应的代码完成对应的工作。
三、使用 Smart Tomcat 插件简化项目创建
在上面的介绍中,我们已经知道要创建出一个 servlet 项目,一共有 7 个步骤。
为了简化创建的过程, IDEA 为我们提供了一个 关于 Tomcat 插件。
可以省去 手动打包、手动部署 这两个过程。
图示插件查找、安装过程。
首次使用的简单配置
-
需要先新增一个运行配置。
点击 “添加配置”。 -
点击 + 并选择 Smart Tomcat
1. 首次配置创建需要选择 Tomcat 的安装路径
2. 需要注意的是,这里代码执行的目录,必须到 webapp 文件夹处!(与将打好的 war 包存放到 webapp 由异曲同工之处。)
使用 Smart Tomcat 创建项目
在完成上面的添加操作后,我们就可以直接在 idea 中点击绿色三角号进行运行了。
但是,这里需要注意的是,此处的链接是不能直接点的,直接点击,触发的肯定是 404
这是因为此处没有包含 servlet path,即就是代码中 注释 提供的路径。
如上图所示,在此处添加 “/test” 就可以成功访问。
简单解释 Smart Tomcat 工作原理。
Tomcat 的工作方式有两种:
- 第一种,就是直接将要使用的 war 拷贝到 webapps 中进行访问执行。
- 第二种,就是在启动时,显示指定一个特定的 webapp,让 Tomcat 单独加载当前的项目。(Smart Tomcat 就使用的这一种)
四、创建项目时可能遇到的几个问题。
-
404
可能的问题是:
web.xml 内容错了、路径写错了、文件的位置错误。。。 -
405
可能的问题是:
没有写 doGet 方法、
super.doGet 没有删掉,如图:
-
500
遇到这个就可以很明显的说明代码中出现了错误,直接看报错信息就可以解决大部分问题。