每次请求servlet都会创建一个servlet对象吗?为什么?_Servlet

Servlet在java web服务器上运行,并扩展该服务器的功能,也就是实现数据的传递和处理以及返回。作为web开发的底层,掌握其内核思想对于后续框架的学习有极大帮助。


Service,doGet,doPost

  1. doGet():请求数据会以?的形式拼接在请求头中,不安全,没有请求实体部分。另外,浏览器对URL的长度有限制,所以get请求不能携带大量数据。
  2. doPost():数据不会显示在URL中,而是单独划分一块区域用于保存数据。POST 比 GET 更安全,因为参数不会被保存在浏览器历史或 web 服务器日志中。
  3. Service():POST和GET底层仍为Service方法,所以一般情况下,重写Service方法即可。当需要调用时,指明需要哪种方法即可,无需专门编写POST和GET。

Request,Response

  1. Request对象:将客户端请求信息提供给request对象,并将该对象作为参数(实参)传递给该servlet的service方法。[1]
  2. Response对象:定义辅助servlet将响应发送到客户端的对象。

Coookie,Session

  1. cookie:存储用户数据到浏览器中,方便web站点对用户信息的查询和使用。[2]
  2. Session:用户访问服务器,服务器创建一个session对象提供给该用户。服务器将该session对象的jsessionID用cookie技术存储到浏览器[3]。用户以后的每次请求都能获取到同一个session对象,保证了不同请求之间的数据共享。

特点:

  • 由服务器创建
  • 存储在服务器
  • 依赖cookie技术
  • 一次会话
  • 默认存储时间30min

Context,Config

  1. Context:Context对象由服务器创建,一个项目只能有一个对象。不管在项目的任意位置获取的都是同一个对象,那么不同用户发起请求获取的都是同一个对象,该对象由用户共同拥有,解决了不同用户的数据共享问题。
  2. Config:Servletconfig是Servlet的专属配置对象,每个Servlet对象都单独拥有一个Servletconfig对象,用于获取web.xml的配置信息。

Servlet流程

1. 浏览器发起请求到服务器

2. 服务器接到请求,创建request对象储存请求数据

3. 服务器调用对应的servlet进行请求处理,并将request对象作为实参传递给servlet的方法

4. Servlet方法执行请求处理

a) 设置请求编码格式

b) 设置响应编码格式

c) 获取请求信息

d) 处理请求信息

i. 创建业务层对象

ii. 调用业务层对象的方法

e)响应处理结果

i. 使用cookies储存数据

ii. 直接响应

iii. 请求转发

iv. 重定向

参考

  1. ^*该对象由Tomcat服务器创建并将所有数据保存在Request对象中。
  2. ^若不设置有效期,浏览器关闭即失效
  3. ^该Session对象有效期由服务器决定

你可能感兴趣的:(每次请求servlet都会创建一个servlet对象吗?为什么?_Servlet)