【Servlet】通过HttpSession实现Servlet之间数据共享(实现案例)

24 篇文章 1 订阅
5 篇文章 0 订阅

通过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运行结果

Over!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值