javaweb之Session简单例子(两个页面一个存数据,一个取数据)和session的一些基本内容

package test.session;

import java.io.IOException;

import javax.servlet.ServletException;
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;

//购买servlet
public class SessionDemo1 extends HttpServlet {

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		HttpSession session = request.getSession();
		String sessionId = session.getId();
		// 将回写给浏览器的Cookie覆盖,设置上有效期,那么这个session也就有有效期了
		Cookie cookie = new Cookie("JSESSIONID", sessionId);
		cookie.setPath("/day07");
		// 设置有效期为30分钟
		cookie.setMaxAge(60 * 30);
		response.addCookie(cookie);

		session.setAttribute("name", "洗衣机");

	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doGet(request, response);
	}

}
package test.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;

//结账servelt
public class SessionDemo2 extends HttpServlet {

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		response.setCharacterEncoding("UTF-8");
		response.setHeader("Content-type", "text/html;charset=UTF-8");
		PrintWriter out = response.getWriter();

		HttpSession session = request.getSession();
		String product = (String) session.getAttribute("name");
		out.print("您购买的商品是:" + product);
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doGet(request, response);
	}

}
// 第一次执行getSession创建Session
// 关闭浏览器后sesson没死,三十分钟没人用才死
// session也是服务器中的web资源,session的配置要在web.xml中配置
/*
 * 配置session60分钟没人用摧毁 <session-config> <session-timeout>60</session-timeout>
 * </session-config>
 */
// 程序中摧毁session session.invalidate();
/*
 * request.getSession(false);不创建session,只获取session,性能稍微高点,这个在购买的时候用,比如用户购买用的request
 * .getSession();这个得到session
 * 但是到购物车查看就不要重新创建session了,直接request.getSession(false);
 * ,如果用request.getSession();的话,用户直接点购物车也会创建session
 */
// session是基于cookie的。服务器为浏览器创建的session的id,会通过cookie回写给浏览器,这个cookie是没有设置有效期的,浏览器一关就失效了
// 设置session的有效期,就是设置回写给浏览器的cookie的有效期。这个Cookie叫JSESSIONID
// 没有设置有效期的时候打开浏览器做一些session操作,然后重开一个浏览器 拿到的session是没有原来的操作的
// 没有设置有效期的session,也就是浏览器进程的session,在浏览器中新开选项卡和基于本浏览器打开新的浏览器是一个窗口(根据不同浏览器而言是不同的IE7打开两个窗口session的id是不同的,IE8打开两个窗口session的id就相同)

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>My JSP 'index.jsp' starting page</title>
  </head>
  
  <body>
    <a href="/day07/servlet/SessionDemo1">购买</a>
    <a href="/day07/servlet/SessionDemo2">结账</a>
  </body>
</html>


  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
可以使用以下步骤实现: 1. 在用户登录时创建一个 session,并将用户信息储在 session 。 2. 在用户添加商品到购物车时,将商品信息储在一个 HashMap ,并将该 HashMap 储在 session 。 3. 在用户浏览购物车时,从 session 获取该 HashMap,并将其的商品信息展示给用户。 4. 在用户结账时,将购物车的商品信息储在 cookie ,并将该 cookie 发送给服务器。 5. 在服务器端解析 cookie 的商品信息,并将其储在数据。 6. 在用户下次登录时,从数据获取该用户的购物车信息,并将其展示给用户。 以下是一个简单的示例代码: // 创建一个 session HttpSession session = request.getSession(); // 将用户信息储在 session session.setAttribute("user", user); // 获取购物车信息 HashMap<String, Integer> cart = (HashMap<String, Integer>) session.getAttribute("cart"); // 如果购物车为空,则创建一个新的购物车 if (cart == null) { cart = new HashMap<String, Integer>(); } // 将商品信息添加到购物车 cart.put(itemName, quantity); // 将购物车信息储在 session session.setAttribute("cart", cart); // 将购物车信息储在 cookie Cookie cookie = new Cookie("cart", encodeCart(cart)); response.addCookie(cookie); // 解析 cookie 的购物车信息 HashMap<String, Integer> cart = decodeCart(request.getCookies()); // 将购物车信息储在数据 CartDao.save(user, cart); // 从数据获取购物车信息 HashMap<String, Integer> cart = CartDao.get(user); // 编码购物车信息 private String encodeCart(HashMap<String, Integer> cart) { // TODO: 实现购物车信息的编码 } // 解码购物车信息 private HashMap<String, Integer> decodeCart(Cookie[] cookies) { // TODO: 实现购物车信息的解码 }
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值