session
由服务器维护跟同一个浏览器的会话,有效时长不超过30分钟(可以在web.xml中设置||在程序中调用invalidate())
但要是需要实现不同浏览器共享同一个session则需要考虑session的实现原理——cookie,服务器创建一个session时会将这个session的id在cookie中写给浏览器,所以需要在程序中重写一个同名的cookie
BuyServlet:
package com.kexin.session1;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
/**
* 将用户选择要购买的商品加入到服务器维护的session中并重定向到购物车页面
* Session的原理其实是服务器将SessionID以Cookie的形式写给了浏览器
* 所以如果想要实现同一台计算机实现同一个session共享的话就需要重写cookie代码
*
* @author KeXin
*
*/
@WebServlet("/BuyServlet")
public class BuyServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 获取用户选择购买的产品
Product pro = (Product) new DB().GetProducts().get(request.getParameter("ID"));
// Session的原理其实是服务器将SessionID以Cookie的形式写给了浏览器
// 所以如果想要实现同一台计算机实现同一个session共享的话就需要重写cookie代码
HttpSession session = request.getSession();
Cookie cookie = new Cookie("JSESSIONID", session.getId());