一、Session(服务器端会话技术)
- 在web开发中,服务器可以为每个用户浏览器创建一个会话对象(session对象),注意:一个浏览器独占一个session对象(默认情况下)。因此,在需要保存用户数据时,服务器程序可以把用户数据写到用户浏览器独占的session中,当用户使用浏览器访问其它程序时,其它程序可以从用户的session中取出该用户的数据,为用户服务。
- session与cookie的主要区别在于:cookie是把用户的数据写给用户的浏览器。session技术是把用户的数据写到用户独占的session中(服务器端)。
- session对象由服务器创建,开发人员可以调用request对象的getSession方法得到session对象。
二、session怎样获取,怎样使用?
session是服务器端会话技术,session的类型时HttpSession。
要想获取一个session,可以通过request.getSession()方法得到。
session是一个域对象。setAttribute getAttribute removeAttribute
session的作用范围是整个会话,保证在整个会话过程中的数据可以共享。
三、session怎样保证一个浏览器有一个专属的session
通过将session的id值存储到cookie中,每一次请求时,都会将id值传递到服务器端,服务器端通过request.getSession()时会判断是否存在这样id值的session对象,如果存在,会直接获取,如果不存在,会重新创建。
com.it.servlet.session.Demo1Servlet
package com.it.servlet.session;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class Demo1Servlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//获取session
HttpSession session = request.getSession();
//session是一个域对象
session.setAttribute("sname", "手机");
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
com.it.servlet.session.Demo2Servlet
package com.it.servlet.session;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Demo2Servlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}