【JavaEE】Servlet(创建Maven、引入依赖、创建目录、编写及打包、部署和验证、smart Tomcat)

一、什么是Servlet?

Servlet 是一种实现动态页面的技术. 是一组 Tomcat 提供给程序猿的 API, 帮助程序猿简单高效的开发一个 web app

1.1 Servlet能干什么?

  • 允许程序猿注册一个类, 在 Tomcat 收到某个特定的 HTTP 请求的时候, 执行这个类中的一些代码
  • 帮助程序猿解析 HTTP 请求, 把 HTTP 请求从一个字符串解析成一个 HttpRequest 对象.
  • 帮助程序猿构造 HTTP 响应. 程序猿只要给指定的 HttpResponse 对象填写一些属性字段, Servlet
  • 就会自动的安装 HTTP 协议的方式构造出一个 HTTP 响应字符串, 并通过 Socket 写回给客户端

二、第一个Servlet程序

2.1 创建项目(Maven)

使用 IDEA 创建一个 Maven 项目
【JavaEE】Servlet(创建Maven、引入依赖、创建目录、编写及打包、部署和验证、smart Tomcat)_第1张图片

2.2 引入依赖(Servlet)

pom.xml 中引入 Servlet API 依赖的 jar 包:

在中央仓库 https://mvnrepository.com/ 中搜索 “servlet”, 一般第一个结果就是
选择匹配的版本(可以在 http://tomcat.apache.org/whichversion.html 查询版本对应关系)
把中央仓库中提供的 xml 复制到项目的 pom.xml 中
【JavaEE】Servlet(创建Maven、引入依赖、创建目录、编写及打包、部署和验证、smart Tomcat)_第2张图片
【JavaEE】Servlet(创建Maven、引入依赖、创建目录、编写及打包、部署和验证、smart Tomcat)_第3张图片

2.3 创建目录(webapp)

在 main 目录下, 和 java 目录并列, 创建一个 webapp 目录
【JavaEE】Servlet(创建Maven、引入依赖、创建目录、编写及打包、部署和验证、smart Tomcat)_第4张图片
在 webapp 目录内部创建一个 WEB-INF 目录, 并创建一个 web.xml 文件
【JavaEE】Servlet(创建Maven、引入依赖、创建目录、编写及打包、部署和验证、smart Tomcat)_第5张图片
在web.xml中拷入以下代码
【JavaEE】Servlet(创建Maven、引入依赖、创建目录、编写及打包、部署和验证、smart Tomcat)_第6张图片

2.4 编写代码(HelloServlet)

在 java 目录中创建一个类 HelloServlet, 代码如下:

@WebServlet("/hello")
public class HelloServlet extends HttpServlet {
    @Override
    protected void doDelete(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("Hello world");
        resp.getWriter().write("Hello world");
    }
}

在这个类上方加上 @WebServlet("/hello") 注解, 表示 Tomcat 收到的请求中, 路径为 /hello 的请求才会调用 HelloServlet 这个类的代码. (这个路径未包含 Context Path)

重写 doGet 方法. doGet 的参数有两个, 分别表示收到的 HTTP 请求 和要构造的 HTTP 响应. 这个方法会在 Tomcat 收到 GET 请求时触发

HttpServletRequest 表示 HTTP 请求. Tomcat 按照 HTTP 请求的格式把 字符串 格式的请求转成了一个 HttpServletRequest 对象. 后续想获取请求中的信息(方法, url, header, body 等) 都是通过这个对象来获取.

HttpServletResponse 表示 HTTP 响应. 代码中把响应对象构造好(构造响应的状态码, header, body 等)

resp.getWriter() 会获取到一个流对象, 通过这个流对象就可以写入一些数据, 写入的数据会被构造成一个 HTTP 响应的 body 部分, Tomcat 会把整个响应转成字符串, 通过 socket 写回给浏览器

2.5 打包代码(war)

首先知道什么是war包: war 包是 java web 的程序, 里面除了会包含 .class 文件之外, 还会包含 HTML, CSS, JavaScript, 图片, 以及其他的 jar 包. 打成 war 包格式才能被 Tomcat 识别

在 pom.xml 中新增一个 packing 标签, 表示打包的方式是打一个 war 包,再新增一个 build 标签, 内置一个 finalName 标签, 表示打出的 war 包的名字是 HelloServlet
【JavaEE】Servlet(创建Maven、引入依赖、创建目录、编写及打包、部署和验证、smart Tomcat)_第7张图片
双击package
【JavaEE】Servlet(创建Maven、引入依赖、创建目录、编写及打包、部署和验证、smart Tomcat)_第8张图片
成功打包:
【JavaEE】Servlet(创建Maven、引入依赖、创建目录、编写及打包、部署和验证、smart Tomcat)_第9张图片

2.6 部署

把打包好的war包拷贝到tomcat的webapps目录中
【JavaEE】Servlet(创建Maven、引入依赖、创建目录、编写及打包、部署和验证、smart Tomcat)_第10张图片
启动 Tomcat , Tomcat 就会自动把 war 包解压缩
在这里插入图片描述
看到这个日志说明 Tomcat 已经正确识别了 ServletHelloWorld 这个 webapp

2.7 验证程序

通过浏览器访问 http://127.0.0.1:8080/hello_servlet/hello

【JavaEE】Servlet(创建Maven、引入依赖、创建目录、编写及打包、部署和验证、smart Tomcat)_第11张图片
注意:
不是tomcat一启动,我们写的doGet就能执行,而是要收到路径匹配的GET请求才能执行!!
URL 中的路径分成两个部分, 其中hello_servlet 为 Context Path,标识了一个webapp, hello 为 Servlet Path,标识当前请求要调用哪个Servlet类的doGet方法

三、更便捷的部署方式

手动拷贝 war 包到 Tomcat 的过程比较麻烦. 我们还有更方便的办法.
此处我们使用 IDEA 中的 Smart Tomcat 插件完成这个工作
下载smart Tomcat
【JavaEE】Servlet(创建Maven、引入依赖、创建目录、编写及打包、部署和验证、smart Tomcat)_第12张图片
配置 Smart Tomcat 插件
【JavaEE】Servlet(创建Maven、引入依赖、创建目录、编写及打包、部署和验证、smart Tomcat)_第13张图片
【JavaEE】Servlet(创建Maven、引入依赖、创建目录、编写及打包、部署和验证、smart Tomcat)_第14张图片
点击运行:
在这里插入图片描述
idea下方显示tomcat的日志
【JavaEE】Servlet(创建Maven、引入依赖、创建目录、编写及打包、部署和验证、smart Tomcat)_第15张图片

你可能感兴趣的:(javaee,java,servlet,maven)