• 重学Java


    引言

    本篇博文为 Servlet 技术的常见概念及相关细节梳理,意在重学 Java 查漏补缺。
    博文随时会进行更新,补充新的内容并修正错漏,该系列博文旨在帮助自己巩固扎实 Java 技能。
    毕竟万丈高楼,基础为重,借此督促自己时常温习回顾。

    一、概念

    Servlet 是 JavaEE 规范之一(接口)

    Servlet 是 JavaWeb 三大组件之一

    • Servlet 程序
    • Filter 过滤器
    • Listener 监听器

    Servlet 是运行在服务器上的一个 Java 程序,它可以接收客户端发来的请求并响应数据给客户端

    二、实现 Servlet 程序

    2.1、实现 Servlet 接口

    编写一个实现 Servlet 接口的类

    实现 service 方法,处理请求并响应数据

    web.xml 配置 Servlet 程序的访问地址

    2.2、继承 HttpServlet

    编写类,继承 HttpServlet

    重写 doGet 或 doPost 方法

    web.xml 配置 Servlet 程序的访问地址

    三、生命周期

    第一次访问,创建 Servlet 程序时创建

    • 执行 Servlet 构造器方法

    • 执行 init 初始化方法

    每次访问时调用

    • 执行 service 方法

    web 工程停止时调用

    • 执行 destroy 销毁方法

    四、继承体系

    五、常用类/接口

    5.1、ServletConfig

    Servlet 程序的配置信息类

    Servlet 程序和 ServletConfig 对象均由 Tomcat 负责创建

    Servlet 程序默认为第一次访问时创建,每个 Servlet 程序创建时便创建一个对应的 ServletConfig 对象传递给 init 方法

    常用方法:

    • String getServletName();
      • 获取 Servlet 程序别名 <servlet-name> 的值
    • String getInitParameter(String val1);
      • 获取初始化参数 init-param
    • ServletContext getServletContext();
      • 获取 ServletContext 对象

    5.2、ServletContext

    ServletContext 为一个接口,表示 Servlet 上下文对象

    一个 web 工程只有一个 ServletContext 对象实例

    ServletContext 对象是一个域对象

    ServletContext 在 web 工程部署启动时创建,在 web 工程停止时销毁

    5.3、HttpServletRequest

    只要有请求进入 Tomcat 服务器,Tomcat 便会将请求携带的 HTTP 协议信息进行解析并封装到 Request 对象中,传递给 service 方法(doGet 或 doPost)

    可以通过 HttpServletRequest 对象获取到所有请求的信息

    常用方法:

    • getRequestURI()
      • 获取请求的资源路径
    • getRequestURL()
      • 获取请求的统一资源定位符(绝对路径)
    • getRemoteHost()
      • 获取客户端的 IP
    • getHeader(String val1)
      • 获取请求头
    • getParameter()
      • 获取请求参数
      • getParameterValues()
        • 获取请求参数(多个值时使用 checkbox)
      • 在处理 POST 请求时
        • httpServletRequest.setCharacterEncoding("UTF-8");
          设置请求体的字符集为 UTF-8 从而解决 POST 请求中文乱码问题
        • 在获取请求参数之前调用才有效
    • getMethod()
      • 获取请求方法
    • setAttribute(key, value)
      • 设置域数据
    • getAttribute(key)
      • 获取域数据
    • getRequestDispatcher()
      • 获取请求转发对象

    5.3.1、请求转发

    5.4、HttpServletResponse

    只有有请求进入 Tomcat 服务器,Tomcat 便会创建一个 Response 对象传递给 Servlet 程序

    可以通过 HttpServletResponse 对象设置需要返回给客户端的信息

    通过流将数据传递给客户端

    六、HTTP 协议

    客户端与服务端之间通信,数据传输需要遵守的规则

    • 数据 -> 报文
    • 客户端给服务端发送数据 -> 请求
    • 服务端给客户端发送数据 -> 响应

    6.1、GET 请求

    6.2、POST 请求

    6.3、响应

    6.3.1、常见响应码

    响应码 英文含义 中文含义
    200 OK 请求成功
    301 Moved Permanently 所请求的页面已转移到一个新的 URL
    302 Found 所请求的页面已临时转移到一个新的 URL
    401 Unauthorized 所请求的页面需要认证登录
    403 Forbidden 禁止访问所请求的页面
    404 Not Found 服务器无法找到所请求的页面
    405 Method Not Allowed 在请求中指定的方法时不允许的
    500 Internal Server Error 未完成的请求,服务器遇到了一个意外的情况
    502 Bad Gateway 未完成的请求,服务器从上游服务器收到无效响应
    503 Service Unavailable 未完成的请求,服务器暂时超载或死机
    504 Gateway Timeout 网关超时

    6.3.2、常见 MIME 类型

    MIME 即 HTTP 协议中的数据类型

    • 全称:Multipurpose Internet Mail Extensions『多功能 Internet 邮件扩充服务』
    • 格式为:『大类型/小类型』并与某一种文件的扩展名相对应
    文件类型 扩展名 MIME 类型
    超文本标记语言文本 .html text/html
    普通文本 .txt text/plain
    RTF 文本 .rtf application/rtf
    GIF 图形 .gif image/gif
    JPEG 图形 .jpeg, .jpg image/jpeg
    au 声音文件 .au audio/basic
    MIDI 音乐文件 .mid, .midi audio/midi, audio/x-midi
    RealAudio 音乐文件 .ra, .ram audio/x-pn-realaudio
    MPEG 文件 .mpg, .mpeg video/mpeg
    AVI 文件 .avi video/x-msvideo
    GZIP 文件 .gz application/x-gzip
    TAR 文件 .tar application/x-tar

    完整思维导图地址:Servlet 简明教程

  • 相关阅读:
    python-异常处理总结
    python-笔记-内置函数
    python练习题--计算总分平均分操作excel
    python-笔记(操作excel)
    python -加密(MD5)
    jmeter-http信息头管理器
    python-判断一个字符串是不是小数
    [Python] [Django] Django将post请求变成get
    离线安装rabbitmq
    python第三方包的几种安装方式
  • 原文地址:https://www.cnblogs.com/dmcs95/p/14259006.html
Copyright © 2020-2023  润新知