当前位置: 首页 > news >正文

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是什么&#xff1f;2、使用VueX统一管理状态的好处3、什么样的数据适合存储到Vuex中&#xff1f;1、VueX是什么&#xff1f; VueX是实现组件全局状态&#xff08;数据&#xff09;管理的一种机制&#xff0c;可以方便的实现组件之间数据的共享。 如果没有VueX…...

第2章 封装组件初级篇(上)

1.环境搭建&#xff0c;在 vite 脚手架基础上集成 typescript 和 element-plus https://cn.vitejs.dev/guide/ 以下是开发过程中过使用到的包和版本号&#xff1a;package.json {"name": "m-components","version": "0.0.0","…...

uniapp image标签图片跑偏终极解决办法

目录uniapp image 的mode常用属性aspectFit 缩放显示图片全部aspectFill 缩放填满容器&#xff0c;但是图片可能显示不全widthFix 以宽度为基准&#xff0c;等比缩放长heightFix 以高度为基准&#xff0c;等比缩放宽uniapp image 的mode常用属性 uniapp当中&#xff0c;在imag…...

SpringMVC的响应处理

文章目录一、传统同步业务数据响应1. 请求资源转发2. 请求资源重定向3. 响应模型数据4. 直接回写数据二、前后端分离异步业务数据响应一、传统同步业务数据响应 Spring响应数据给客户端&#xff0c;主要分为两大部分&#xff1a; ⚫ 传统同步方式&#xff1a;准备好模型数据&am…...

静态词向量预训练模型

1、神经网络语言模型从语言模型的角度来看&#xff0c;N 元语言模型存在明显的缺点。首先&#xff0c;模型容易受到数据稀疏的影响&#xff0c;一般需要对模型进行平滑处理&#xff1b;其次&#xff0c;无法对长度超过 N 的上下文依赖关系进行建模。神经网络语言模型 (Neural N…...

永久免费CRM怎么选?有什么好用的功能?

在当今商业环境下&#xff0c;企业经营者们都希望能够找到一种方法来提高自己的生产力和盈利能力。一种非常有效的方法就是实现客户关系管理&#xff08;CRM&#xff09;。然而&#xff0c;由于很多传统的CRM解决方案价格昂贵&#xff0c;小企业和创业公司很难承担。那么&#…...

leetcode重点题目分类别记录(二)基本算法:二分,位图,回溯,动态规划,图论基础,拓扑排序

layout: post title: leetcode重点题目分类别记录&#xff08;二&#xff09;基本算法&#xff1a;二分&#xff0c;位图&#xff0c;回溯&#xff0c;动态规划&#xff0c;拓扑排序 description: leetcode重点题目分类别记录&#xff08;二&#xff09;基本算法&#xff1a;二…...

【JaveEE】多线程之定时器(Timer)

目录 1.定时器的定义 2.标准库中的定时器 2.1构造方法 2.2成员方法 3.模拟实现一个定时器 schedule()方法 构造方法 4.MyTimer完整代码 1.定时器的定义 定时器也是软件开发中的一个重要组件. 类似于一个 "闹钟". 达到一个设定的时间之后, 就执行某个指…...

【理论推导】变分自动编码器 Variational AutoEncoder(VAE)

变分推断 (Variational Inference) 变分推断属于对隐变量模型 (Latent Variable Model) 处理的一种技巧&#xff0c;其概率图如下所示 我们将 X{x1,...xN}X\{ x_1,...x_N \}X{x1​,...xN​} 看作是每个样本可观测的一组数据&#xff0c;而将对应的 Z{z1,...,zN}Z\{z_1,...,z_N…...

【哈希表:哈希函数构造方法、哈希冲突的处理】

预测未来的最好方法就是创造它&#x1f4a6; 目录 一、什么是Hash表 二、Hash冲突 三、Hash函数的构造方法 1. 直接定址法   2. 除余法   3. 基数转换法   4. 平方取中法   5. 折叠法   6. 移位法   7. 随机数法 四、处理冲突方法 1. 开放地址法    • 线性探测法 …...

HTML5 应用程序缓存

HTML5 应用程序缓存 使用 HTML5&#xff0c;通过创建 cache manifest 文件&#xff0c;可以轻松地创建 web 应用的离线版本。这意味着&#xff0c;你可以在没有网络连接的情况下进行访问。 什么是应用程序缓存&#xff08;Application Cache&#xff09;&#xff1f; HTML5 引…...

全国计算机等级考试三级网络技术选择题考点

目录 第一章 网络系统结构与设计的基本原则 第二章 中小型网络系统总体规划与设计方法 第三章 IP地址规划技术 第四章 路由设计基础 第五章 局域网技术基础应用 第六/七章 交换机/路由器及其配置 第八章 无线局域网技术 第九章 计算机网络信息服务系统的安装与…...

Python和VC代码实现希尔伯特变换(Hilbert transform)

文章目录前言一、希尔伯特变换是什么&#xff1f;二、VC中的实现原理及代码示例三、用Python代码实现总结前言 在数学和信号处理中&#xff0c;**希尔伯特变换&#xff08;Hilbert transform&#xff09;**是一个对函数产生定义域相同的函数的线性算子。 希尔伯特变换在信号处…...

嵌入式C语言语法概述

1.gcc概述 GCC全称是GUN C Compiler 随着时代的发展GCC支持的语言越来越多&#xff0c;它的名称变成了GNU Compiler Collection gcc的作用相当于翻译官&#xff0c;把程序设计语言翻译成计算机能理解的机器语言。 &#xff08;1&#xff09;gcc -o gcc -o &#xff08;其…...

蓝桥杯第19天(Python)(疯狂刷题第3天)

题型&#xff1a; 1.思维题/杂题&#xff1a;数学公式&#xff0c;分析题意&#xff0c;找规律 2.BFS/DFS&#xff1a;广搜&#xff08;递归实现&#xff09;&#xff0c;深搜&#xff08;deque实现&#xff09; 3.简单数论&#xff1a;模&#xff0c;素数&#xff08;只需要…...

【数据库连接,线程,ThreadLocal三者之间的关系】

一、数据库连接与线程的关系 在实际项目中&#xff0c;数据库连接是很宝贵的资源&#xff0c;以MySQL为例&#xff0c;一台MySQL服务器最大连接数默认是100, 最大可以达到16384。但现实中最多是到200&#xff0c;再多MySQL服务器就承受不住了。因为mysql连接用的是tcp协议&…...

java 虚拟股票交易系统Myeclipse开发mysql数据库web结构jsp编程计算机网页项目

一、源码特点 JSP 虚拟股票交易系统是一套完善的java web信息管理系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统采用serlvetdaobean&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用 B/S模式开发。 java 虚拟股票交易系统Myeclips…...

spring如何开启允许循环依赖

如何解决spring循环依赖 在Spring框架中&#xff0c;allowCircularReferences属性是用于控制Bean之间的循环依赖的。循环依赖是指两个或多个Bean之间相互依赖的情况&#xff0c;其中一个Bean依赖于另一个Bean&#xff0c;同时另一个Bean又依赖于第一个Bean。 allowCircularRe…...

jenkins+sonarqube+自动部署服务

一、jenkins 配置Pipeline 二、新建共享库执行脚本 共享库可以是一个普通的gitlab项目&#xff0c;目录结构如下 三、添加到共享库 Jenkins Dashboard–>系统管理–>系统配置–>Global Pipeline Libraries Name: 共享库名称&#xff0c;自定义即可&#xff1b; Defa…...

Prompt Tuning、P-Tuning、Prefix Tuning的区别

一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...

Java 语言特性(面试系列1)

一、面向对象编程 1. 封装&#xff08;Encapsulation&#xff09; 定义&#xff1a;将数据&#xff08;属性&#xff09;和操作数据的方法绑定在一起&#xff0c;通过访问控制符&#xff08;private、protected、public&#xff09;隐藏内部实现细节。示例&#xff1a; public …...

8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂

蛋白质结合剂&#xff08;如抗体、抑制肽&#xff09;在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上&#xff0c;高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术&#xff0c;但这类方法普遍面临资源消耗巨大、研发周期冗长…...

如何在看板中有效管理突发紧急任务

在看板中有效管理突发紧急任务需要&#xff1a;设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP&#xff08;Work-in-Progress&#xff09;弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中&#xff0c;设立专门的紧急任务通道尤为重要&#xff0c;这能…...

生成 Git SSH 证书

&#x1f511; 1. ​​生成 SSH 密钥对​​ 在终端&#xff08;Windows 使用 Git Bash&#xff0c;Mac/Linux 使用 Terminal&#xff09;执行命令&#xff1a; ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" ​​参数说明​​&#xff1a; -t rsa&#x…...

TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案

一、TRS收益互换的本质与业务逻辑 &#xff08;一&#xff09;概念解析 TRS&#xff08;Total Return Swap&#xff09;收益互换是一种金融衍生工具&#xff0c;指交易双方约定在未来一定期限内&#xff0c;基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...

(转)什么是DockerCompose?它有什么作用?

一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用&#xff0c;而无需手动一个个创建和运行容器。 Compose文件是一个文本文件&#xff0c;通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...

JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案

JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停​​ 1. ​​安全点(Safepoint)阻塞​​ ​​现象​​:JVM暂停但无GC日志,日志显示No GCs detected。​​原因​​:JVM等待所有线程进入安全点(如…...

dify打造数据可视化图表

一、概述 在日常工作和学习中&#xff0c;我们经常需要和数据打交道。无论是分析报告、项目展示&#xff0c;还是简单的数据洞察&#xff0c;一个清晰直观的图表&#xff0c;往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server&#xff0c;由蚂蚁集团 AntV 团队…...

Springboot社区养老保险系统小程序

一、前言 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;社区养老保险系统小程序被用户普遍使用&#xff0c;为方…...