在OSI 管理标准中,定义了网络管理的五项功能,即配置管理、性能管理、故障管理、安全管理和计费管理,这五项功能是网络管理的最基本功能。性能分析的结果可能会触发某个诊断测试过程或重新配置网络,以维持网络性能。故障管理是网络管理中最基本的功能,是网络管理体系结构的重要组成部分。设置故障管理的目的是提高网络可用性,降低网络停机次数并迅速修复故障。安全性一直是网络的薄弱环节之一,因此网络安全管理非常重要。......
2023-10-19
完成本任务所用到的主要知识点:
➢ JavaBean 与动作
➢ JSP 内置对象
➢ 会话跟踪技术
随着Internet 的快速发展,网络中出现了很多类似于现实生活购物的网络虚拟商店,人们通过网络销售他们的商品,让我们足不出户就可以购买生活中的一切用品,大大方便了我们的生活。实际的超市中会有真实的购物车帮我们临时保存所要购买的商品,网店中也需要类似的一种能保存在不同页面上挑选的商品的购物车。现请您利用所学的JSP 技术(JavaBean 与动作、会话跟踪技术、JSP 内置对象等),实现一个网络购物车的功能。
(1)如何实现网络购物车的功能。
现实生活中的购物车可以存放多个商品,网络购物车也一样。要存放多个商品,自然而然就想到了数组和集合。但是数组在定义时需要指定长度,事先并不清楚用户要购买多少商品,所以使用数组是不可取的。
可以定义一个Java 类表示购物车,购物车内包含一个用于存放用户挑选的商品信息的集合(容器对象),并提供向容器中添加商品、删除商品和获取容器对象的方法。但是还有这样一种情况:当用户多次向容器中添加同一商品怎么办?若用户挑选了在购物车中已经存在的商品就直接放入容器中的话,这样不仅会增加存储空间的消耗,而且不便于商品的统计和管理。所以,就在表示商品的类中定义一个表示订购数量的变量。若用户挑选了购物车中已存在的商品,那么只需要更改一下该商品的订购数量就可以了。
(2)网络购物车应存放在哪里。
上面分析了商品存放的位置(即购物车中),那购物车又存放在哪儿呢?现实生活中,购物车存放的是各用户挑选的商品(即将购买的商品),且每个用户是相互独立的。网络购物车也是一样的。既然这样,那么可以将购物车存放到session 或者Cookie 中。存入在session 中,是将购物车存放在服务器端,而存放在Cookie 中,是将购物车存放在客户端。但是Cookie 有内容大小限制,而且只能存储字符串数据,又要受限于客户端的情况(比如客户端把Cookie 禁用了),所以,我们将购物车存入session 中。
为了简单实现网络购物车的功能,目前shopDB 中只定义了一张表:GoodsInfo(商品信息表)。商品信息表的字段及其说明见表上机6.1。
表上机6.1 商品信息表(GoodsInfo)
插入的测试数据如图上机6.1 所示。
图上机6.1 商品信息表测试数据
(2)新建Web 项目sj7_1。
(3)根据商品信息表建立JavaBean 类(GoodsInfo.java)。
在Eclipse 中建立JavaBean 时可以使用工具生成getter/setter 方法。编写好字段之后右键单击类中空白处,在弹出的菜单中选择“Source”➔“Generate Getters and Setters…”,如图上机6.2 所示。
图上机6.2 生成getter/setter 方法
然后将弹出如图上机6.3 所示的窗口,单击“Select All”按钮就可以选择所有的字段都生产getter/setter 方法。当然也可以展开左边字段列表树形菜单,勾选想要生成的getter/setter 方法。
图上机6.3 生成getter/setter 方法
GoodsInfo.java 代码如下:
GoodsInfo 类对应GoodsInfo 表,定义了id、name、price、photo、desc 等商品的属性。其中quantity 属性表示购物车中此商品的订购数量,getSum()方法计算当前商品的金额小计。
(4)购物车(Cart.java)。
在网络购物车项目中,Cart 类型的一个对象代表的是一个用户所使用的虚拟的购物车,这个类中定义了能对虚拟购物车进行操作的方法,例如:向购物车中添加商品、从购物车中删除商品、清空购物车、更改购物车中的商品数量和计算所有商品的总价等方法。类中的cart 属性是ArrayList 类型的容器对象,保存了用户所订购的所有商品,也就是保存了许多GoodsInfo 类型的对象。
(5)数据库连接工具类(DBConn.java),代码如下。
数据库连接工具类定义了获取数据库连接和关闭数据库连接的方法。
(6)商品信息的数据访问类GoodsDao.java,代码如下。
商品信息数据访问类定义了两个获取商品数据的方法。getAllGoods()方法用于从数据库中获取所的商品信息,getGoodsInfo()方法根据商品编号获取某个商品的信息。
(7)显示商品的页面showGoods.jsp,代码如下。
showGoods.jsp 调用了GoodsDao 类的getAllGoods()方法查询所有的商品信息,并使用表格显示商品,运行效果如图上机6.4 所示。(www.chuimin.cn)
图上机6.4 显示商品界面
(8)添加商品(addGoods.jsp)。
当用户在浏览商品时单击“购买”链接,就要将用户选择的商品放入购物车,即实现添加商品功能,下面是addGoods.jsp 页面的代码。
在addGoods.jsp 页面,首先获取了参数id(商品的编号),然后根据id 从数据库中获取该商品信息,再调用购物车添加商品的方法,将此商品加入购物车,若成功则转向显示购物车的页面。在添加商品的整个操作过程中,若获取的id 为空(null 或空字符串)或者从数据库中未获取到要添加商品的商品信息,就构造一个ShoppingError 对象,设置它的属性,然后转向error.jsp 页面显示。addGoods.jsp 中涉及的StringUtil 类和ShoppingError 类的代码如下。
StringUtil.java 代码:
ShoppingError.java 代码:
ShoppingError 是为了便于在页面之间传递错误信息而定义的一个表示错误信息的类,它符合JavaBean 规范。在addGoods.jsp 中,先将错误信息封装成一个ShoppingError 对象,并将ShoppingError 对象存入request 中,然后跳转到error.jsp 页面输出ShoppingError 对象中保存的错误信息。这是比较常用的页面之间数据传递的方式。
error.jsp 页面代码如下:
在error.jsp 页面中使用了<jsp:useBean>、<jsp:getProperty>等JSP 标准动作元素来操作JavaBean 对象。例如当访问addGoods.jsp 时,参数id 的值为空的运行效果如图上机6.5 所示,将跳转到error.jsp 页面输出错误信息。
图上机6.5 商品放入购物车失败
(9)显示购物车的页面(showCart.jsp),代码如下。
在showCart.jsp 页面中,使用表格列出了购物车中的所有商品,并提供了删除商品、修改商品数量、清空购物车的功能链接。
当购物车为空时,运行效果如图上机6.6 所示。
图上机6.6 显示购物车页面(购物车为空时)
单击“继续购物”,当选择了多个商品后,购物车页面运行效果如图上机6.7 所示。
图上机6.7 显示购物车页面(有商品时)
(10)删除商品、修改商品数量、清空购物车等功能页面。
删除商品、修改商品数量、清空购物车等功能页面的实现相对简单些,主要就是调用购物车对象中的相关方法。
➢ 删除商品页面
删除商品页面(removeGoods.jsp),代码如下:
例如,在图上机6.7 所示的购物车页面的基础上删除商品“华硕(ASUS)X85E30SE-SL 14.0 英寸笔记本电脑”,删除后的购物车页面效果如图上机6.8 所示。
图上机6.8 删除华硕电脑后的购物车页面
➢ 更改商品数量的页面
更改商品数量的页面(updateGoodsQuantity.jsp),代码如下。
例如,在图上机6.8 所示的购物车页面的基础上更改商品“ThinkPad SL400 2743-NCC 14.1 英寸LED 屏宽屏笔记本电脑”的订购数量为100 台,更改后的购物车页面效果如图上机6.9 所示。
图上机6.9 更改ThinkPad SL400 电脑的数量后的购物车页面
➢ 清空购物车的页面
清空购物车的页面(clearCart.jsp),代码如下。
例如使用了清空的购物车功能后的购物车页面效果如图上机6.10 所示。
图上机6.10 清空购物车后的购物车页面
有关Java Web应用开发的文章
在OSI 管理标准中,定义了网络管理的五项功能,即配置管理、性能管理、故障管理、安全管理和计费管理,这五项功能是网络管理的最基本功能。性能分析的结果可能会触发某个诊断测试过程或重新配置网络,以维持网络性能。故障管理是网络管理中最基本的功能,是网络管理体系结构的重要组成部分。设置故障管理的目的是提高网络可用性,降低网络停机次数并迅速修复故障。安全性一直是网络的薄弱环节之一,因此网络安全管理非常重要。......
2023-10-19
整个系统性能的核心是数据,下面从三个方面进行性能分析。图5主界面 物联网数据集合分析。物联网的数据集合定义包含数据级低等水平融合、特征级中等水平融合、决策级高等水平融合和多级融合[9],智慧校园系统构建一个实时存储、历史保存的物联网数据集合体系。满足物联网数据集合体系要求的多级融合最高标准,实现采集数据的准确性、收集数据的有效性、应用数据的价值性的统一。 中间件层数据实时性分析。......
2023-10-21
脏面中部有形似“H”的3条沟,其中横沟是肝固有动脉、肝门静脉、肝左、右管及神经、淋巴管等出入肝的部位,称肝门;右纵沟的前部为胆囊窝,容纳胆囊,后部有下腔静脉通过;左纵沟的前部有肝圆韧带,后部有静脉韧带。......
2023-11-02
图4-14 SFC21功能示意表4-23 SFC21的输入输出参数如果将一个结构作为输入参数传送,STEP 7总是把一个结构的长度定义为偶数个字节数。否则,CPU在调用SFC 23时将启动OB121。此SFC查询所选数据块的数据字节数并检查其是否为只读数据块。如果相同编号的数据块已存在于工作存储器和/或装载存储器中,或者该数据块为复制得到的,则SFC终止运行,并生成一条故障消息。......
2023-06-18
BACnet网络层协议负责建立和维护路由表,实现在BACnet网络中的路由器自动配置和报文在路由器之间的流动能够顺畅进行。换言之,网络层的功能就是实现连接两个异构的BACnet局域网。一个BACnet设备由一个特定的网络号和一个确切的MAC地址惟一标识。由于BACnet协议规定两个BACnet设备之间只能有一条有效路径,这个限制大幅度降低了网络层的复杂性,简化了路由算法。BACnet设备之间通过网络通信。常见网络包含IP、主从令牌传递网络。......
2023-08-29
考虑到家用无线路由器的价格已经相当低廉,小李决定再购买一个带WDS功能的无线路由器,实现无线拓展。本任务将介绍配置无线路由器的WDS功能,完成无线路由器的无线互连。,形成直线拓扑。图7-25任务小结本任务在主、副无线路由器实现WDS无线桥接,只需要在副无线路由器上开启WDS功能即可,但是为了实现漫游功能,故可将副路由器的无线SSID、密码及信道设置为与主无线路由器完全相同。......
2023-11-21
■任务情景在老师和同学们的努力下学校的网络已经搭建起来了,现在需要连接到Internet,小明决定学习Internet的相关知识完成相关的任务。这个阿帕网就是Internet最早的雏形。NFSnet于1990年6月彻底取代了ARPAnet而成为Internet的主干网。1992年开始,NSF积极推进互联网的商业化进程,世界各国纷纷实现与Internet的连接,使Internet迅速发展成全球性的计算机互联网络。2)ISDNISDN是综合业务数字网的简称,中国电信将其俗称“一线通”。......
2023-11-18
肝的上面隆起贴于膈,又称膈面。这种分叶是根据肝的外形确定的。肝的浆膜移行至膈和邻近器官时,形成许多韧带,这些韧带对肝起固定作用。肝小叶是肝的基本结构和功能单位。门静脉、肝动脉分别带着从消化道吸收来的各种营养物质和含氧动脉血同肝管一起由肝门入肝并分支伴行在肝小叶之间,分别称为小叶间静脉、小叶间动脉、小叶间胆管,它们所在的这个区域称汇管区。肝细胞分泌的胆汁进入胆小管,经各级胆管和肝管流出。......
2023-12-03
相关推荐