Java web开发03.1 Servlet 与Tomcat的使用

87 阅读3分钟

Servlet相关知识

Servlet 和 HTTPservlet

Servlet

Servlet是一个接口(Interface),它定义了处理客户端请求的通用方法,包括service()init()destroy()等。开发者需要实现Servlet接口,并覆盖这些方法来编写自己的Servlet类。

HTTPservlet

HttpServlet是一个抽象类(Abstract Class),HttpServlet类已经实现了Servlet接口中的方法,但需要开发者进一步覆盖doGet()doPost()doPut()等方法来处理具体的HTTP请求。

总结一下

  • Servlet是Java编写的服务器端组件,运行在Web服务器(Tomcat)中。
  • 它可以接收来自客户端的请求并生成响应。
  • Servlet通过扩展javax.servlet.Servlet接口或继承
  • 通过HttpServlet 类来实现。
  • Servlet主要用于处理业务逻辑,
    • 如数据处理
    • 数据库访问
    • 调用其他Java组件等。

Servlet的特点:

  • 提供了灵活的请求处理和响应生成能力。
  • 通过HttpServletRequest对象接收请求参数和数据。
  • 通过HttpServletResponse对象生成响应内容。
  • 可以通过配置URL映射将Servlet与特定的URL路径关联。

Tomcat

  • Tomcat服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器。
  • 在中小型系统和并发访问用户不是很多的场合下被普遍使用

创建项目:将Tomcat 和Servlet 结合起来

首先创建一个Tomcat的javaweb项目,具体信息可以看我的上一篇文章:

Java web开发02.2 配置Tomcat10.1 和IDEA

当项目创建成功之后,系统会自动创建一个HelloServlet类代码如下。

HttpServlet详解

以下是HttpServlet的代码

package com.example.login;

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

@WebServlet(name = "helloServlet", value = "/hello")

//Tomcat 就是找到对应的hello

public class HelloServlet extends HttpServlet {
    private String message;

    public void init() {
        message = "Hello World!";
    }
    @Override
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {

        //request  输入流 获取网页端 数据
        //response 输出流 向网页端 写入数据
        
        // 设置响应内容类型为文本/html
        response.setContentType("text/html");
        
        //相应文本的具体内容(用户看到的网页)
        PrintWriter out = response.getWriter();
        out.println("<html><body>");
        out.println("<h1>" + message + "</h1>");
        out.println("</body></html>");
    }

    public void destroy() {
    }
}

在这个类的开头,可以看到这一行注释。\

@WebServlet(name = "helloServlet", value = "/hello")

通过理解请求处理的过程,我们可以知道这个注释的意思

  • Tomcat运行
  • Tomcat得到Get请求(注意从始至终我们没有创建过)
  • Tomcat服务器会根据请求的URL匹配相应的Servlet。
    • 比如 http://localhost:8080/Login_war_exploded/hello (注意 这个URL有 /hello
    • 对应的就是注释中的 value = "/hello"
    • 通过这个value,Tomcat会找到对应的HelloServlet类
    • 通过一个线程,启动HelloServlet,并自动运行doGet方法

所以Tomcat的作用就是:根据HTTP请求,找到对应的HelloServlet类,自动创建该类并运行doGet方法

HelloServlet类代码解析

除此之外,在HelloServlet类中可以看到有几个函数:

  • init():HelloServlet创建的时候自动调用
  • doGet():用于处理HTTPGET请求
    • request: 输入流,获取网页端数据(也就是用户传给服务器的数据)
    • response: 输出流,向网页端写入数据(也就是用户看到的网页)
  • destroy():HelloServlet销毁的时候自动调用