目录
频道首页
day29
收藏
0
aduoer 最近修改于 2023-08-25 18:40:29

Servlet

HTTP协议

概念

  • 超文本传输协议【HyperText Transfer Protocol】
  • 规定了浏览器和服务器之间数据传输格式
  • 是一个基于请求与响应模式的、无状态的、应用层的协议,运行于TCP协议基础之上

特点

  • 支持客户端【浏览器】/服务器模式
  • 简单快速
  • 灵活
  • 无状态

通信流程:

  • 浏览器与服务器建立连接(三次握手)
  • 浏览器向服务器发送请求。(HTTP协议,请求报文)
  • 服务器接受请求,并根据请求返回相应的文件作为应答。(HTTP协议,响应报文)
  • 浏览器与服务器关闭连接(四次挥手)

面试题

有一个页面,页面中包含四张图片,问浏览器向服务器发送几次请求?

5次请求、HTTP1.1协议中建立一次TCP连接

HTTP请求报文

当浏览器向Web服务器发出请求时,向服务器传递了一个数据块,就是请求报文

| 请求头 | 描述 | | ----------------- | ---------------------------------------------------------- | | Accept | 浏览器通过这个头告诉服务器,它所支持的数据类型 | | Accept-Encoding | 浏览器通过这个头告诉服务器,支持的压缩格式 | | Accept-Language | 浏览器通过这个头告诉服务器,它的语言环境 | | Host | 浏览器通过这个头告诉服务器,想访问哪台主机 | | If-Modified-Since | 浏览器通过这个头告诉服务器,缓存数据的时间 | | Referer | 浏览器通过这个头告诉服务器,客户机是哪个页面来的 | | Connection | 浏览器通过这个头告诉服务器,请求完后是断开链接还是保持链接 | | User-Agent | 浏览器通过这个头告诉服务器,浏览器的基本信息 |

HTTP响应报文

当Web服务器收到浏览器的请求后,服务器要对请求作出响应,就是响应报文

| 响应头 | 描述 | | ------------------- | ---------------------------------------------- | | Location | 服务器通过这个头,来告诉浏览器跳到哪里 | | Server | 服务器通过这个头,告诉浏览器服务器的型号 | | Content-Encoding | 服务器通过这个头,告诉浏览器数据的压缩格式 | | Content-Type | 服务器通过这个头,告诉浏览器数据的类型 | | Content-Length | 服务器通过这个头,告诉浏览器回送数据的长度 | | Content-Language | 服务器通过这个头,告诉浏览器语言环境 | | Refresh | 服务器通过这个头,告诉浏览器定时刷新 | | Content-Disposition | 服务器通过这个头,告诉浏览器以下载方式打开数据 | | Expires | 如果为-1,控制浏览器不要缓存 | | Cache-Control | 如果为no-cache,控制浏览器不要缓存 | | Pragma | 如果为no-cache,控制浏览器不要缓存 |

常见状态码

| 状态代码 | 状态描述 | 说明 | | ------------ | ---------------------- | ------------------------------------------------------------ | | 200 | OK | 客户端请求成功。 | | 302 | Found | 临时重定向。 | | 403 | Forbidden | 服务器收到请求,但是拒绝提供服务。 服务器通常会在响应正文中给出不提供服务的原因。 | | 404 | Not Found | 请求的资源不存在,例如,输入了错误的URL。 | | 500 | Internal Server Error | 服务器发生不可预期的错误,导致无法完成客户端请求。 |

Servlet核心

概念

  • Server Applet 服务器小程序

Servlet核心的接口和类

  • 除了实现Servlet接口,还可以通过继承GenericServlet或HttpServlet类,完成编写。

Servlet接口

  • 所有Servlet都会直接或间接实现该接口

核心方法

  • init(ServletConfig config)
  • service(ServletRequest req,ServletResponse res)
  • destroy()
  • ServletConfig getServletConfig()
  • String getServletInfo()

GenericServlet抽象类(一般不用)

提供init和destroy方法的简单实现,只需重写抽象service方法即可。

HttpServlet抽象类

HttpServlet是在继承GenericServlet的基础上做了进一步的扩展。(专注于HTTP请求)

对应HTTP请求方法

| 方法名 | 描述 | | ---------- | ------------------- | | doGet | 用于HTTP GET请求 | | doPost | 用于HTTP POST请求 | | doPut | 用于HTTP PUT请求 | | doDelete | 用于HTTP DELETE请求 |

Servlet创建方式

  1. 实现Servlet接口:该方式较为麻烦,需要实现接口中所有方法

  2. 继承HttpServlet【推荐】

    1>重写doGet方法和doPost方法。

    2>为了统一处理浏览器请求,doGet调用doPost

Serlet配置方式(一)

  1. 配置web.xml:提供\标签和\标签

  2. 访问路径url-pattern属性

    | 匹配规则 | 语法 | 说明 | | ------------ | ----------- | ---------------------------------------------- | | 精确匹配 | /具体的名称 | 只有url路径是具体的名称的时候才会触发Servlet | | 后缀匹配 | .xxx | 只要是以xxx结尾的就匹配触发Servlet | | 通配符匹配 | / | 匹配所有请求,包含服务器的所有资源 | | 通配符匹配 | / | 匹配所有请求,包含服务器的所有资源,不包括.jsp |

  3. 加载属性:

    | 加载属性 | 语法 | 说明 | | ------------ | --------------- | ------------------------------------------------------------ | | 加载时机 | load-on-startup | 指定Servlet加载时机。默认-1 第一次访问时创建。 0或正整数启动时创建,数子越小优先级越高 |

  4. 配置Servlet参数:\

Serlet配置方式(二)

注解配置

  • Servlet3.0后支持,推荐使用。

  • @WebServlet。

  • 配置属性

    | 属性名 | 语法 | 说明 | | ----------- | ------------- | ------------------------------------------------------------ | | Servlet名字 | name | 为当前Servlet命名。可选,不能为“”并且不能重复,如果重复启动不会报错误,但是会覆盖掉同名的Servlet | | 访问路径 | value | 配置URL访问路径,可配置多个。 | | 访问路径 | urlPatterns | 配置URL路径 ,和value作用一样,不能同时使用。 | | 加载时机 | loadOnStartup | 配置Servlet的创建的时机。 如果是0或者正数启动程序时创建。数子越小优先级越高。 如果是负数,则访问时创建。 | | 参数 | initParams | 配置Servlet参数 |

内容大纲
批注笔记
day29
ArticleBot
z
z
z
z
主页
会议室
Git管理
文章
云文档
看板