jsp设计简单的购物车应用案例
代码解释
<%request.setCharacterEncoding("UTF-8");if (request.getParameter("c1")!=null)session.setAttribute("s1",request.getParameter("c1"));if (request.getParameter("c2")!=null)session.setAttribute("s2",request.getParameter("c2"));if (request.getParameter("c3")!=null)session.setAttribute("s3",request.getParameter("c3"));
%>
这段代码应该是一个 JSP 页面中的后端代码,主要用于在用户提交表单时,将表单中选中的值保存到会话(Session)中。在这个代码中,首先使用 `request.setCharacterEncoding()` 方法设置请求的字符编码为 UTF-8。接着,通过 `request.getParameter()` 方法获取表单中名为 `c1`、`c2` 和 `c3` 的参数的值,并将它们保存到会话对象中,分别使用 `session.setAttribute()` 方法将这些值存储到会话中的 `s1`、`s2` 和 `s3` 属性中。
需要注意的是,这段代码中使用了 JSP 的脚本语法 `<% %>` 包裹代码块。在代码执行时,这部分代码将被服务器端解析并执行,所以它们不会在最终的 HTML 页面中呈现出来。
此外,这段代码中使用了会话(Session)对象来存储用户提交的数据。会话是一种在客户端和服务器端之间保持状态的机制,它允许在多个请求之间共享数据,并且可以在用户关闭浏览器之后仍然保持数据的有效性。在这个例子中,如果用户在同一会话中提交了多个表单,那么之前选择的选项也会存储在会话中,而不会被覆盖掉。
session.setAttribute()方法的作用是在服务器端设置一个属性值,该属性值可以在整个会话期间内被访问和修改。`session.setAttribute()` 是 Java 中 `HttpSession` 对象的一个方法,
用于向会话中存储数据。它的作用是将一个键值对参数加入到会话对象的属性集合中,
以使得在同一会话中的不同请求(或同一个请求的多个处理阶段)之间共享数据。具体而言,`session.setAttribute(String name, Object value)` 方法接受两个参数:- `name`:表示属性的名称,必须是字符串类型;
- `value`:表示属性的值,可以是任意 Java 对象,包括基本类型和自定义类型。通过调用 `session.setAttribute()` 方法,我们可以将一个名为 `name`,
值为 `value` 的属性添加到当前用户的会话中。例如,可以使用以下代码将一个名为 `username`,
值为 `binjie09` 的属性添加到当前会话中:```java
HttpSession session = request.getSession(); // 获取当前用户的会话
session.setAttribute("username", "binjie09"); // 在会话中添加一个键值对
```在会话中添加属性后,我们就可以在同一个会话中的其他请求中使用 `session.getAttribute()` 方法
来获取该属性的值了。例如,可以使用以下代码从当前会话中获取名为 `username` 的属性:```java
String username = (String)session.getAttribute("username");
```需要注意的是,在使用 `session.setAttribute()` 方法添加属性时,属性的值必须是可序列化的。
这意味着,如果我们要存储的是一个自定义对象,那么该对象必须实现 `java.io.Serializable` 接口,
以便该对象的状态可以被序列化和反序列化。此外,我们还需要注意会话中属性的数量和大小,
以避免浪费服务器资源或导致系统崩溃等问题。
<%request.setCharacterEncoding("UTF-8");String str="";if (session.getAttribute("s1")!=null){str=(String) session.getAttribute("s1");out.print(str+"<br>");}
%>
这段代码应该是一个 JSP 页面的后端代码,主要功能是从会话中获取名为 `s1` 的属性的值,并将其输出到页面上。
首先,使用 `request.setCharacterEncoding("UTF-8")` 方法设置请求的字符编码为 UTF-8。接着定义了一个字符串变量 `str`,并初始化为空字符串。
然后,通过 `session.getAttribute("s1")` 方法从会话中获取名为 `s1` 的属性的值。如果该属性不为空,则将其强制转换成字符串类型,并将结果赋值给 `str` 变量。接着,使用 `out.print()` 方法将 `str` 变量的值输出到页面上,并在输出的字符串末尾添加一个 `<br>` 标签,以使得输出的内容能够在页面上换行显示。
需要注意的是,这段代码使用了 JSP 的脚本语法 `<% %>` 包裹了代码块。在代码执行时,这部分代码将被服务器端解析并执行,所以它们不会在最终的 HTML 页面中呈现出来。
此外,这段代码中使用了 `out.print()` 方法输出字符串。`out` 对象是一个 `PrintWriter` 类型的对象,用于向客户端输出数据。在这个例子中,通过调用 `out.print()` 方法,我们实现了将一个字符串输出到页面上的操作。
代码:
<%--Created by IntelliJ IDEA.User: CaptainDongDate: 2023/4/1Time: 11:40To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>购物肉类商品页面</title>
</head>
<body>
<h2>肉类大甩卖咯,一律十块钱一斤!</h2><br>
<%request.setCharacterEncoding("UTF-8");
%>
<form action="ch03_17_buy1.jsp" method="post"><table><tr><td><input type="checkbox" name="c1" value="猪肉">猪肉</td><td><input type="checkbox" name="c2" value="牛肉">牛肉</td><td><input type="checkbox" name="c3" value="羊肉">羊肉</td></tr><tr><td><input type="submit" value="提交" name="B1"></td><td><a href="ch03_17_buy2.jsp">买点别的</a></td><td><a href="ch03_17_display.jsp">查看购物车</a></td></tr></table>
</form>
<%request.setCharacterEncoding("UTF-8");if (request.getParameter("c1")!=null)session.setAttribute("s1",request.getParameter("c1"));if (request.getParameter("c2")!=null)session.setAttribute("s2",request.getParameter("c2"));if (request.getParameter("c3")!=null)session.setAttribute("s3",request.getParameter("c3"));
%>
</body>
</html>
<%--Created by IntelliJ IDEA.User: CaptainDongDate: 2023/4/1Time: 11:43To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>购买球类页面</title>
</head>
<body>
<h2>球类大甩卖咯,一律八块钱一个!</h2><br>
<%request.setCharacterEncoding("UTF-8");
%>
<form action="ch03_17_buy2.jsp" method="post"><table><tr><td><input type="checkbox" name="b1" value="篮球">篮球</td><td><input type="checkbox" name="b2" value="足球">足球</td><td><input type="checkbox" name="b3" value="排球">排球</td></tr><tr><td><input type="submit" value="提交" name="x1"></td><td><a href="ch03_17_buy1.jsp">买点别的</a></td><td><a href="ch03_17_display.jsp">查看购物车</a></td></tr></table>
</form>
<%request.setCharacterEncoding("UTF-8");if (request.getParameter("b1")!=null)session.setAttribute("s4",request.getParameter("b1"));if (request.getParameter("b2")!=null)session.setAttribute("s5",request.getParameter("b2"));if (request.getParameter("b3")!=null)session.setAttribute("s6",request.getParameter("b3"));
%>
</body>
</html>
<%--Created by IntelliJ IDEA.User: CaptainDongDate: 2023/4/1Time: 11:44To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>显示购物车购物信息</title>
</head>
<body>
<div><h2>你的选择是:</h2>
</div>
<%request.setCharacterEncoding("UTF-8");String str="";if (session.getAttribute("s1")!=null){str=(String) session.getAttribute("s1");out.print(str+"<br>");}if (session.getAttribute("s2")!=null){str=(String) session.getAttribute("s2");out.print(str+"<br>");}if (session.getAttribute("s3")!=null){str=(String) session.getAttribute("s3");out.print(str+"<br>");}if (session.getAttribute("s4")!=null){str=(String) session.getAttribute("s4");out.print(str+"<br>");}if (session.getAttribute("s5")!=null){str=(String) session.getAttribute("s5");out.print(str+"<br>");}if (session.getAttribute("s6")!=null){str=(String) session.getAttribute("s6");out.print(str+"<br>");}
%>
</body>
</html>
界面图:



相关文章:
jsp设计简单的购物车应用案例
代码解释 <%request.setCharacterEncoding("UTF-8");if (request.getParameter("c1")!null)session.setAttribute("s1",request.getParameter("c1"));if (request.getParameter("c2")!null)session.setAttribute("…...
VueX是什么?好处?何时使用?
VueX相关1、VueX是什么?2、使用VueX统一管理状态的好处3、什么样的数据适合存储到Vuex中?1、VueX是什么? VueX是实现组件全局状态(数据)管理的一种机制,可以方便的实现组件之间数据的共享。 如果没有VueX…...
第2章 封装组件初级篇(上)
1.环境搭建,在 vite 脚手架基础上集成 typescript 和 element-plus https://cn.vitejs.dev/guide/ 以下是开发过程中过使用到的包和版本号:package.json {"name": "m-components","version": "0.0.0","…...
uniapp image标签图片跑偏终极解决办法
目录uniapp image 的mode常用属性aspectFit 缩放显示图片全部aspectFill 缩放填满容器,但是图片可能显示不全widthFix 以宽度为基准,等比缩放长heightFix 以高度为基准,等比缩放宽uniapp image 的mode常用属性 uniapp当中,在imag…...
SpringMVC的响应处理
文章目录一、传统同步业务数据响应1. 请求资源转发2. 请求资源重定向3. 响应模型数据4. 直接回写数据二、前后端分离异步业务数据响应一、传统同步业务数据响应 Spring响应数据给客户端,主要分为两大部分: ⚫ 传统同步方式:准备好模型数据&am…...
静态词向量预训练模型
1、神经网络语言模型从语言模型的角度来看,N 元语言模型存在明显的缺点。首先,模型容易受到数据稀疏的影响,一般需要对模型进行平滑处理;其次,无法对长度超过 N 的上下文依赖关系进行建模。神经网络语言模型 (Neural N…...
永久免费CRM怎么选?有什么好用的功能?
在当今商业环境下,企业经营者们都希望能够找到一种方法来提高自己的生产力和盈利能力。一种非常有效的方法就是实现客户关系管理(CRM)。然而,由于很多传统的CRM解决方案价格昂贵,小企业和创业公司很难承担。那么&#…...
leetcode重点题目分类别记录(二)基本算法:二分,位图,回溯,动态规划,图论基础,拓扑排序
layout: post title: leetcode重点题目分类别记录(二)基本算法:二分,位图,回溯,动态规划,拓扑排序 description: leetcode重点题目分类别记录(二)基本算法:二…...
【JaveEE】多线程之定时器(Timer)
目录 1.定时器的定义 2.标准库中的定时器 2.1构造方法 2.2成员方法 3.模拟实现一个定时器 schedule()方法 构造方法 4.MyTimer完整代码 1.定时器的定义 定时器也是软件开发中的一个重要组件. 类似于一个 "闹钟". 达到一个设定的时间之后, 就执行某个指…...
【理论推导】变分自动编码器 Variational AutoEncoder(VAE)
变分推断 (Variational Inference) 变分推断属于对隐变量模型 (Latent Variable Model) 处理的一种技巧,其概率图如下所示 我们将 X{x1,...xN}X\{ x_1,...x_N \}X{x1,...xN} 看作是每个样本可观测的一组数据,而将对应的 Z{z1,...,zN}Z\{z_1,...,z_N…...
【哈希表:哈希函数构造方法、哈希冲突的处理】
预测未来的最好方法就是创造它💦 目录 一、什么是Hash表 二、Hash冲突 三、Hash函数的构造方法 1. 直接定址法 2. 除余法 3. 基数转换法 4. 平方取中法 5. 折叠法 6. 移位法 7. 随机数法 四、处理冲突方法 1. 开放地址法 • 线性探测法 …...
HTML5 应用程序缓存
HTML5 应用程序缓存 使用 HTML5,通过创建 cache manifest 文件,可以轻松地创建 web 应用的离线版本。这意味着,你可以在没有网络连接的情况下进行访问。 什么是应用程序缓存(Application Cache)? HTML5 引…...
全国计算机等级考试三级网络技术选择题考点
目录 第一章 网络系统结构与设计的基本原则 第二章 中小型网络系统总体规划与设计方法 第三章 IP地址规划技术 第四章 路由设计基础 第五章 局域网技术基础应用 第六/七章 交换机/路由器及其配置 第八章 无线局域网技术 第九章 计算机网络信息服务系统的安装与…...
Python和VC代码实现希尔伯特变换(Hilbert transform)
文章目录前言一、希尔伯特变换是什么?二、VC中的实现原理及代码示例三、用Python代码实现总结前言 在数学和信号处理中,**希尔伯特变换(Hilbert transform)**是一个对函数产生定义域相同的函数的线性算子。 希尔伯特变换在信号处…...
嵌入式C语言语法概述
1.gcc概述 GCC全称是GUN C Compiler 随着时代的发展GCC支持的语言越来越多,它的名称变成了GNU Compiler Collection gcc的作用相当于翻译官,把程序设计语言翻译成计算机能理解的机器语言。 (1)gcc -o gcc -o (其…...
蓝桥杯第19天(Python)(疯狂刷题第3天)
题型: 1.思维题/杂题:数学公式,分析题意,找规律 2.BFS/DFS:广搜(递归实现),深搜(deque实现) 3.简单数论:模,素数(只需要…...
【数据库连接,线程,ThreadLocal三者之间的关系】
一、数据库连接与线程的关系 在实际项目中,数据库连接是很宝贵的资源,以MySQL为例,一台MySQL服务器最大连接数默认是100, 最大可以达到16384。但现实中最多是到200,再多MySQL服务器就承受不住了。因为mysql连接用的是tcp协议&…...
java 虚拟股票交易系统Myeclipse开发mysql数据库web结构jsp编程计算机网页项目
一、源码特点 JSP 虚拟股票交易系统是一套完善的java web信息管理系统,对理解JSP java编程开发语言有帮助,系统采用serlvetdaobean,系统具有完整的源代码和数据库,系统主要采用 B/S模式开发。 java 虚拟股票交易系统Myeclips…...
spring如何开启允许循环依赖
如何解决spring循环依赖 在Spring框架中,allowCircularReferences属性是用于控制Bean之间的循环依赖的。循环依赖是指两个或多个Bean之间相互依赖的情况,其中一个Bean依赖于另一个Bean,同时另一个Bean又依赖于第一个Bean。 allowCircularRe…...
jenkins+sonarqube+自动部署服务
一、jenkins 配置Pipeline 二、新建共享库执行脚本 共享库可以是一个普通的gitlab项目,目录结构如下 三、添加到共享库 Jenkins Dashboard–>系统管理–>系统配置–>Global Pipeline Libraries Name: 共享库名称,自定义即可; Defa…...
FastAPI 2.0 + LLM流式输出全栈方案,含OpenAI兼容层、前端SSE重连策略、服务端背压控制(仅限内部技术白皮书级实录)
第一章:FastAPI 2.0 异步 AI 流式响应教程概览FastAPI 2.0 原生强化了对异步流式响应(StreamingResponse)的支持,为构建低延迟、高吞吐的 AI 接口(如大语言模型推理、语音合成、实时图像生成)提供了坚实基础…...
SEO_本地中小企业快速见效的SEO操作指南(345 )
SEO:本地中小企业快速见效的SEO操作指南 在当今数字化时代,本地中小企业如何在竞争激烈的市场中脱颖而出,是每一个企业主都需要面对的问题。本文将从多个角度为你详细解析如何通过SEO(搜索引擎优化)让本地中小企业迅速见效。 问…...
德意志飞机通过全球协作升级支线航空驾驶舱人机工学
2026年1月15日 —— 作为总部位于德国舍瑙的MAFELEC集团旗下成员,COMTRONIC GmbH近五十年来一直是航空航天领域人机界面(HMI)解决方案领域值得信赖的供应商。凭借在照明面板、定制键盘及先进光学技术方面的深厚积淀,COMTRONIC长期…...
设备管理系统是什么?如何建立设备管理体系?
在现代企业的运转中,生产设备无疑是核心资产。无论是制造业的数控机床,还是建筑工地的重型机械,甚至是医疗机构的精密仪器,设备的稳定运行直接决定了企业的生产效率、产品质量和成本控制。然而,许多企业在设备管理上仍…...
为什么你的Polars 2.0清洗脚本在1TB数据下突然卡死?——Lazy Execution陷阱、Chunking边界与并发泄漏三重真相
第一章:为什么你的Polars 2.0清洗脚本在1TB数据下突然卡死?——Lazy Execution陷阱、Chunking边界与并发泄漏三重真相Lazy Execution的隐式延迟引爆内存雪崩 Polars 2.0 默认启用 LazyFrame 模式,所有操作仅构建执行计划,直到调用…...
从apt-get到yum:Ubuntu20.04下跨平台包管理工具安装指南
从apt-get到yum:Ubuntu 20.04下跨平台包管理工具实战指南 在Linux生态中,不同发行版采用不同的包管理系统——Debian系的apt与RedHat系的yum就是典型代表。当开发者需要在Ubuntu环境下运行原本为CentOS设计的软件时,掌握yum的安装与配置技巧能…...
YOLOv5+Swin-Tiny实战:在自定义数据集上提升小目标检测精度的完整流程
YOLOv5与Swin-Tiny融合实战:工业级小目标检测优化指南 在无人机巡检、遥感监测和工业质检等场景中,小目标检测一直是计算机视觉领域的棘手挑战。传统卷积神经网络(CNN)在处理这类任务时,往往难以兼顾感受野与计算效率的平衡。本文将带您探索如…...
手把手教你用ZEMAX复现Thorlabs锥透镜生成贝塞尔光束(附Edmund透镜库文件)
手把手教你用ZEMAX复现Thorlabs锥透镜生成贝塞尔光束(附Edmund透镜库文件) 在光学工程领域,贝塞尔光束因其无衍射特性和自修复能力,在激光加工、光学捕获和生物成像等应用中展现出独特优势。本文将带您从零开始,在ZEM…...
终极指南:PrivateGPT增量文档处理策略与动态更新解决方案
终极指南:PrivateGPT增量文档处理策略与动态更新解决方案 【免费下载链接】privateGPT 利用GPT的强大功能与你的文档进行互动,确保100%的隐私保护,无数据泄露风险 项目地址: https://gitcode.com/GitHub_Trending/pr/privateGPT Priva…...
国密双证书体系深度解读:为什么你的GMTLS客户端需要两个证书?从ECC到ECDHE模式全解析
国密双证书体系深度解析:从设计哲学到工程实践 当开发者第一次接触国密GMTLS协议时,最令人困惑的莫过于那个看似"多余"的第二个证书。为什么在标准TLS中运行良好的单证书体系,到了国密环境中就需要拆分成加密证书和签名证书&#x…...
