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

Servlet 相关笔记整理

一、Servlet 基础概念

  1. Servlet 本质:Java 语言的服务端程序,用于接收和处理客户端请求
  2. 线程安全:不保证线程安全
  3. 实例特性:单例模式(一个 Servlet 类只有一个实例)

二、Servlet 生命周期

  1. 实例化时机
    • 默认(loadOnStartup = -1):第一次被访问时实例化
    • 配置正整数(如 loadOnStartup = 8):项目启动时实例化,数值越小优先级越高
  2. 生命周期流程
    1. 实例化(调用构造方法)
    2. 执行 init() 方法
    3. 执行 service() 及 doGet()/doPost() 处理请求
    4. 服务器关闭时执行 destroy() 方法

三、核心对象与操作

1. HttpServletRequest(请求对象)

  • 获取请求参数request.getParameter("参数名")(无参数时返回 null)
  • 获取请求头request.getHeader("头名称")
  • 获取 Cookierequest.getCookies()
  • 域对象操作request.setAttribute("key", value)/request.getAttribute("key")
  • 请求转发request.getRequestDispatcher("/路径").forward(req, resp)

2. HttpServletResponse(响应对象)

  • 设置响应内容resp.getWriter().write("内容")
  • 设置编码resp.setCharacterEncoding("UTF-8")
  • 设置内容类型resp.setContentType("text/html;charset=UTF-8")
  • 添加 Cookieresp.addCookie(cookie)
  • 重定向resp.sendRedirect("URL")

3. HttpSession(会话对象)

  • 获取方式request.getSession()
  • 作用:保持会话状态(解决 HTTP 无状态问题)
  • 操作方法session.setAttribute("key", value)/session.getAttribute("key")
  • 生命周期:从会话开始到主动退出或超时(默认 30 分钟无操作)
  • 实现原理:基于 SessionID 的 Cookie 机制

4. ServletContext(应用上下文对象)

  • 获取方式request.getServletContext() 或 session.getServletContext()
  • 作用域:整个 Web 应用,所有用户共享

四、请求转发与重定向区别

特性请求转发(forward)重定向(redirect)
请求次数1 次2 次
地址栏不变显示新地址
数据传递可通过 request 域对象传递不可直接传递(需用 Session 等)
访问范围仅限当前项目内可访问外部资源
实现方式request.getRequestDispatcher().forward()response.sendRedirect()

五、Servlet 配置方式

  • 注解配置@WebServlet(urlPatterns = "/路径", loadOnStartup = 优先级)
    • 示例:@WebServlet(urlPatterns = "/easye", loadOnStartup = 12)
  • 路径配置:直接指定路径 @WebServlet("/easyc")

六、Cookie 操作

  1. 创建 CookieCookie cookie = new Cookie("键", "值")
  2. 发送 Cookie 到客户端response.addCookie(cookie)
  3. 获取客户端 Cookierequest.getCookies()

七、常用方法总结

场景方法示例
处理 GET 请求protected void doGet(...)
处理 POST 请求protected void doPost(...)
初始化 Servletpublic void init()
销毁 Servletpublic void destroy()
通用服务方法protected void service(...)
获取会话对象HttpSession session = request.getSession()
设置响应字符流PrintWriter out = response.getWriter()
http://www.xdnf.cn/news/16999.html

相关文章:

  • Java 的 APT(Annotation Processing Tool)机制详解
  • 力扣 hot100 Day65
  • 基于Matlab实现LDA算法
  • 数据结构——单向链表部分操作及valgrind安装
  • 单片机裸机程序设计架构
  • webm 读取解析
  • 各种信号分解、模态分解方法合集【MATLAB实现】
  • 网络相关命令
  • TorchDynamo源码解析:从字节码拦截到性能优化的设计与实践
  • 复合机器人抓取精度怎么测量?
  • 8.4 打卡 DAY 33: 第一个神经网络 - MLP的构建与训练
  • usr/bin/ld链接报错undefined reference `av_frame_free(AVFrame**)‘等ffmpeg库报错
  • VAE学习笔记
  • Visual Studio Code的下载,安装
  • 机器学习(11):岭回归Ridge
  • iOS混淆工具有哪些?功能测试与质量保障兼顾的混淆策略
  • OpenLayers 入门指南【五】:Map 容器
  • C语言的数组与字符串
  • 力扣热题100——双指针
  • Hadoop MapReduce 3.3.4 讲解~
  • SpringBoot自动装配原理
  • 36.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--缓存Token
  • 编程算法:技术创新与业务增长的核心驱动力
  • IDA9.1使用技巧(安装、中文字符串显示、IDA MCP服务器详细部署和MCP API函数修改开发经验)
  • 电商直播流量爆发式增长,华为云分布式流量治理与算力调度服务的应用场景剖析
  • 构建属于自己的第一个 MCP 服务器:初学者教程
  • 从零认识OpenFlow
  • 学习游戏制作记录(角色属性和状态脚本)8.4
  • 【Linux指南】软件安装全解析:从源码到包管理器的进阶之路
  • AI鉴伪技术鉴赏:“看不见”的伪造痕迹如何被AI识破