编程自学指南:java程序设计开发,Servlet 核心编程基础入门, Servlet 的生命周期,编写和部署简单的 Servlet, Servlet 中请求和响应对象的使用

编程自学指南:java程序设计开发,Java Web 之 Servlet 核心编程基础

一、课程信息

学习目标

  1. 理解 Servlet 的概念和作用。
  2. 掌握 Servlet 的生命周期。
  3. 学会编写和部署简单的 Servlet。
  4. 了解 Servlet 中请求和响应对象的使用。

二、课程导入

生活实例引入

  • 想象你去银行办理业务,你向银行柜员提出办理业务的请求(如取款、转账等),柜员根据你的请求进行相应的处理,然后把处理结果反馈给你。在Java Web 开发中,Servlet 就像是银行柜员,客户端(如浏览器)发出的请求由 Servlet 接收和处理,处理完后将结果响应给客户端。
  • 提问学生生活中还有哪些类似请求 - 处理 - 响应的场景,引导他们思考在编程中如何实现这种交互。

三、Servlet 基本概念

定义

Servlet 是 Java 编写的服务器端程序,运行在支持 Java 的应用服务器(如 Tomcat)中,用于处理客户端的请求并生成响应。它是 Java Web 开发的核心组件之一。

作用

  • 处理客户端请求:接收来自客户端(如浏览器)的 HTTP 请求,如 GET、POST 请求。
  • 生成响应内容:根据请求的内容进行相应的处理,并生成 HTML、JSON 等格式的响应内容返回给客户端。
  • 与数据库交互:可以调用数据库操作的代码,实现数据的增删改查等功能。

优点

  • 跨平台性:基于 Java 语言,具有良好的跨平台性。
  • 可扩展性:可以方便地进行扩展和维护。
  • 安全性:提供了一系列的安全机制,保障应用的安全。

四、Servlet 生命周期

生命周期阶段

加载和实例化
  • 当客户端第一次请求某个 Servlet 时,Servlet 容器(如 Tomcat)会加载该 Servlet 的类文件,并创建 Servlet 实例。
初始化
  • 调用 Servlet 的 init() 方法进行初始化操作,该方法在 Servlet 实例创建后只执行一次。通常用于初始化资源,如数据库连接、配置文件读取等。
import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import java.io.IOException;

public class MyServlet implements Servlet {
    @Override
    public void init(ServletConfig config) throws ServletException {
        System.out.println("Servlet 初始化...");
    }

    // 其他方法省略
}
服务
  • 当客户端请求该 Servlet 时,Servlet 容器会调用 service() 方法处理请求。service() 方法根据请求的类型(如 GET、POST)调用相应的 doGet() 或 doPost() 方法。
@Override
public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
    System.out.println("处理客户端请求...");
}
销毁
  • 当 Servlet 容器关闭或 Servlet 实例被销毁时,会调用 destroy() 方法,该方法用于释放 Servlet 占用的资源,如关闭数据库连接等。
@Override
public void destroy() {
    System.out.println("Servlet 销毁...");
}

生命周期流程图

客户端请求 -> 加载和实例化 -> 初始化(init()) -> 服务(service()) -> 销毁(destroy())

五、编写和部署 Servlet

编写 Servlet

继承 HttpServlet 类
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

@WebServlet("/hello")
public class HelloServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        out.println("<html><body>");
        out.println("<h1>Hello, Servlet!</h1>");
        out.println("</body></html>");
    }
}
代码解释
  • @WebServlet("/hello"):使用注解的方式将该 Servlet 映射到 /hello 路径。
  • doGet() 方法:处理客户端的 GET 请求,将 HTML 内容输出到客户端。

部署 Servlet

使用 IDE(以 IntelliJ IDEA 为例)
  1. 创建一个新的 Dynamic Web Project。
  2. 在 src 目录下创建 Servlet 类。
  3. 配置 Tomcat 服务器,将项目部署到 Tomcat 中。
  4. 启动 Tomcat 服务器,访问 http://localhost:8080/项目名/hello 即可看到 Servlet 的响应内容。

六、Servlet 中请求和响应对象的使用

请求对象(HttpServletRequest)

获取请求参数
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    String name = request.getParameter("name");
    if (name != null) {
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        out.println("<html><body>");
        out.println("<h1>Hello, " + name + "!</h1>");
        out.println("</body></html>");
    }
}
代码解释
  • request.getParameter("name"):获取客户端请求中名为 name 的参数值。
获取请求头信息
String userAgent = request.getHeader("User-Agent");
System.out.println("客户端浏览器信息:" + userAgent);

响应对象(HttpServletResponse)

设置响应内容类型
response.setContentType("text/html; charset=UTF-8");
输出响应内容
PrintWriter out = response.getWriter();
out.println("<html><body>");
out.println("<h1>这是响应内容</h1>");
out.println("</body></html>");
重定向
response.sendRedirect("http://www.example.com");

七、课堂练习

练习一

编写一个 Servlet,处理客户端的 POST 请求,接收客户端提交的用户名和密码,验证用户名是否为 admin,密码是否为 123456,如果验证通过,返回 “登录成功”,否则返回 “用户名或密码错误”。

练习二

编写一个 Servlet,获取客户端请求的 IP 地址,并将其输出到响应中。

八、课程总结

知识回顾

  • 回顾 Servlet 的概念、作用和优点。
  • 总结 Servlet 的生命周期和各个阶段的方法。
  • 复习 Servlet 的编写和部署步骤,以及请求和响应对象的使用方法。

口诀总结

  • “Servlet 是核心,处理请求有本领。生命周期四阶段,加载实例初化完。服务方法来处理,请求响应要牢记。注解映射路径明,部署之后能运行。”

九、课后作业

作业一

完善课堂上的登录验证 Servlet,将验证逻辑封装到一个独立的方法中,提高代码的可维护性。

作业二

研究并尝试使用 Servlet 实现一个简单的投票系统,用户可以通过表单提交投票信息,Servlet 负责处理投票请求并统计投票结果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zl515035644

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值