![15eded1715464b389d60bf65f0a94ddc.png](https://i-blog.csdnimg.cn/blog_migrate/06856daa864887ef3a66787000eba686.jpeg)
什么时候需要请求转发?
当一次请求需要多个servlet的联动操作,第一个servlet需要用到其他servlet已经声明的逻辑代码处理时,需要使用请求转发
请求转发的本质是什么?
在一个servlet中调用其他servlet
转发的特点
① 降低servlet之间的代码的冗余
② 一次请求转发内的servlet共享此次request和response对象
③ 地址栏信息不改变
request对象作为请求转发的数据的载体的方法是什么?
SetAttribute()存储getAttribute()获取removeAttribute()删除
request作用域的特点
请求转发,一次请求中的所有 Servlet
为什么需要cookie
cookie能解决了公共数据共享的问题
cookie的特点是什么
如果不设置有效期则默认存储在浏览器的内存中,浏览器关闭即失效,若设置了有效期,则存储到客户端的硬盘里,到期后自动销毁
如果不设置有效路径则任意项目路径的请求存储cookie信息,如果设置了有效路径则只有在该路径下的请求才会附带设置cookie信息
session的理解及其作用
用户使用浏览器第一次向服务器发送请求,服务器在接受到请求后,调用对应的 Servlet 进行处理。在处理过程中会给用户创建一个 session 对象,用来存储用户请求处理相关的公共数据,并将此 session 对象的 JSESSIONID 以 Cookie 的形式存储在浏览器中(临时存储,浏览器关闭即失效)。用户在发起第二次请求及后续请求时,请求信息中会附带 JSESSIONID,服务器在接收到请求后,调用对应的 Servlet 进行请求处理,同时根据 JSESSIONID 返回其对应的 session 对象。
如何保证不同请求获取到同一个session对象
在服务器端创建session对象时,会在浏览器端以cookie的形式存储一个标识符(id)
用户在第二次请求时,请求信息中会附带这个标识符(id)。以便调用相应的sevlet进行处理,同时根据标识符,返回相应的session对象
获取session对象的id的方法是什么?
session.getId()
session使用流程
1、 浏览器发起请求到Aservlet,在AServlet中使用req.getSession()获取Session对象,如果此次请求中没有SessionID则创建一个新的Session对象,如果有SessionID则将其对应的Session对象返回(前提是该session对象没有到期),如果session
对象到期销毁了,就算有sessionID也会重新创建一个Session。
2、校验session是否失效,存储数据到session对象中或者获取session中的数据或者删除session中的数据
session的特点
不同用户请求数据共享的问题
session的作用域
session的作用域:浏览器不关闭或者session不失效,则同一用户的任意请求获取的都是同一个session
session的默认有效期?怎么设置session的有效期
默认30分钟
通过Session.setMaxInactiveInterval设置
怎么强制销毁session?
调用Session.invalidate();
方法