一、servlet的继承关系
public class Servlet extends HttpServlet
public abstract class HttpServlet extends GenericServlet
public abstract class GenericServlet implements Servlet, ServletConfig, Serializable
HttpServlet中有一个重要的方法叫service方法,每当html页面发送请求,servlet就会自动执行这个方法,service会调用doPost或者doGet方法。
二、session会话跟踪技术
1、概念
a给服务器发请求付款购物车中的商品,b又发请求更新购物车,a在付款时可能会对b购物车中的商品付款,因为html是无状态的,servlet无法判断是哪个人给自己发的请求,这时候就需要用到会话跟踪技术。
- 当客户端第一次请求会话对象时,服务器会创建一个 Session 对象,并为该 Session 对象分配一个唯一的 SessionID(用来标识这个 Session 对象);
- 服务器将 SessionID 以 Cookie(Cookie 名称为:“JSESSIONID”,值为 SessionID 的值)的形式发送给客户端浏览器;
- 客户端浏览器再次发送 HTTP 请求时,会将携带 SessionID 的 Cookie 随请求一起发送给服务器;
- 服务器从请求中读取 SessionID,然后根据 SessionID 找到对应的 Session 对象。
银行页面一段时间不操作就退出登录,就是会话失效了。
2、session保存作用域
一个会话可以向session的保存作用域中储存一个键值对,过一段时间这个会话又可以取出这个键值对(只要会话不失效),键值对存放在某一处内存中。别的会话想要获取这个键值对是不行的。
假如我的一个项目有两个网站,同一个浏览器,先访问第一个网站,在第一个网站上保存了数据,然后又访问第二个网站,希望得到刚刚的数据,这是可行的,因为虽然网站变了,但是是同一个session。但是如果我在一个浏览器上储存一个数据,在另一个浏览器上得到访问,那就不行,因为session变了。
一些方法(key value):
我们可以用这样的方法获取数据库中的内容并存储在session保存作用域中。
String data=DB.getdata();
HttpSession session=request.getSession();//request 是doGet方法中传进来的参数
session.setAttribute("DATA",data);//键+值
3、服务器转发和客户端重定向
[javaweb] servlet 服务器端转发和客户端重定向 (四)_半岛铁盒@的博客-CSDN博客
用户注册的时候,假如没有账号,需要注册一个,那点击一下链接需要跳转页面,我们可以使用客户端重新定向,跳转到一个新的页面。