如何创建一个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

相关文章
|
2月前
|
XML Java 测试技术
从零开始学 Maven:简化 Java 项目的构建与管理
Maven 是一个由 Apache 软件基金会开发的项目管理和构建自动化工具。它主要用在 Java 项目中,但也可以用于其他类型的项目。
61 1
从零开始学 Maven:简化 Java 项目的构建与管理
|
2月前
|
Java Maven
maven项目的pom.xml文件常用标签使用介绍
第四届人文,智慧教育与服务管理国际学术会议(HWESM 2025) 2025 4th International Conference on Humanities, Wisdom Education and Service Management
179 8
|
2月前
|
Java 应用服务中间件 Maven
Maven的三种项目打包方式——pom,jar,war的区别
Maven 提供了多种打包方式,分别适用于不同类型的项目。pom 用于父项目或聚合项目,便于项目的结构和依赖管理;jar 用于Java类库或可执行的Java应用程序;war 则专用于Java Web应用程序的部署。理解这些打包方式的用途和特点,可以帮助开发者更好地配置和管理Maven项目,确保构建和部署过程的顺利进行。无论是单模块项目还是多模块项目,选择合适的打包方式对于项目的成功至关重要。
161 3
|
3月前
|
Java 关系型数据库 MySQL
Maven——创建 Spring Boot项目
Maven 是一个项目管理工具,通过配置 `pom.xml` 文件自动获取所需的 jar 包,简化了项目的构建和管理过程。其核心功能包括项目构建和依赖管理,支持创建、编译、测试、打包和发布项目。Maven 仓库分为本地仓库和远程仓库,远程仓库包括中央仓库、私服和其他公共库。此外,文档还介绍了如何创建第一个 SpringBoot 项目并实现简单的 HTTP 请求响应。
223 1
Maven——创建 Spring Boot项目
|
3月前
|
Java 关系型数据库 MySQL
如何使用 maven 创建一个 Spring Boot项目
Maven 是一个强大的项目管理工具,通过配置 `pom.xml` 文件自动获取所需的 jar 包,提高开发效率。其核心功能包括项目构建和依赖管理。项目构建支持编译、测试、打包和发布等流程,而依赖管理则通过中央仓库、本地仓库和私有服务器获取和管理项目依赖。示例中展示了如何创建第一个 SpringBoot 项目并实现简单接口。
62 1
如何使用 maven 创建一个 Spring Boot项目
|
3月前
|
Java Maven Android开发
eclipse创建maven项目
本文介绍了在Eclipse中创建Maven项目的步骤,包括打开Eclipse、选择Java项目、完成项目创建以及自动下载插件的过程。
124 2
eclipse创建maven项目
|
3月前
|
缓存 IDE Java
idea的maven项目打包时没有source下的文件
【10月更文挑战第21天】idea的maven项目打包时没有source下的文件
134 1
|
3月前
|
Java API Apache
除了 Maven,还有哪些工具可以管理项目的依赖和版本冲突
除了Maven,常用的项目依赖管理和版本冲突解决工具有Gradle、Ivy、Ant+Ivy、SBT等。这些工具各有特点,适用于不同的开发环境和需求。
206 2
|
3月前
|
Java 应用服务中间件 Maven
【终极解决方案】IDEA maven 项目修改代码不生效。
【终极解决方案】IDEA maven 项目修改代码不生效。
524 1
|
3月前
|
Java 应用服务中间件 Maven
SpringBoot Maven 项目打包的艺术--主清单属性缺失与NoClassDefFoundError的优雅解决方案
SpringBoot Maven 项目打包的艺术--主清单属性缺失与NoClassDefFoundError的优雅解决方案
379 0