Servlet 包指的是Servlet API中用于开发Servlet的核心包,主要由Jakarta EE(前身为Java EE)定义。本文将介绍Servlet相关的主要包及其功能,以及如何在开发中使用它们。


目录

  1. Servlet 包概述
  2. 主要Servlet包
  3. 包的使用方法
  4. 完整示例
  5. 部署与测试
  6. 参考资料

1. Servlet 包概述

  • 定义:Servlet 包是Servlet API的一部分,提供开发Web应用的接口和类。
  • 位置:Jakarta EE规范下的 jakarta.servletjakarta.servlet.http 包。
  • 用途:处理HTTP请求、响应、管理会话等。
  • 获取:通常由Servlet容器(如Tomcat)提供,无需额外下载。

2. 主要Servlet包

jakarta.servlet

  • 作用:提供Servlet核心接口和类。
  • 主要内容
  • Servlet:Servlet接口,定义生命周期方法(init, service, destroy)。
  • HttpServlet:抽象类,简化HTTP请求处理。
  • ServletRequest / ServletResponse:请求和响应接口。
  • ServletContext:应用程序上下文,用于共享数据。
  • Filter:过滤器接口,用于拦截请求。

jakarta.servlet.http

  • 作用:提供HTTP特定的类和接口。
  • 主要内容
  • HttpServletRequest:HTTP请求,获取参数、头信息等。
  • HttpServletResponse:HTTP响应,设置状态码、头和内容。
  • HttpSession:会话管理。
  • Cookie:处理客户端Cookie。
  • HttpServlet:扩展自 Servlet,提供 doGetdoPost 等方法。

其他相关包

  • jakarta.servlet.annotation:提供注解(如 @WebServlet@MultipartConfig)。
  • java.io:用于输入输出(如 PrintWriter)。
  • java.util:辅助类(如 MapList)。

3. 包的使用方法

导入包

import jakarta.servlet.*;
import jakarta.servlet.http.*;
import java.io.*;

基本Servlet

使用 HttpServlet 处理请求:

public class SimpleServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        out.println("<h1>Hello from Servlet</h1>");
    }
}

使用注解

Servlet 3.0+ 支持注解配置:

import jakarta.servlet.annotation.WebServlet;

@WebServlet("/simple")
public class SimpleServlet extends HttpServlet {
    // 同上
}

4. 完整示例

以下是一个使用Servlet包的简单示例。

Servlet:PackageServlet.java

import jakarta.servlet.*;
import jakarta.servlet.http.*;
import java.io.*;

public class PackageServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();

        ServletContext context = getServletContext();
        HttpSession session = request.getSession();

        out.println("<html><body>");
        out.println("<h1>Servlet 包示例</h1>");
        out.println("<p>Servlet 名称: " + getServletName() + "</p>");
        out.println("<p>上下文路径: " + context.getContextPath() + "</p>");
        out.println("<p>Session ID: " + session.getId() + "</p>");
        out.println("</body></html>");
    }
}

配置:web.xml

<web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd"
         version="5.0">
    <servlet>
        <servlet-name>PackageServlet</servlet-name>
        <servlet-class>PackageServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>PackageServlet</servlet-name>
        <url-pattern>/package</url-pattern>
    </servlet-mapping>
</web-app>

HTML:index.html

<!DOCTYPE html>
<html>
<head><title>Servlet 包测试</title></head>
<body>
    <h2>访问Servlet</h2>
    <a href="/myapp/package">点击测试</a>
</body>
</html>

5. 部署与测试

部署

  1. 编译:
   javac -cp /path/to/tomcat/lib/servlet-api.jar PackageServlet.java
  1. .class 文件放入 myapp/WEB-INF/classes/
  2. index.html 放入 myapp/
  3. 更新 web.xml
  4. 部署 myapp 到Tomcat的 webapps 目录。
  5. 启动Tomcat。

测试

  • 访问:http://localhost:8080/myapp/index.html
  • 点击链接:显示Servlet名称、上下文路径和Session ID。

6. 参考资料

出站链接

其他资源

  • 《Servlet & JSP: A Tutorial》 – Servlet基础章节。
  • X社区:搜索 #ServletAPI 获取示例。

这篇指南介绍了Servlet包的主要内容和使用方法。如果需要更深入探讨(如特定接口或高级功能),请告诉我!