本文内容主要为【cookie实现Servlet之间数据共享】的实现代码。关于Servlet之间数据共享的实现方案与cookie详细内容可参考文章【多个Servlet之间数据共享实现方案】。本文为《多个Servlet之间数据共享实现方案》中第二节的代码实现部分。建议阅读本文前先去阅读《多个Servlet之间数据共享实现方案》。 一、项目运行环境
本案例使用的编译器为idea。 1、Tomcat环境
2、api环境 3、项目目录结构 二、项目源码解析
index.html
卡片充值
用户会员卡充值
orderFood.html
点餐
用户点餐
OneServlet.java
package com.Etui.controller;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
import java.net.cookieStore;
@WebServlet(name = "OneServlet", value = "/one")
public class OneServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 获取参数
String userName = request.getParameter("userName");
String money = request.getParameter("money");
// 开卡,即将信息存入cookie
cookie card1 = new cookie("userName", userName);
cookie card2 = new cookie("money", money);
response.addcookie(card1);
response.addcookie(card2);
// 请求转发“orderFood”页面
request.getRequestDispatcher("/orderFood.html").forward(request, response);
System.out.println(userName + "," + money);
}
}
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;
@WebServlet(name = "TwoServlet", value = "/two")
public class TwoServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String userName = null;
String food = null;
cookie[] cookies = null;
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
// 食物定价
int jiaoziPrice = 20;
int youtiaoPrice = 10;
int mifanPrice = 15;
int money = 0;
// 获取参数
food = request.getParameter("food");
// 获取cookie
cookies = request.getcookies();
for (cookie cookie : cookies) {
String key = cookie.getName();
String value = cookie.getValue();
if("userName".equals(key)) {
userName = value;
} else if("money".equals(key)) {
money = Integer.parseInt(value);
if("饺子".equals(food)) {
if(jiaoziPrice <= money) {
cookie newcookie = new cookie("money", (money - jiaoziPrice) + "");
out.print("点餐成功!当前余额为" + newcookie.getValue() + "元");
// 添加money的cookie,覆盖原来的cookie
response.addcookie(newcookie);
} else {
out.print("余额不足,请充值!");
}
} else if ("油条".equals(food)) {
if(youtiaoPrice <= money) {
cookie newcookie = new cookie("money", (money - youtiaoPrice) + "");
out.print("点餐成功!当前余额为" + newcookie.getValue()+ "元");
// 添加money的cookie,覆盖原来的cookie
response.addcookie(newcookie);
} else {
out.print("余额不足,请充值!");
}
} else if ("米饭".equals(food)) {
if(mifanPrice <= money) {
cookie newcookie = new cookie("money", money - mifanPrice + "");
out.print("点餐成功!当前余额为" + newcookie.getValue() + "元");
// 添加money的cookie,覆盖原来的cookie
response.addcookie(newcookie);
} else {
out.print("余额不足,请充值!");
}
}
}
}
// System.out.println("用户名" + userName + "的余额为");
}
}
三、原理图
四、运行结果
1、用户名:李华,金额:100元
2、选择饺子20元
3、交易结果
Over!


