如何创建一个Servlet项目(Maven)?

简介: 如何创建一个Servlet项目(Maven)?

前言


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

Servlet 主要做的工作

允许程序猿注册一个类 , 在 Tomcat 收到某个特定的 HTTP 请求的时候 , 执行这个类中的一些代码。

帮助程序猿解析 HTTP 请求, 把 HTTP 请求从一个字符串解析成一个 HttpRequest 对象。

帮助程序猿构造 HTTP 响应, 程序猿只要给指定的 HttpResponse 对象填写一些属性字段 , Servlet 就会自动的按照 HTTP 协议的方式构造出一个 HTTP 响应字符串 , 并通过 Socket 写回给客户端。

简而言之 , Servlet 是一组 Tomcat 提供的 API, 让程序猿自己写的代码能很好的和 Tomcat 配合起来 , 从 而更简单的实现一个 web app。而不必关注 Socket, HTTP 协议格式 , 多线程并发等技术细节 , 降低了 web app 的开发门槛 , 提高了开发效率。我们只需要关注生成响应的这个过程。


一、创建Servlet项目(Maven)的步骤


1.创建Maven项目


使用 IDEA 创建一个 Maven 项目:菜单 -> 文件 -> 新建项目 -> Maven

2.引入依赖

Maven 项目创建完毕后 , 会自动生成一个 pom.xml 文件:

1667915534539.jpg

我们需要在 pom.xml 中引入 Servlet API 依赖的 jar 包。


1) 在中央仓库 https://mvnrepository.com/ 中搜索 "servlet":


1667915572586.jpg


2) 选择版本,一般我们使用 3.1.0 版本


1667915584888.jpg


注意:Servlet 的版本要和 Tomcat 匹配.


如果我们使用 Tomcat 8, 那么就需要使用 Servlet 3.1.0

可以在 http://tomcat.apache.org/whichversion.html 查询版本对应关系

3) 把中央仓库中提供的 xml 复制到项目的 pom.xml 中

1667915596742.jpg

<dependencies> 标签内部放置项目依赖的 jar 包,maven 会自动下载依赖到本地:

1667915608365.jpg

3.创建目录


当项目创建好了之后 , IDEA 会帮我们自动创建出一些目录:

1667915619788.jpg

src 表示源代码所在的目录 ;main/java 表示源代码的根目录,后续创建 .java 文件就放到这个目录中;main/resources 表示项目的一些资源文件所在的目录;test/java 表示测试代码的根目录;


我们还需要创建一些新的目录 / 文件:

1) 创建 webapp 目录

在 main 目录下 , 和 java 目录并列 , 创建一个 webapp 目录 ( 注意 , 不是 webapps)

1667915631269.jpg

2) 创建 web.xml

然后在 webapp 目录内部创建一个 WEB - INF 目录 , 并创建一个 web.xml 文件

1667915643012.jpg

3) 编写 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>

Tomcat 找到这个文件才能正确处理 webapp 中的动态资源。

4.编写代码


以下代码只是示例:


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

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

注意:

创建一个类 HelloServlet , 继承自 HttpServlet。

在这个类上方加上 @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 写回给浏览

器。

现在的代码不是通过 main 方法作为入口了。  main 方法已经被包含在 Tomcat 里 , 我们写的代码会被 Tomcat 在合适的时机调用起来。

写的类满足什么条件才能被 Tomcat 调用呢?

a) 创建的类需要继承自 HttpServlet

b) 这个类需要使用 @WebServlet 注解关联上一个 HTTP 的路径

c) 这个类需要实现 doXXX 方法 .

当这三个条件都满足之后 , Tomcat 就可以找到这个类 , 并且在合适的时机进行调用。

5.打包程序


使用 maven 进行打包:菜单 -> View -> Tool Window -> Maven 打开


然后展开 Lifecycle , 双击 package 即可进行打包。


这里有一个重要的点需要注意:如果我们直接这样打包,会自动生成一个jar包,这不是我们所需要的。Tomcat 需要识别的是另外一种 war 包格式。jar 包是普通的 java 程序打包的结果,里面会包含一些 .class 文件。war 包是 java web 的程序, 里面除了会包含 .class 文件之外, 还会包含 HTML, CSS, JavaScript, 图片, 以及其他的 jar 包. 打成 war 包格式才能被 Tomcat 识别。


在 pom.xml 中新增一个 packing 标签, 表示打包的方式是打一个 war 包。在 pom.xml 中再新增一个 build 标签, 内置一个 finalName 标签, 表示打出的 war 包的名字是 HelloServlet。

1667915675347.jpg

1667915695726.jpg

6.部署程序


把 war 包拷贝到 Tomcat 的 webapps 目录下;启动 Tomcat , Tomcat 就会自动把 war 包解压缩。

7.验证程序


此时通过浏览器访问 http://127.0.0.1:8080/ServletHelloWorld/hello ,就可以看到结果了。


总结


在这个部署环节,还有更简单的办法,可以使用IDEA中的smart tomcat插件来简化打包(打包和部署一体了)。因为IDEA社区版是没有自带Tomcat的部署功能的,这就需要使用smart tomcat插件来完成。


安装步骤如下:


1) 菜单 -> 文件 -> Settings


2) 选择 Plugins, 选择 Marketplace, 搜索 "tomcat", 点击 "Install"

3) 安装完毕之后 , 会提示 " 重启 IDEA"


配置 Smart Tomcat 插件:


1) 点击右上角的 "Add Configuration"

2) 选择左侧的 "Smart Tomcat"

3) 在 Name 这一栏填写一个名字 ( 可以随便写 ) ,在 Tomcat Server 这一栏选择 Tomcat 所在的目录,其他的选项不必做出修改, 其中 Context Path 默认填写的值是项目名称。

4) 点击 OK 。然后右上角就变成了现在这个样子:

1667915710862.jpg

点击绿色的三角号, IDEA 就会自动进行编译, 部署。


注意:


Tomcat并不是IDEA的一部分或者说,它并不是IDEA的一个功能。在IDEA中,一点击就能运行,并且显示Tomcat的日志,这个过程其实是IDEA这个进程调用了Tomcat进程(进程创建+程序替换),IDEA把Tomcat的输出内容重定向到自己的终端窗口里面的。

1667915466591.jpg

相关文章
|
7月前
|
Java 区块链 Maven
关于引入maven项目后出现‘parent.relativePath’ of POM错误时的解决方法
关于引入maven项目后出现‘parent.relativePath’ of POM错误时的解决方法
622 3
|
11月前
|
Java 应用服务中间件 API
Servlet开发流程 (里面有Idea项目添加Tomcat依赖详细教程)
本文详细介绍了Servlet的开发流程,包括在IntelliJ IDEA中添加Tomcat依赖的详细教程。通过上述步骤,开发者可以快速搭建并运行一个基本的Servlet应用,理解并掌握Servlet的开发流程对于Java Web开发至关重要。希望本文能够帮助开发者顺利进行Servlet开发,提高工作效率。
1350 78
|
6月前
|
Java jenkins 应用服务中间件
结合Jenkins与Tomcat,实施Maven项目的自动构建和部署流程。
任何项目构建和部署的自动化流程,总离不开对各个环节精细把控与密切配合。涉及到源代码管理、构建工具、持续集成服务器以及最终的运行时环境的协调。通过上述简洁实用的步骤,可以实现Maven项目从源代码到运行状态的无缝过渡,进而提升软件开发的效率与质量。
375 0
|
Java Maven 开发者
maven项目中官方setting.xml文件
`settings.xml` 是 Maven 的配置文件,用于定义用户或全局级别的构建行为。它包含本地仓库路径、网络代理、服务器认证、仓库镜像及构建配置文件等设置,帮助开发者根据环境定制 Maven 行为,提升构建效率与灵活性。
1361 0
|
9月前
|
Java 测试技术 项目管理
【JavaEE】从 0 到 1 掌握 Maven 构建 Java 项目核心技巧 解锁 Java 项目高效管理实用实例
本文从Maven基础概念讲起,涵盖安装配置、核心概念(如POM与依赖管理)及优化技巧。结合Java Web项目实例,演示如何用Maven构建和管理项目,解决常见问题,助你高效掌握这一强大工具,提升Java开发与项目管理能力。适合初学者及进阶开发者学习。资源链接:[点此获取](https://pan.quark.cn/s/14fcf913bae6)。
317 6
|
XML Java 测试技术
从零开始学 Maven:简化 Java 项目的构建与管理
Maven 是一个由 Apache 软件基金会开发的项目管理和构建自动化工具。它主要用在 Java 项目中,但也可以用于其他类型的项目。
756 1
从零开始学 Maven:简化 Java 项目的构建与管理
|
Java 关系型数据库 MySQL
Maven——创建 Spring Boot项目
Maven 是一个项目管理工具,通过配置 `pom.xml` 文件自动获取所需的 jar 包,简化了项目的构建和管理过程。其核心功能包括项目构建和依赖管理,支持创建、编译、测试、打包和发布项目。Maven 仓库分为本地仓库和远程仓库,远程仓库包括中央仓库、私服和其他公共库。此外,文档还介绍了如何创建第一个 SpringBoot 项目并实现简单的 HTTP 请求响应。
1126 1
Maven——创建 Spring Boot项目
|
Java Maven
maven项目的pom.xml文件常用标签使用介绍
第四届人文,智慧教育与服务管理国际学术会议(HWESM 2025) 2025 4th International Conference on Humanities, Wisdom Education and Service Management
1154 8
|
Java 应用服务中间件 Maven
Maven的三种项目打包方式——pom,jar,war的区别
Maven 提供了多种打包方式,分别适用于不同类型的项目。pom 用于父项目或聚合项目,便于项目的结构和依赖管理;jar 用于Java类库或可执行的Java应用程序;war 则专用于Java Web应用程序的部署。理解这些打包方式的用途和特点,可以帮助开发者更好地配置和管理Maven项目,确保构建和部署过程的顺利进行。无论是单模块项目还是多模块项目,选择合适的打包方式对于项目的成功至关重要。
2262 3

推荐镜像

更多