【Tomcat】JSP使用Session、Cookie实现购物车
购物界面shop.jsp
初始页面

添加商品后,在session中设置属性,重定向回到shop.jsp,然后根据session的内容显示结果
Cookie设置setMaxAge可以延长session的寿命
清空购物车就是清除session

<%@ page import="javax.jms.Session" %>
<%@ page import="java.util.*" %>
<%@ page import="java.net.URLDecoder" %><%--
Created by IntelliJ IDEA.
User: Administrator
Date: 2019/8/12
Time: 10:37
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>购物</title>
<style>
#big{
margin-left: 200px;
}
.pro img,.pro2 img{
width: 200px;
height: 200px;
display: block;
margin: 20px;
}
a{
border: 2px solid black;
border-radius: 5px;
font-weight: bold;
font-size: 16px;
color: black;
}
a:link{
text-decoration: none;
}
a:visited{
color: black;
}
a:hover{
color: green;
}
a:active{
text-decoration: underline;
}
.pro a{
margin-left: 20px;
background-color: pink;
}
.pro2 a{
margin-right: 20px;
background-color: greenyellow;
}
.pro,.pro2{
float: left;
text-align: center;
}
.rec{
position: relative;
top: 20px;
padding: 20px;
width: 80%;
height: 400px;
border: solid 2px gray;
clear: both;
}
span{
font-family: "Adobe 黑体 Std R";
font-weight: bold;
}
#empty{
background-color: red;
}
</style>
</head>
<body>
<div id="big">
<div class="pro" name="book"><img src="img/book01.jpg">
<span>书</span><a href="addpro?id=1">加入购物车</a></div>
<div class="pro"><img src="img/cloth01.jpg">
<span>衣服</span><a href="addpro?id=2">加入购物车</a></div>
<div class="pro" name="mod"><img src="img/mod01.jpg">
<span>口红</span><a href="addpro?id=3">加入购物车</a></div>
<div class="rec">
<span>我的购物车</span>
<a href="addpro?id=del" id="empty">清空购物车</a><br>
<%
String[] strs={"书","衣服","口红"};
HttpSession session1 = request.getSession();
Enumeration<String> names = session1.getAttributeNames();
while (names.hasMoreElements()){
String n=names.nextElement();
Object attribute = session1.getAttribute(n);
if(n.equals("1")){
%>
<div class="pro2" name="book"><img src="img/book01.jpg">
<a href="addpro?id=1">数量+1</a><span><%=strs[0]+"有"+session1.getAttribute(n)+"件"%></span></div>
<%
}else if(n.equals("2")){
%>
<div class="pro2" name="book"><img src="img/cloth01.jpg">
<a href="addpro?id=2">数量+1</a><span><%=strs[1]+"有"+session1.getAttribute(n)+"件"%></span></div>
<%
}else if(n.equals("3")){
%>
<div class="pro2" name="book"><img src="img/mod01.jpg">
<a href="addpro?id=3">数量+1</a><span><%=strs[2]+"有"+session1.getAttribute(n)+"件"%></span></div>
<%
}
System.out.println(n+"有"+attribute+"件");
}
System.out.println("-----------");
%>
</div>
</div>
</body>
</html>
Servlet
package com.blb.cookie.shop;
import jdk.nashorn.internal.ir.CallNode;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
import java.io.IOException;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.util.Enumeration;
@WebServlet("/addpro")
public class AddProServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request,response);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String proid = request.getParameter("id");
//获取session
HttpSession session = request.getSession();
if ("del".equals(proid)) {
session.invalidate();
} else {
String sid = session.getId();
Cookie cookie1 = new Cookie("JSESSIONID", sid);
cookie1.setMaxAge(60 * 60);
response.addCookie(cookie1);
Enumeration<String> names = session.getAttributeNames();
Boolean hava = false;
if (!names.hasMoreElements()) {
session.setAttribute(proid, 1);
}
while (names.hasMoreElements()) {
String n = names.nextElement();
// System.out.println("name:" + n);
if (n.equals(proid)) {
hava = true;
Object attribute = session.getAttribute(n);
// System.out.println("atrr:" + attribute);
int a = (Integer) attribute;
int b = a + 1;
// System.out.println("attr++:" + b);
session.removeAttribute(n);
session.setAttribute(n, b);
}
}
if (!hava) {
session.setAttribute(proid, 1);
}
/* System.out.println(proid);
System.out.println(session);
System.out.println("addpro*******");*/
}
response.sendRedirect("shop.jsp");
}
}
【Tomcat】JSP使用Session、Cookie实现购物车的更多相关文章
- 超全面的JavaWeb笔记day11<JSP&Session&Cookie&HttpSession>
1.JSP 2.回话跟踪技术 3.Cookie 4.HttpSession JSP入门 1 JSP概述 1.1 什么是JSP JSP(Java Server Pages)是JavaWeb服务器端的动态 ...
- JSP + Session Cookie详解
篇幅较大,对JSP进行了非常详细的讲解,并解释了Session和Cookie的实现原理 ,预计看完需要20分钟左右,慢慢享受吧 JSP概述 掌握了servlet后,就可以利用servlet来开发动态页 ...
- 【JSP】Cookie的使用及保存中文,并用Cookie实现购物车功能
Cookie是服务器存放在客户端的一些数据,比如密码,以及你曾经访问过的一些数据. 设置Cookie //设置cookie Cookie cookie = new Cookie("TOM&q ...
- Tomcat 中的 Session 和 Cookie
HTTP 是一种无状态通信协议,每个请求之间相互独立,服务器不能识别曾经来过的请求.而对于 Web 应用,它的活动都是依赖某个状态的,比如用户登录,此时使用 HTTP 就需要它在一次登录请求后,有为后 ...
- javaweb学习——session和Cookie实现购物车功能
1.创建Book类,实现对图书信息的封装. package cn.it.sessionDemo.example1; import java.io.Serializable; /** * 该类实现对图书 ...
- session cookie原理及应用
一.术语session在我的经验里,session这个词被滥用的程度大概仅次于transaction,更加有趣的是transaction与session在某些语境下的含义是相同的. session,中 ...
- 会话跟踪session cookie
会话跟踪 会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话.常用的会话跟踪技术Cookie与Session.Cookie通过在客户端记录信息确定用户身份,Session通过在 ...
- Session&Cookie 简介及使用
Cookie cookie 是存储于访问者的计算机中的变量.每当同一台计算机通过浏览器请求某个页面时,就会发送这个 cookie.你可以使用 JavaScript 或其它语言来创建和取回 cookie ...
- java:Session(概述,三层架构实例(实现接口封装JDBC),Session实现简单购物车实例)
1.Session概述: Session:在计算机中,尤其是在网络应用中,称为“会话控制”.Session 对象存储特定用户会话所需的属性及配置信息.这样,当用户在应用程序的 Web 页之间跳转时,存 ...
- session & cookie(li)
Session & Cookie 一.定义 Session,用户在浏览某个网站时,从进入网站到浏览器关闭所经过的这段时间,也就是用户浏览这个网站所花费的时间.Cookie,由服务器端生成,发送 ...
随机推荐
- jvm入门及理解(五)——运行时数据区(虚拟机栈)和本地方法接口
一.虚拟机栈背景 由于跨平台性的设计,java的指令都是根据栈来设计的.不同平台CPU架构不同,所以不能设计为基于寄存器的. 优点是跨平台,指令集小,编译器容易实现,缺点是性能下降,实现同样的功能需要 ...
- aui移动端UI库
aui 简介 aui 是一套基于原生javascript开发的移动端UI库,包含常用js方法.字符校验.dialog提示弹窗.侧滑菜单.时间选择器.多级联动.聊天UI.项目常用模板...... 特点 ...
- python100例 11-20
011 兔子问题 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? f1=1 f2=1 for i ...
- Mockito不能mock final类的解决办法
Mockito是很常用的测试工具,使用过程中可能会遇到下面的问题: Mockito cannot mock/spy because : - final class 问题重现: 引入该依赖到项目的mav ...
- [Abp vNext 入坑分享] - 7.Automapper与validation的使用
简要说明 [项目源码] [章节目录] 本文主要介绍Automapper与Validation的使用方法.首先使用Automapper的目的是引入组件完成entity与dto之间的转换以达到简化代码的目 ...
- django 两种创建模型实例的方法
1. 添加一个classmethod from django.db import models class Book(models.Model): title = models.CharField(m ...
- 手把手教你用Python网络爬虫获取网易云音乐歌曲
前天给大家分享了用Python网络爬虫爬取了网易云歌词,在文尾说要爬取网易云歌曲,今天小编带大家一起来利用Python爬取网易云音乐,分分钟将网站上的音乐down到本地. 跟着小编运行过代码的筒子们将 ...
- scrapy五大核心组件
scrapy五大核心组件 引擎(Scrapy)用来处理整个系统的数据流处理, 触发事务(框架核心) 调度器(Scheduler)用来接受引擎发过来的请求, 压入队列中, 并在引擎再次请求的时候返回. ...
- Django之urls.py路由配置(URLConf)
urls.py路由配置(URLConf) URL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL与要为该URL调用的视图函数之间的映射表. 基本格式: Django1.x版本 ...
- matlab第六章数据分析与多项式计算
MATLAB练习 第六章数据分析与多项式计算 1.max和min 1.分别求矩阵A中各列和各行元素中的最大值.max和min的用法一样 % [例6.1]分别求矩阵中各列和各行元素中的最大值. A=[5 ...