初探Servlet

news/2024/11/1 11:09:49/

文章目录

  • 1. Servlet概述
    • 1.1 定义
    • 1.2 作用
  • 2. 主要知识点
    • 2.1 生命周期
    • 2.2 请求处理
    • 2.3 Servlet配置
  • 3. 案例演示
    • 3.1 创建Web应用项目
    • 3.2 修改项目工件名
    • 3.3 重新部署Web项目
    • 3.4 创建WelcomeServlet
    • 3.5 编写`doGet`方法代码
    • 3.6 编写`doPost`方法代码
    • 3.7 访问WelcomeServlet
  • 4. 小结

在这里插入图片描述
大家好,今天我们将一起探索Java Servlet的奥秘。Servlet是Java EE中非常重要的一个组件,它是运行在服务器端的小程序,专门用来处理客户端的请求,并生成动态的响应内容。接下来,我们将通过一系列的步骤,从Servlet的基础知识到实际的案例演示,深入了解Servlet的工作原理和应用。

1. Servlet概述

1.1 定义

首先,我们来定义一下什么是Servlet。Servlet是服务器端的Java小程序,它遵循特定的规范,可以接收客户端的请求,进行处理,然后生成响应。

1.2 作用

Servlet的作用非常广泛,它可以用于实现动态网页的生成、处理用户的请求、与数据库进行交互等。在企业级Web应用中,Servlet是不可或缺的基础组件之一。

2. 主要知识点

2.1 生命周期

Servlet的生命周期包括四个阶段:加载和实例化、初始化、服务和销毁。

  • 加载和实例化:当客户端第一次访问Servlet时,服务器会加载Servlet类并创建一个实例。
  • 初始化:通过调用init()方法,进行Servlet的初始化工作。
  • 服务:Servlet通过service()方法来处理客户端的请求。service()方法会根据请求的类型,调用doGet()doPost()方法。
  • 销毁:当Servlet不再被使用时,服务器会调用destroy()方法,进行资源的释放。

2.2 请求处理

Servlet处理请求的类型主要包括GET和POST。通过HttpServletRequest对象获取请求参数,通过HttpServletResponse对象生成响应。

2.3 Servlet配置

Servlet可以通过两种方式进行配置:传统的web.xml配置和注解配置。

3. 案例演示

3.1 创建Web应用项目

我们将从创建一个Jakarta EE项目开始,命名为ServletDemo。

  1. 在IDE中创建一个新的Jakarta EE项目。
  2. 单击【Next】按钮,配置项目的相关设置。
  3. 单击【Create】按钮,完成项目的创建。
  4. 删除不必要的HelloServlet文件。

3.2 修改项目工件名

将项目的工件名从ServletDemo:war exploded改成ServletDemo,以便于部署。

3.3 重新部署Web项目

  1. 先移除项目,然后进行修复。
  2. 切换到【Server】选项卡,查看项目的URL。
  3. 启动服务器,查看项目的首页。

3.4 创建WelcomeServlet

  1. net.huawei.servletdemo包里创建WelcomeServlet类。
  2. 通过添加@WebServlet注解,设置访问的URL。
  3. 继承HttpServlet类,并提供处理HTTP请求的方法,包括doGetdoPost
package net.huawei.servletdemo;import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;/*** 功能:欢迎处理程序* 作者:华卫* 日期:2024年10月28日*/
@WebServlet(urlPatterns = "/welcome")
public class WelcomeServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {        }@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {       }
}

3.5 编写doGet方法代码

doGet方法中,我们将设置响应对象的字符编码,创建日期对象,并格式化输出到客户端。

@Override                                                                                 
protected void doGet(HttpServletRequest request, HttpServletResponse response)            throws ServletException, IOException {                                            // 设置响应对象字符编码                                                                         response.setCharacterEncoding("UTF-8");                                               // 创建日期对象                                                                             Date currentDate = new Date();                                                        // 创建简单日期格式对象                                                                         SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");                  // 获取打印字符输出流                                                                          PrintWriter out = response.getWriter();                                               // 向客户端输出页面                                                                           out.print("<html>");                                                                  out.print("<head>");                                                              out.print("<title>欢迎</title>");                                               out.print("</head>");                                                             out.print("<body style='text-align: center'>");                                   out.print("<h1 style='color: red'>欢迎访问泸州职业技术学院</h1>");                        out.print("<h3 style='color: blue'>" + sdf.format(currentDate) + "</h3>");    out.print("</body>");                                                             out.print("</html>");                                                                 
}                                                                                         

3.6 编写doPost方法代码

doPost方法中,我们可以直接调用doGet方法来处理POST请求。

@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doGet(request, response);
}

3.7 访问WelcomeServlet

  1. 重启服务器,访问http://localhost:8080/welcome
    在这里插入图片描述

  2. 如果遇到乱码问题,可以通过修改浏览器的字符编码为UTF-8来解决。
    在这里插入图片描述

  3. 刷新页面,观察时间的变化。
    在这里插入图片描述

4. 小结

通过今天的实战,相信大家对Servlet有了更深入的了解。Servlet不仅在理论上重要,在实际的Web开发中也是极其实用的技术。希望大家能够在实际的项目中灵活运用Servlet,构建出功能强大的Web应用。


http://www.ppmy.cn/news/1543563.html

相关文章

Spark窗口函数

1、 Spark中的窗口函数 窗口就是单纯在行后面加一个列 可以套多个窗口函数&#xff0c;但彼此之间不能相互引用&#xff0c;是独立的 窗口函数会产生shuffle over就是用来划分窗口的 (1) 分组聚合里面的函数&#xff0c;基…

大数据-199 数据挖掘 机器学习理论 - 决策树 模型 决策与条件 香农熵计算

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff08;已更完&#xff09;HDFS&#xff08;已更完&#xff09;MapReduce&#xff08;已更完&am…

KVM 虚拟机Anolis OS 8.9 下利用宝塔面板中的 Docker 配置 Nextcloud + onlyoffice

第一部分&#xff1a;安装配置 nextcloud 准备 &#xff08;1&#xff09;启动一个 Anolis OS 8.9 虚拟机&#xff0c;见下图。该虚拟机为 anlisos8…0.2 虚拟机的 ssh、hostname 、IP地址都已配置好。 &#xff08;2&#xff09;宝塔面板也已安装好docker 一、环境 do…

Certimate - 免费开源的 SSL 证书托管、自动续签工具,开发者维护 90 天免费证书的救星

很完美的 SSL 证书托管工具&#xff0c;安全可靠&#xff0c;简单易用。 Certimate 是一个由国人开发的 SSL 证书管理工具&#xff0c;提供一个 web UI 界面让我们可以用简单直观的方式来管理 SSL 证书&#xff0c;申请证书、部署证书&#xff0c;以及证书到期续签都是自动完成…

网络爬虫的定义

网络爬虫&#xff0c;即Web Spider&#xff0c;是一个很形象的名字。 把互联网比喻成一个蜘蛛网&#xff0c;那么Spider就是在网上爬来爬去的蜘蛛。 网络蜘蛛是通过网页的链接地址来寻找网页的。 从网站某一个页面&#xff08;通常是首页&#xff09;开始&#xff0c;读取网页…

Java面试经典 150 题.P80. 删除有序数组中的重复项 II(004)

本题来自&#xff1a;力扣-面试经典 150 题 面试经典 150 题 - 学习计划 - 力扣&#xff08;LeetCode&#xff09;全球极客挚爱的技术成长平台https://leetcode.cn/studyplan/top-interview-150/ 题解&#xff1a; class Solution {public int removeDuplicates(int[] nums)…

力扣题目解析--整数反转

题目 给你一个 32 位的有符号整数 x &#xff0c;返回将 x 中的数字部分反转后的结果。 如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] &#xff0c;就返回 0。 假设环境不允许存储 64 位整数&#xff08;有符号或无符号&#xff09;。 示例 1&#xff1a…

TensorFlow_T4 猴痘病识别

目录 一、前言 二、前期准备 1、设置GPU 2、导入数据 3、查看数据 三、数据预处理 1、加载数据 2、可视化数据 3、再次检查数据 4、配置数据集 四、构建CNN网络 五、编译 六、训练模型 七、模型评估 1、Loss and Acurracy图 2、指定图片进行预测 一、前言 &#…