javaweb学习——session和Cookie实现购物车功能
1.创建Book类,实现对图书信息的封装。
package cn.it.sessionDemo.example1; import java.io.Serializable; /**
* 该类实现对图书的封装
*
* @author 12428
*
*/
public class Book implements Serializable {
private static final long serialVersionUID = 1L;
private String ID;
private String name; public Book() { } public Book(String ID, String name) {
this.ID = ID;
this.name = name;
} public String getID() {
return ID;
} public void setID(String iD) {
ID = iD;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
}
}
2.创建一个BookDB类实现对图书类的操作
package cn.it.sessionDemo.example1; import java.util.Collection;
import java.util.LinkedHashMap;
import java.util.Map; /**
* 该类实现数据库模拟
*
* @author 12428
*
*/
public class BookDB {
private static Map<String, Book> books = new LinkedHashMap<String, Book>();
// 静态代码块在Java类被加载时执行,由于类只加载一次,应此静态代码块只执行一次。
static {
books.put("1", new Book("1", "javaweb开发"));
books.put("2", new Book("2", "jdbc开发"));
books.put("3", new Book("3", "java基础"));
books.put("4", new Book("4", "struts开发"));
books.put("5", new Book("5", "spring开发"));
} // 获得所有的图书
public static Collection<Book> getAll() {
return books.values();
} // 根据指定的ID获得图书
public static Book getBook(String ID) {
return books.get(ID);
} }
3.创建一个ListBookServlet类,用来显示可购买的图书信息。
package cn.it.sessionDemo.example1; import java.io.IOException;
import java.io.PrintWriter;
import java.util.Collection; import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; /**
* 该servlet是显示所有的图书列表。通过图书后面的购买连接可以把图书添加到购物车中
*
* @author 12428
*
*/
@WebServlet("/ListBookServlet")
public class ListBookServlet extends HttpServlet {
private static final long serialVersionUID = 1L; public ListBookServlet() {
super();
// TODO Auto-generated constructor stub
} protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
Collection<Book> books = BookDB.getAll();
out.write("本站的图书有:");
for (Book b : books) {
// 将图书的id值作为参数传过去
String url = "/SessionDemo2/PurchaseServlet?id=" + b.getID();
out.write(b.getName() + "<a href='" + url + " '>点击购买</a><br/>");
}
} protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
} }
4.创建一个实现购物车功能的servlet类
package cn.it.sessionDemo.example1; import java.io.IOException;
import java.util.ArrayList;
import java.util.List; import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
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类是用于实现购物车功能,既将用户购买的东西作为session的属性值存进去,再重定向到 到已购买商品的也买你
*
* @author 12428
*
*/
@WebServlet("/PurchaseServlet")
public class PurchaseServlet extends HttpServlet {
private static final long serialVersionUID = 1L; public PurchaseServlet() {
super();
// TODO Auto-generated constructor stub
} protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 获得用户的购买信息
String id = request.getParameter("id");
// 有些用户会直接访问这个Servlet,先判断访问时是否带有书的ID
if (id == null) {
// 如果Id为空,返回图书列表Servlet
String url = "/SessionDemo2/ListBookServlet";
response.sendRedirect(url);
//此处一定要返回,不然会出现错误
return;
} // 获取购买的图书信息
Book book = BookDB.getBook(id);
// 创建session对象
HttpSession session = request.getSession();
// 从session中获得购物车对象
List<Book> cart = (List<Book>) session.getAttribute("cart");
// 判断session对象是否有cart这个属性,如果没有这个属性的话,集合cart的值应为空
if (cart == null) {
// 没有cart属性,用户是首次购买,为用户创建一个购物车
cart = new ArrayList<Book>();
// 将购物车对象添加到session对象中
session.setAttribute("cart", cart);
}
// 将商品放入购物车
cart.add(book); // 创建一个Cookie存放session的信息
Cookie cookie = new Cookie("JSESSION", session.getId());
cookie.setMaxAge(60 * 30);
cookie.setPath("/SessionDemo2");
// 将cookie发送到客户端
response.addCookie(cookie); // 重定向到已购买商品的页面。
String url = "/SessionDemo2/CartServlet";
response.sendRedirect(url);
} /**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
} }
5.创建一个展示用户购买信息的类
package cn.it.sessionDemo.example1; import java.io.IOException;
import java.io.PrintWriter;
import java.util.List; import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession; @WebServlet("/CartServlet")
public class CartServlet extends HttpServlet {
private static final long serialVersionUID = 1L; public CartServlet() {
super();
// TODO Auto-generated constructor stub
} protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter(); // 变量cart引用用户的购物车
List<Book> cart = null;
// 创建一个变量是来判断用户是否购买过商品
boolean Flag = true;
// 获得用户的session,如果没有查到也不创建新的session。
HttpSession session = request.getSession(false);
// 如果session为空,Flag为false;
if (session == null) {
Flag = false;
} else {// 不为空,就获得用户的购物车
cart = (List<Book>) session.getAttribute("cart");
// 如果用户的购物车为空,就设置Falg为false。
if (cart == null) {
Flag = false;
} } // 如果Flag为false,表明用户没有购买过商品,重定向到ListServlet页面。
if (!Flag) {
out.write("对不起,你没有购买任何商品");
} else {
// 显示用户的购买信息
out.write("你购买的商品有:");
for (Book b : cart) {
out.write(b.getName() + "<br/>");
} }
} protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
} }
javaweb学习——session和Cookie实现购物车功能的更多相关文章
- 【JSP】Cookie的使用及保存中文,并用Cookie实现购物车功能
Cookie是服务器存放在客户端的一些数据,比如密码,以及你曾经访问过的一些数据. 设置Cookie //设置cookie Cookie cookie = new Cookie("TOM&q ...
- javaWeb学习-----session
一.Session简单介绍 在WEB开发中,服务器可以为每个用户浏览器创建一个会话对象(session对象),注意:一个浏览器独占一个session对象(默认情况下).因此,在需要保存用户数据时,服务 ...
- 【Tomcat】JSP使用Session、Cookie实现购物车
购物界面shop.jsp 初始页面 添加商品后,在session中设置属性,重定向回到shop.jsp,然后根据session的内容显示结果 Cookie设置setMaxAge可以延长session的 ...
- django学习,session与cookie
Cookies,某些网站为了辨别用户身份.进行session跟踪而储存在用户本地终端上的数据(通常经过加密).Cookie最早是网景公司的前雇员Lou Montulli在1993年3月的发明.Cook ...
- JavaWeb基础-Session和Cookie
JSP状态管理 http的无状态性,服务器不会记得发送请求的浏览器是哪一个 保存用户状态的两大机制:session和cookie Cookie:是web服务器保存在客户端的一系列文本信息 作用:对特定 ...
- JavaWeb基于session和cookie的数据共享
在了解session和cookie技术之前,我们需要先了解一下什么是会话?会话可以简单理解为用户打开一个浏览器,点击多个超链接,访问服务器的多个web资源,然后关闭浏览器,整个过程称为一个会话.这样, ...
- JavaWeb学习——session总结
一.session简介 sesion也就是会话,Session对象存储特定用户会话所需的属性及配置信息.这样,当用户在应用程序的Web页之间跳转时,存储在Session对象中的变量将不会丢失,而是在整 ...
- Javaweb学习笔记5—Cookie&Session
今天来讲javaweb的第五阶段学习. Cookie和Session同样是web开发常用到的地方. 老规矩,首先先用一张思维导图来展现今天的博客内容. ps:我的思维是用的xMind画的,如果你对我的 ...
- 工作任务:模拟淘宝登录和购物车功能:使用cookie记录登录名,下次登录时能够记得上次的登录名,使用cookie模拟购物车功能,使用session记住登录信息并验证是否登录,防止利用url打开网站,并实现退出登录功能
登入界面<% Cookie[] cks =request.getCookies(); String str=null; for(Cookie ck:cks) { if(ck.getName(). ...
随机推荐
- 052-PHP输出多个参数
<?php $x=5; //初始化两个变量 $y=10; echo $x,$y,"<br />$x+$y=",$x+$y; //输出多个参数 ?>
- Node.js NPM 包(Package)
章节 Node.js NPM 介绍 Node.js NPM 作用 Node.js NPM 包(Package) Node.js NPM 管理包 Node.js NPM Package.json 包是打 ...
- js原型链理解(2)--原型链继承
1.原型链继承 2.constructor stealing(构造借用) 3.组合继承 js中的原型链继承,运用的js原型链中的__proto__. function Super(){ this.se ...
- ofo身陷被收购、破产传闻,中国的共享单车还能活下去吗?
大潮退去,终将现出谁在"裸泳".尤其是那些看似火爆却迅速陨落的新事物,总是避免不了让人发出"伤仲永"的感慨.这其中,共享经济就是很典型的案例.共享睡眠舱.共享马 ...
- java向量 vector
Vector 向量 是java.util 包里的一个类,该类继承AbstractList,实现了类似动态数组的功能. 向量和数组相似,都可以保存一组数据,但数组的大小(长度)是固定的,而Vector ...
- 使用ansible tasks生成linux巡检报告
一直想做个关于资源巡检的功能,其需求就是通过邮件的形式来查看linux资源的使用情况,超出一定的阈值时高亮显示出来.也有人说啦,这个需求通过监控zabbix, prometheus都能做呀,何必自己重 ...
- LabVIEW面向对象的ActorFramework(3)
四.LabVIEW面向对象的编程架构:Actor Framework Actor Framework是一个软件类库,用以支持编写有多个VI独立运行且相互间可通信的应用程序,在该类型应用程序中,每个VI ...
- vps 跑流量
- HZNU-ACM寒假集训Day2小结 二分答案
Day2 ---二分 这里直接给出模板 两种对应不同的情况 可以借助数轴理解 int bsearch_1(int l, int r) { while (l < r) { ; if (check( ...
- Android进阶——学习AccessibilityService实现微信抢红包插件
在你的手机更多设置或者高级设置中,我们会发现有个无障碍的功能,很多人不知道这个功能具体是干嘛的,其实这个功能是为了增强用户界面以帮助残障人士,或者可能暂时无法与设备充分交互的人们 它的具体实现是通过A ...