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(). ...
随机推荐
- java流程控制语句要点
java流程控制语句要点 一.java7增强后的switch switch语句后面的控制表达式的数据类型只能是byte.short.char.int四种整数类型,不能是boolean类型,java7以 ...
- java中JDBC当中请给出一个DataSource的HelloWorld例子
在前面 的jdbc的Helloworld程序当中,我们用DriverManager来获取数据库连接.事实上通过这种方法获取数据库连接,是比较耗费计算机资 源的.当然了,这也是没有办法的事儿.就像我们买 ...
- Apache nifi 第二篇(小白初试) nifi数据对接流程初次尝试
一.准备工作 1.官网下载nifi 2.上传到linux随便哪里把,因为nifi是用java写的,所以首先要保证你的linux装了jdk 其次保证系统在装了zookeeper,因为nifi是一个分布 ...
- jvm 性能监控与linux常用命令
linux日常的运维 .Java开发 管理监控命令 ,较为浅显,欢迎提意见,我将在后面持续补充.
- UVA - 1615 Highway(高速公路)(贪心+区间选点)
题意:给定平面上n(n<=105)个点和一个值D,要求在x轴上选出尽量少的点,使得对于给定的每个点,都有一个选出的点离它的欧几里德距离不超过D. 分析: 1.根据D可以算出每个点在x轴上的可选区 ...
- POJ 2593&&2479:Max Sequence
Max Sequence Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 16329 Accepted: 6848 Des ...
- PHP实现简单的双色球机选号码
<?php header('Content-Type: text/html; charset=utf-8'); //PHP实现双色球机选号码 $red = range(1, 33);//初次设定 ...
- python基础【2】——python数据类型之字符串
python数据类型-字符串 一. 字符串的表示方法(str) 作用: 记录文本信息 表示方法:' ' 单引号 " "双引号 ''' '''三单引号 ""&qu ...
- Toolbar中系统自带返回键(setDisplayHomeAsUpEnabled)与Toolbar本身的inflateMenu冲突问题
在APP的Toolbar中可以设置inflateMenu来添加右上角菜单栏,但是我又同时想用系统自带的左侧返回键,随之也产生了问题:右上角的inflateMenu会不生效,即不会产生菜单按钮,查阅资料 ...
- Python模块进阶、标准库、扩展库
模块进阶 Python有一套很有用的标准库(standard library).标准库会随着Python解释器,一起安装在你的电脑中的. 它是Python的一个组成部分.这些标准库是Python为你准 ...