通过HttpSession实现Servlet之间数据共享(实现案例)
前言
- 本文内容主要为【HttpSession实现Servlet之间数据共享】的案例代码与运行结果。
- 关于Servlet之间数据共享的实现方案与HttpSession的详细内容可参考文章【多个Servlet之间数据共享实现方案】。
- 本文为《多个Servlet之间数据共享实现方案》中第三节的代码实现部分。
- 建议阅读本文前先去阅读《多个Servlet之间数据共享实现方案》。
一、项目运行环境
- 该项目使用idea编译器实现
1、Tomcat运行环境(Run=>Edit Configuration…)
2、运行所需的api(File=>Project Structure)
3、项目目录结构
二、源码解析
1、index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>购物商城</title>
</head>
<body>
<center>
<h2 style="color: tomato;">商品列表</h2>
<table border="2">
<tr>
<td>商品名称</td>
<td>商品价格</td>
<td>厂家</td>
<td>操作</td>
</tr>
<tr>
<td>富光保温杯</td>
<td>90元/个</td>
<td>合肥富光工业园</td>
<td><a href="/myWeb/one?productName=富光保温杯">添加到购物车</a></td>
</tr>
<tr>
<td>红富士苹果</td>
<td>8元/kg</td>
<td>湖北</td>
<td><a href="/myWeb/one?productName=红富士苹果">添加到购物车</a></td>
</tr>
<tr>
<td>联想笔记本电脑</td>
<td>8000元/台</td>
<td>合肥市联想工业园</td>
<td><a href="/myWeb/one?productName=联想笔记本电脑">添加到购物车</a></td>
</tr>
<tr>
<td colspan="4" align="center">
<a href="/myWeb/two">我的购物车</a>
</td>
</tr>
</table>
</center>
</body>
</html>
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<String> productNames = productCart.getAttributeNames();
// System.out.print(productNames);
if (productNames == null){
out.print("<h2>购物车为空!</h2>");
} else {
out.print("<h2>购物车详情如下:</h2>");
while(productNames.hasMoreElements()) {
String productName = productNames.nextElement();
out.print("<h3>商品名称:" + productName + ",商品数量:" + productCart.getAttribute(productName) + "</h3>");
}
}
}
}
三、运行原理图
四、运行结果
HttpSession运行结果