本文内容主要为【HttpSession实现Servlet之间数据共享】的案例代码与运行结果。关于Servlet之间数据共享的实现方案与HttpSession的详细内容可参考文章【多个Servlet之间数据共享实现方案】。本文为《多个Servlet之间数据共享实现方案》中第三节的代码实现部分。建议阅读本文前先去阅读《多个Servlet之间数据共享实现方案》。 一、项目运行环境
该项目使用idea编译器实现 1、Tomcat运行环境(Run=>Edit Configuration…)
2、运行所需的api(File=>Project Structure) 3、项目目录结构 二、源码解析 1、index.html
购物商城
商品列表
商品名称
商品价格
厂家
操作
富光保温杯
90元/个
合肥富光工业园
添加到购物车
红富士苹果
8元/kg
湖北
添加到购物车
联想笔记本电脑
8000元/台
合肥市联想工业园
添加到购物车
我的购物车
2、OneServlet.java
package com.Etui.controller;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
@WebServlet(name = "OneServlet", value = "/one")
public class OneServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 读取参数
String productName = request.getParameter("productName");
// 创建箱子(回话)
HttpSession productCart = request.getSession();
Integer productNum = (Integer) productCart.getAttribute(productName);
// 将商品添加到箱子
if(productNum == null) {
productCart.setAttribute(productName, 1);
} else {
productCart.setAttribute(productName, productNum + 1);
}
System.out.println(productName + "," + productCart.getAttribute(productName));
}
}
3、TwoServlet.java
package com.Etui.controller;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;
@WebServlet(name = "TwoServlet", value = "/two")
public class TwoServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
// 调用请求对象,向Tomcat索要当前用户在服务器端私人储物柜
HttpSession productCart = request.getSession();
// 将session中所有的key读取出来,并存入一个枚举对象中
Enumeration productNames = productCart.getAttributeNames();
// System.out.print(productNames);
if (productNames == null){
out.print("购物车为空!");
} else {
out.print("购物车详情如下:");
while(productNames.hasMoreElements()) {
String productName = productNames.nextElement();
out.print("商品名称:" + productName + ",商品数量:" + productCart.getAttribute(productName) + "");
}
}
}
}
三、运行原理图
四、运行结果
HttpSession运行结果
Over!


