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

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.dtcms.com/a/315160.html

相关文章:

  • shell脚本tcpdump抓取数据解析执行关机指令
  • Javascript面试题及详细答案150道之(031-045)
  • ES集群调优策略
  • NetBSD notes[1]
  • Redis 常用数据结构以及单线程模型
  • 力扣热题100------21.合并两个有序链表
  • Redis分布式锁简单实现
  • 安卓的NDK、ABI、JNI到底是指啥?区别与联系是?
  • Prometheus-3--Prometheus是怎么抓取Java应用,Redis中间件,服务器环境的指标的?
  • Ollama入门实战
  • ES集群规划与调优
  • Matlab(1)
  • 蓝桥杯----AT24C02
  • 【Git】怎么将https://coding.net的仓库迁移至https://cnb.cool/
  • 拉格朗日松弛算法求解VRP(Vehicle Routing Problem)车辆路径问题和简单示例
  • Linux的进程管理与监控和任务工具crontab的使用
  • 臭氧、颗粒物和雾霾天气过程的大气污染物计算 CAMx模型
  • 用思维框架拆解知识,开启高效学习之旅
  • 【基础完全搜索】USACO Bronze 2019 January - 猜动物Guess the Animal
  • RabbitMQ--介绍
  • 498. 对角线遍历
  • JUCE VST AI 开源
  • 2025最好的Dify入门到精通教程(上)
  • 微服务的编程测评系统10-竞赛删除发布-用户管理-登录注册
  • 县级融媒体中心备份与恢复策略(精简版3-2-1架构)
  • 【网络安全】不安全的反序列化漏洞
  • P1550 [USACO08OCT] Watering Hole G
  • 【达梦MPP(带主备)集群搭建】
  • python包管理器uv踩坑
  • Golang中的`io.Copy()`使用场景