在Java EE(现称Jakarta EE)的发展历程中,Servlet技术作为Web应用的重要组成部分,一直在不断演进。最初的Servlet API属于Java EE的一部分,命名为javax.servlet。随着Java EE迁移到Eclipse Foundation并更名为Jakarta EE,Servlet API也随之改名为jakarta.servlet。这种变化反映了Java EE从Oracle公司转移到开源社区的进程。

javax.servlet与jakarta.servlet的关系

  1. 历史沿革javax.servlet是Servlet API在Java EE初期的命名空间。当Java EE变成Jakarta EE时,根据新的命名规则,所有原有的javax命名空间都需要迁移到jakarta,这其中也包括了Servlet API。因此,javax.servletjakarta.servlet实际上是同一API的不同版本。

  2. API兼容性:在大多数情况下,jakarta.servlet在功能上与javax.servlet保持兼容,除了命名空间的变化。在从javax.servlet迁移到jakarta.servlet的过程中,同时也引入了一些新增特性和优化。

  3. 迁移方式:开发者在迁移现有应用时,需要将所有涉及到javax.servlet的导入语句替换为jakarta.servlet,同时更新相关的库依赖。

使用Tomcat部署Jakarta Servlet 示例

接下来,我们将通过一个简单的示例来展示如何开发和部署一个使用Jakarta Servlet的Web应用。假设我们创建一个简单的Hello World应用。

1. 创建项目

使用Maven创建一个新的动态Web项目,命名为HelloJakartaServlet,其结构如下:

HelloJakartaServlet
│
├── pom.xml
├── src
│   └── main
│       ├── java
│       │   └── com
│       │       └── example
│       │           └── HelloServlet.java
│       └── webapp
│           └── WEB-INF
│               └── web.xml

2. 编写pom.xml

pom.xml中添加Servlet API的依赖(以Jakarta EE 9为例):

<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.example</groupId>
    <artifactId>HelloJakartaServlet</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>war</packaging>

    <dependencies>
        <dependency>
            <groupId>jakarta.servlet</groupId>
            <artifactId>jakarta.servlet-api</artifactId>
            <version>5.0.0</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>
</project>

3. 创建HelloServlet.java

src/main/java/com/example/HelloServlet.java中实现Servlet代码:

package com.example;

import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

public class HelloServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) 
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        out.println("<h1>Hello, Jakarta Servlet!</h1>");
    }
}

4. 配置web.xml

src/main/webapp/WEB-INF/web.xml中进行Servlet配置:

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee 
         http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">

    <servlet>
        <servlet-name>HelloServlet</servlet-name>
        <servlet-class>com.example.HelloServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>HelloServlet</servlet-name>
        <url-pattern>/hello</url-pattern>
    </servlet-mapping>
</web-app>

5. 部署到Tomcat

  1. 使用mvn clean package命令打包项目,生成WAR文件。
  2. 将生成的WAR文件放入Tomcat的webapps目录中。
  3. 启动Tomcat,并访问http://localhost:8080/HelloJakartaServlet/hello

如果一切顺利,浏览器将显示“Hello, Jakarta Servlet!”的页面。

总结

javax.servletjakarta.servlet是Servlet技术发展的两个重要阶段,了解它们之间的关系和迁移方式对Java Web开发者而言至关重要。在实际项目中,及时跟进API的更新和变更,有助于保持项目的现代性与兼容性。通过上述示例,我们展示了如何使用Jakarta Servlet搭建一个简单的Web应用,并部署到Tomcat服务器上。

点赞(0) 打赏

微信小程序

微信扫一扫体验

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部