当前位置: 首页 > news >正文

Servlet的三种写法

一、什么是Servlet:

     Java Servlet(服务端小应用程序)是一种基于 Java 的技术,用于处理来自 Web 客户端的 HTTP 请求,并生成相应的响应。Servlet 可以看作是服务器端的 Java 应用程序组件,它们扩展了 Web 服务器的功能,使其能够处理复杂的业务逻辑和动态内容生成。

二、环境搭配:

首先我们需要将servlet依赖复制粘贴到pom.xml文件里:

   <!--        servletApi的依赖--><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>4.0.1</version><scope>provided</scope></dependency>

这样我们就能使用servlet接口。

三、写接口:

1、直接实现 Servlet 接口

直接实现 Servlet 接口是最基础的方式,需要实现 initservicedestroy 等方法。这种方式较为灵活,但同时也需要更多手动处理的代码。

import javax.servlet.*;
import java.io.IOException;@WebServlet("/simple-servlet")
public class SimpleServlet implements Servlet {@Override//这个方法在 Servlet 被加载到内存中时调用,用于执行初始化任务。public void init(ServletConfig config) throws ServletException {// 初始化逻辑}@Override//返回当前 Servlet 的配置对象。public ServletConfig getServletConfig() {return null;}@Override//这个方法用于处理客户端的请求public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {// 处理请求System.out.println("Received request");((HttpServletResponse) res).sendRedirect("/response");}@Override//返回关于 Servlet 的信息字符串public String getServletInfo() {return "SimpleServlet";}@Override
//当 Servlet 被卸载或容器关闭时调用。public void destroy() {// 销毁逻辑}
}

2、继承 GenericServlet 类

   GenericServlet 类实现了 Servlet 接口,并提供了一些默认实现。这种方式减少了需要自己实现的方法数量,但仍然需要实现 service 方法来处理请求。

import javax.servlet.*;
import javax.servlet.http.HttpServlet;
import java.io.IOException;@WebServlet("/generic-servlet")
public class GenericServletExample extends GenericServlet {@Overridepublic void init(ServletConfig config) throws ServletException {super.init(config);}@Overridepublic void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {// 处理请求System.out.println("Received request");((HttpServletResponse) res).sendRedirect("/response");}@Overridepublic void destroy() {// 销毁逻辑}
}

3、继承 HttpServlet 类

HttpServlet 类继承自 GenericServlet 类,为处理 HTTP 请求提供了便利。这是最常用的方式,因为它为 HTTP 请求提供了默认的 doGetdoPost 方法。只需要重写这些方法即可处理特定的 HTTP 请求。

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;@WebServlet("/http-servlet")
public class HttpExampleServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// 处理 GET 请求System.out.println("Received GET request");resp.sendRedirect("/response");}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// 处理 POST 请求System.out.println("Received POST request");resp.sendRedirect("/response");}
}

这三类方法可以处理Http的访问请求并处理

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • tokenizer一些理解
  • Centos安装RabbitMQ
  • 站易WordPress
  • 从桌面到云端,2024年智能录屏解决方案全攻略
  • AI 功能上新!用 Einstein Copilot for Tableau 加速商业数据分析全过程
  • 优化Spring Boot应用的启动速度技巧
  • 如何设置英国代理IP地址:一场虚拟旅途的奇妙冒险
  • 文本匹配任务(上)
  • GDB的基本使用
  • 20240821 每日AI必读资讯
  • kws_pdm_record example
  • 【游戏开发】【Unity】如何快速建造人物模型并赋予动画动作
  • 查看一个exe\dll文件的依赖项
  • 效果炫酷的3D翻转书特效WordPress主题模板MagicBook主题v1.19
  • 8月20日
  • 【Amaple教程】5. 插件
  • express.js的介绍及使用
  • jquery ajax学习笔记
  • leetcode98. Validate Binary Search Tree
  • Mocha测试初探
  • 包装类对象
  • 从零开始的webpack生活-0x009:FilesLoader装载文件
  • 代理模式
  • 聊一聊前端的监控
  • 首页查询功能的一次实现过程
  • 写代码的正确姿势
  • 一起来学SpringBoot | 第十篇:使用Spring Cache集成Redis
  • 一些css基础学习笔记
  • 宾利慕尚创始人典藏版国内首秀,2025年前实现全系车型电动化 | 2019上海车展 ...
  • #include<初见C语言之指针(5)>
  • #stm32整理(一)flash读写
  • #我与Java虚拟机的故事#连载13:有这本书就够了
  • (03)光刻——半导体电路的绘制
  • (动手学习深度学习)第13章 计算机视觉---图像增广与微调
  • (附源码)小程序儿童艺术培训机构教育管理小程序 毕业设计 201740
  • (理论篇)httpmoudle和httphandler一览
  • (六)DockerCompose安装与配置
  • (亲测有效)推荐2024最新的免费漫画软件app,无广告,聚合全网资源!
  • (四)鸿鹄云架构一服务注册中心
  • (转)Sublime Text3配置Lua运行环境
  • (转)利用PHP的debug_backtrace函数,实现PHP文件权限管理、动态加载 【反射】...
  • (转)详解PHP处理密码的几种方式
  • (转载)Google Chrome调试JS
  • *_zh_CN.properties 国际化资源文件 struts 防乱码等
  • .net core Redis 使用有序集合实现延迟队列
  • .Net Core webapi RestFul 统一接口数据返回格式
  • .net dataexcel winform控件 更新 日志
  • .NET 材料检测系统崩溃分析
  • .NET/MSBuild 中的发布路径在哪里呢?如何在扩展编译的时候修改发布路径中的文件呢?
  • .net中应用SQL缓存(实例使用)
  • .ui文件相关
  • /usr/bin/perl:bad interpreter:No such file or directory 的解决办法
  • [ vulhub漏洞复现篇 ] Django SQL注入漏洞复现 CVE-2021-35042
  • [ web基础篇 ] Burp Suite 爆破 Basic 认证密码
  • [【JSON2WEB】 13 基于REST2SQL 和 Amis 的 SQL 查询分析器