首页 > 编程语言 >Java Web开发基础——Servlet与JSP基础

Java Web开发基础——Servlet与JSP基础

时间:2024-12-24 13:26:53浏览次数:5  
标签:Web 生命周期 Java 请求 JSP Servlet

在本节中,我们将深入探讨Java Web开发中的两个核心技术:Servlet和JSP(Java Server Pages)。这两者是Java Web应用程序的基础,理解它们的工作原理、生命周期以及如何高效地使用它们,对于开发者来说至关重要。

1. Servlet概念、生命周期与配置

Servlet概述

Servlet是Java EE(现为Jakarta EE)技术中用于构建动态Web应用的基础组件。它是一个运行在Web服务器中的Java程序,负责处理客户端请求并生成动态响应。Servlet是由Web服务器容器(如Apache Tomcat、Jetty等)加载和执行的。

Servlet的核心职责是接收HTTP请求、处理业务逻辑并生成HTTP响应。它是Java Web开发的关键组件,广泛应用于请求处理、用户认证、会话管理等方面。

Servlet生命周期

Servlet的生命周期由Web容器管理,生命周期的关键步骤如下:

  1. 加载与实例化

    • 当Servlet首次被请求时,Web容器会加载该Servlet并创建其实例。如果Servlet已经被加载且实例化过,那么它将会使用之前创建的实例。
  2. 初始化(init)

    • init()方法是Servlet的初始化方法。它在Servlet实例化之后,且请求被处理之前执行。此方法只会在Servlet的生命周期内执行一次,通常用于执行一些初始化任务,比如加载配置文件、建立数据库连接等。
    • init()方法的签名:
    public void init() throws ServletException {
        // Initialization code
    }

  3. 请求处理(service)

    • service()方法用于处理每个HTTP请求。每当Servlet收到一个请求时,Web容器会调用该方法。service()方法接收HttpServletRequestHttpServletResponse对象,并通过这些对象获取请求信息并生成响应内容。
    • service()方法的签名:
    public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // Request handling code
    }

  4. 销毁(destroy)

    • destroy()方法在Servlet实例销毁之前被调用,通常用于释放资源(如关闭数据库连接、释放内存等)。该方法只会执行一次,当容器停止或Servlet被卸载时执行。
    • destroy()方法的签名:
    public void destroy() {
        // Cleanup code
    }

Servlet配置

Servlet需要在web.xml配置文件中进行声明,指定Servlet的类名和URL映射。web.xml是Web应用的部署描述符,用于定义Servlet及其初始化参数、URL映射、监听器等。

例如,在web.xml中配置一个名为HelloServlet的Servlet:

<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
    <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>

Servlet示例:HelloServlet

@WebServlet("/hello")
public class HelloServlet 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, Welcome to Servlet!</h1>");
    }
}
2. 编写并部署第一个Servlet

接下来,我们将通过创建和部署一个简单的Servlet应用程序,演示如何配置Servlet和处理HTTP请求。

步骤1:创建Servlet类

首先,在src/main/java/com/example目录下创建一个Servlet类,命名为FirstServlet.java。该Servlet会响应/first路径的HTTP GET请求。

步骤2:配置web.xml

虽然使用注解@WebServlet可以省去在web.xml中配置Servlet的步骤,但对于传统的Servlet配置,我们仍然可以手动修改web.xml文件。在WEB-INF/web.xml文件中添加以下配置:

<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
    <servlet>
        <servlet-name>FirstServlet</servlet-name>
        <servlet-class>com.example.FirstServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>FirstServlet</servlet-name>
        <url-pattern>/first</url-pattern>
    </servlet-mapping>
</web-app>

步骤3:部署Servlet

将项目部署到Tomcat服务器中。在IDE(如IntelliJ IDEA或Eclipse)中配置Tomcat服务器,然后将项目部署到服务器上。在浏览器中访问http://localhost:8080/your_project_name/first,您将看到Servlet返回的网页。

3. JSP概念与生命周期

JSP概述

JSP(JavaServer Pages)是一种动态网页技术,它使得开发者可以在HTML代码中嵌入Java代码。JSP允许开发者在页面中插入Java表达式、脚本块和指令,并将这些内容与HTML标签结合,从而动态生成内容。

JSP是Servlet的扩展,通过简化动态内容生成的过程,开发者可以专注于编写逻辑,而无需编写大量的Servlet代码。JSP文件通常以.jsp扩展名保存。

JSP生命周期

JSP的生命周期与Servlet类似,由Web容器管理。JSP的生命周期包括以下几个阶段:

  1. 请求与实例化

    • 当JSP页面首次被请求时,Web容器会将其编译成一个Servlet类,并将其实例化。
  2. 初始化(init)

    • Web容器调用jspInit()方法,这是JSP的初始化阶段。此方法类似于Servlet中的init()方法,仅会在JSP实例化时调用一次。
  3. 请求处理(service)

    • JSP通过调用_jspService()方法来处理每个请求。在这个方法中,JSP页面中的Java代码会被执行,并生成响应内容。该过程与Servlet的service()方法类似。
  4. 销毁(destroy)

    • 当JSP页面不再被需要时,Web容器会调用jspDestroy()方法来释放资源。

JSP示例:HelloJSP.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"%>
<%@ page import="java.util.*" %>
<html>
<head>
    <title>Hello JSP</title>
</head>
<body>
    <h1>Hello, Welcome to JSP!</h1>
    <p>Current Date and Time: <%= new Date() %></p>
</body>
</html>
4. 使用JSP动态展示数据

在本节中,我们将通过一个示例展示如何使用JSP动态地展示数据。假设我们有一个简单的用户列表,JSP将从请求中接收数据并在页面上动态展示。

步骤1:Servlet传递数据给JSP

在Servlet中,我们将创建一个User对象,并将该对象添加到请求属性中,然后转发到JSP页面显示数据。

@WebServlet("/userList")
public class UserListServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        List<String> users = Arrays.asList("John", "Jane", "Tom", "Alice");
        request.setAttribute("users", users);
        RequestDispatcher dispatcher = request.getRequestDispatcher("/userList.jsp");
        dispatcher.forward(request, response);
    }
}

步骤2:创建JSP页面

userList.jsp页面中,使用JSP标签和EL表达式来动态显示用户数据。

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"%>
<%@ page import="java.util.*" %>
<html>
<head>
    <title>User List</title>
</head>
<body>
    <h1>List of Users</h1>
    <ul>
        <c:forEach var="user" items="${users}">
            <li>${user}</li>
        </c:forEach>
    </ul>
</body>
</html>

在这个示例中,<c:forEach>标签用来遍历users集合并动态生成HTML列表。

关于作者:

15年互联网开发、带过10-20人的团队,多次帮助公司从0到1完成项目开发,在TX等大厂都工作过。当下为退役状态,写此篇文章属个人爱好。本人开发期间收集了很多开发课程等资料,需要可联系我

标签:Web,生命周期,Java,请求,JSP,Servlet
From: https://blog.csdn.net/u012263104/article/details/144692104

相关文章