【Servlet 笔记】Servlet 简介

Servlet 简介

Servlet 是什么?

百度百科说:

狭义的 Servlet 是指 Java 语言实现的一个接口,广义的 Servlet 是指任何实现了这个 Servlet 接口的类,一般情况下,人们将 Servlet 理解为后者。Servlet 运行于支持 Java 的应用服务器中。从原理上讲,Servlet 可以响应任何类型的请求,但绝大多数情况下 Servlet 只用来扩展基于 HTTP 协议的 Web 服务器。

下面所介绍的 Servlet 是用于扩展基于 HTTP 协议的 Web 服务器的。

Web 应用程序开发人员编写的类 --继承-> HttpServlet(抽象类)–继承-> GenericServlet(抽象类)–实现-> Servlet(接口)和 ServletConfig(接口)

在网上搜一些 Servlets 程序的代码会发现并没有编写什么监听端口的代码,接收客户端发来的信息的程序不是 Servlets 程序,而是 Web 服务器(如 Tomcat),那么 Servlet 有什么用呢?

Web 服务器接收到信息会将信息封装好传给 Servlet 容器,一个管理 Servlet 程序的程序,容器会调用对应的 Servlet 程序并将信息传给它,由 Servlet 来处理这些信息。

在这里插入图片描述

所以说 Servlet 程序只要负责处理信息就好了,与客户端沟通的事是交给 Web 服务器的,所以会发现 Servlet 程序没有 main 函数,因为 Servlet 程序是由 Servlet 容器调用的。

Servlet 生命周期

Servlet 的生命周期很简单:

  • 调用 init() 方法进行初始化
  • 调用 service() 方法处理请求
  • 调用 destroy() 方法终止

在这里插入图片描述

init()

每个 Servlet 实例一生中只调用一次,在第一次创建 Servlet 时被调用,用于初始化一些需要的数据,这些数据大都用于整个生命周期。

init() 可能在下面几种情况下被调用:

  • 当服务启动时
  • 当 Servlet 接受到它的第一个请求时
  • 响应服务管理员

service()

实际运行时最主要的方法,Servlet 容器调用 service() 方法来处理客户端的请求。service() 方法有两个参数:request 和 response。顾名思义,一个装载着容器封装好的客户端请求,一个用于封装响应客户端的信息。当服务器接收到一个 Servlet 请求时就会产生一个新的线程并调用对应 Servlet 的 service() 方法,所以当多个客户端并发访问同一个 Servlet 时就要注意线程安全问题。service() 方法检查 HTTP 请求类型 (GET, POST, PUT, DELETE…) ,并调用对应的 doGet(), doPost(), doPut(), doDelete() 等方法。所以通常不用修改 service() 方法,只要根据客户端的请求类型重写对应的 doGet(), doPost(), doPut(), doDelete() 等方法即可。

destroy()

destroy() 方法也只会被调用一次,在生命周期结束时调用,调用后会关闭数据库连接、停止后台线程、把 Cookie 列表或点击计数器写入到磁盘,并执行其他类似的清理活动,并且 Servlet 对象会被标记为垃圾回收。

HttpServletRequest

HttpServletRequest 是 HttpServlet 中用于封装请求信息的类,service() 方法中传入的 request 参数就是一个 HttpServletRequest 对象,可以通过调用 request 的方法来获取客户端请求的各种信息。

HttpServletRequest 的方法

HttpServletResponse

HttpServletResponse 用于封装要响应给客户端的信息,service() 方法中传入的 response 参数就是一个 HttpServletResponse 对象,通过 response 可以封装回送给客户端的响应消息。

HttpServletResponse 的方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值