欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

互联网软件开发— 实验四 JavaBean 应用(简易购物车)

程序员文章站 2022-03-14 21:23:04
实验名称:实验四 JavaBean 应用一、实验目的:掌握在 JSP 页面中创建和使用 JavaBean 对象;掌握通过 session 共享 JavaBean 对象;掌握将集合类型数据以表格形式显示出来。二、内容和要求:1、实现一个简易文字版的购物车,用户可以购买、移除一件商品,也可以 清空购物车。2、商品列表页面(productInfo.jsp)如图 4-1 所示,显示购物车页面 (showCar.jsp)如图 4-2 所示,doCar.jsp *面,用于处理购买、移除和清空 购物车...

实验名称:实验四 JavaBean 应用

一、实验目的:

  1. 掌握在 JSP 页面中创建和使用 JavaBean 对象;
  2. 掌握通过 session 共享 JavaBean 对象;
  3. 掌握将集合类型数据以表格形式显示出来。

二、内容和要求:

1、实现一个简易文字版的购物车,用户可以购买、移除一件商品,也可以 清空购物车。
2、商品列表页面(productInfo.jsp)如图 4-1 所示,显示购物车页面 (showCar.jsp)如图 4-2 所示,doCar.jsp *面,用于处理购买、移除和清空 购物车的请求。
互联网软件开发— 实验四 JavaBean 应用(简易购物车)
互联网软件开发— 实验四 JavaBean 应用(简易购物车)

3、用户在 productInfo.jsp 页面单击“查看购物车”跳转到 showCar.jsp
页面;在 showCar.jsp 页面单击“继续购物”跳转到 productInfo.jsp 页面。
4、用户在 productInfo.jsp 页面单击“购买”后,保持在原页面不变;在
showCar.jsp 页面分别单击“移除”和“清空购物车”链接,也不跳转,只是更 新购物车信息。
实现要求:
(1) 创建值 JavaBean:商品类 Product.java(如图 4-3),包含商品的属 性:id,name(名称), price(价格), number(数量); 互联网软件开发— 实验四 JavaBean 应用(简易购物车)

(2) 创建工具 JavaBean:购物车类 Car.java(如图 4-4),以实现购买、 移除和清空购物车等功能。
互联网软件开发— 实验四 JavaBean 应用(简易购物车)

(3) 将购物车类 Car 对象保存到 session,目的是productInfo.jsp、
showCar.jsp、doCar.jsp 能共享该对象。
(4) 表格中使用的 CSS 代码及使用方法,如下代码所示:

<style type="text/css"> 
.tb { 
border: 1px solid #0000ff; 
width: 800px; 
margin: 10px auto; 
border-collapse: collapse; /*设置表格的边框合并为一个单一的边框*/ 
} 
.tb th, td { 
border:1px solid #0000ff; 
padding:10px; 
} 
</style> 
<table class="tb"> 
<tr> 
<td>名称</td> 
<td>价格(元/斤)</td> 
<td>购买</td> 
</tr> 
</table> 

三、实验步骤

Product.java

package shop;

public class Product {
	private int id;
	private String name;
	private double price;
	private int number;
	
	
	public Product(int id, String name, double price, int number) {
		this.id = id;
		this.name = name;
		this.price = price;
		this.number=number;
	}
	
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public double getPrice() {
		return price;
	}
	public void setPrice(double price) {
		this.price = price;
	}
	public int getNumber() {
		return number;
	}
	public void setNumber(int number) {
		this.number = number;
	}
	
}

Car.java

package shop;


import java.util.ArrayList;
import java.util.List;

public class Car {
	private List<Product> list = new ArrayList<Product>();//创建Product类型的集合

	public List<Product> getList() {//构造list的get方法,方便car,product界面获取list
		return list;
	}

	public Car() {//Car方法利用for循环,将数组内的值赋给list集合
		int[] ids = { 1, 2, 3, 4 };
		String[] names = { "苹果", "梨子", "橘子", "香蕉" };
		double[] prices = { 4.1, 2.5, 3, 2.8 };
		int[] numbers = { 0, 0, 0, 0 };
		for (int i = 0; i < ids.length; i++) {
			Product p = new Product(ids[i], names[i], prices[i], numbers[i]);
			list.add(p);
		}
	}
	public void add(int id){//添加方法
		for(int i=0;i<list.size();i++){
			Product p=list.get(i);//for循环,将list集合里的Product类型的p一一取出
			if(id==p.getId()){//利用getId方法,将取出的p的id与product传入的id对比
				p.setNumber(p.getNumber()+1);//对比成功,就给p的number属性加1
				break;
			}
		}
	}
	public void remove(int id){//移除方法
		for(int i=0;i<list.size();i++){
			Product p=list.get(i);
			if(id==p.getId()&& p.getNumber()>0){
				p.setNumber(p.getNumber()-1);
				break;
			}
		}		
	}
	public void clear(){//清除方法
		for(int i=0;i<list.size();i++){
			Product p=list.get(i);			
				p.setNumber(0);//for循环,将list集合里的p的number全部置为0
		}		
	}
}


product.jsp

<%@page import="shop.Product"%>
<%@page import="shop.Car" %>
<%@page language="java" import="java.util.*" pageEncoding="utf-8"%>

<html>
<head>
<style>
		table 
		{
    		border-collapse: collapse;
    		width:70%;
		}
		table, td, th
		{
			border:2px solid black;
		}
		th
		{
			background-color:green;
			color:white;
			height:35px;
			
		}
		td{
			text-align:center;
			vertical-align:center;
			height:30px;
			background-color:#C0C0C0;
		}
		</style>
</head>

<body>
<jsp:useBean id="car" class="shop.Car" scope="session"></jsp:useBean>
    <%
    List<Product> list=car.getList();
     %>
<table>
	<tr>
		<th>序号</th>
		<th>名称</th>
		<th>价格(元/斤)</th>
		<th>购买</th>
	</tr>
	<%
	for(int i=0;i<list.size();i++){
	 	Product p = list.get(i);//循环输出list集合里的product对象
	%>
	 <tr>  
	 	<td><%=p.getId()%></td>
	 	<td><%=p.getName()%></td>
	 	<td><%=p.getPrice()%></td>
	 	<td><a href="doCar.jsp?action=buy&id=<%=p.getId()%>">加入购物车</a></td>
	 	<%//<a>超链接,传递action方法,以及操作对象的ID给doCar.jsp %>
	 </tr>
	 <%
	 }
	 %>
	 <tr>
		<td colspan="4"><a href="car.jsp">查看购物车</a>
	</tr>
</table>

</body>

</html>

doCar.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@  page import="shop.Product" %>
<%@  page import="shop.Car" %>
<html>
  <body>
    <jsp:useBean id="car" class="shop.Car" scope="session"></jsp:useBean>
    <%
    String act=request.getParameter("action");
    String id=request.getParameter("id");
    if("buy".equals(act)){
    	car.add(Integer.parseInt(id));
    	//把id转换成整数
    	response.sendRedirect("product.jsp");//重定向到products.jsp界面
    }else if("remove".equals(act)){
    	car.remove(Integer.parseInt(id));
    	response.sendRedirect("car.jsp");
    }else if("clear".equals(act)){
    	car.clear();
    	response.sendRedirect("car.jsp");
    }    
     %>
  </body>
</html>

car.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@  page import="shop.Product" %>
<%@  page import="shop.Car" %>
<html>
  <head>
    <style>
		table 
		{
    		border-collapse: collapse;
    		width:70%;
		}
		table, td, th
		{
			border:2px solid black;
		}
		th
		{
			background-color:green;
			color:white;
			height:35px;
			
		}
		td{
			text-align:center;
			vertical-align:center;
			height:30px;
			background-color:#C0C0C0;
		}
		</style>
  </head>
  
  <body>
  <jsp:useBean id="car" class="shop.Car" scope="session"></jsp:useBean>
    <%
    
    List<Product> list=car.getList();

     %>
 <table>
	<tr>
		<th>序号</th>
		<th>名称</th>
		<th>价格(元/斤)</th>
		<th>数量</th>
		<th>总价(元)</th>
		<th>移除(-1/次)</th>
	</tr>
	<%
	double sum=0;
	for (int i=0;i<list.size();i++){
	 Product p = list.get(i);
	 sum+=p.getPrice()*p.getNumber();
	 if(p.getNumber()!=0){
	 %>
	 <tr>  
	 	<td><%= p.getId()%></td>
	 	<td><%= p.getName()%></td>
	 	<td><%= p.getPrice()%></td>
	 	<td><%= p.getNumber() %></td>
	 	<td><%= p.getPrice()*p.getNumber()%></td>
	 	<td><a href="doCar.jsp?action=remove&id=<%=p.getId()%>">移出购物车</a></td>
	 </tr> 
	 <%
	 } }
	 %>
	 <tr>
	 	<td colspan="6">总价(元):<%=sum %></td>
	 </tr>
	 <tr>
		<td colspan="3"><a href="product.jsp">继续购物</a>
		<td colspan="3"><a href="doCar.jsp?action=clear">清空购物车</a>
	 </tr>
 </table>

  </body>
</html>

运行结果:

添加商品
互联网软件开发— 实验四 JavaBean 应用(简易购物车)

查看购物车
互联网软件开发— 实验四 JavaBean 应用(简易购物车)

移除商品
互联网软件开发— 实验四 JavaBean 应用(简易购物车)

清空购物车
互联网软件开发— 实验四 JavaBean 应用(简易购物车)

PS:由于java精度丢失问题,实战情况下不能用double类型

四、思考题

如何在两个 JSP 页面之间传递中文数据,不出现乱码?
1、保证 编码为utf-8格式或者GBK等统一的编码支持中文的编码格式,此处是utf-8
<%@ page language=“java” contentType=“text/html; charset=UTF-8”
pageEncoding=“UTF-8”%>
2、确保server.xml中的编码为utf-8
3、Stringname=newString(request.getParameter(“name”).getBytes(“iso-8859-1”), “utf-8”);如果超链接带传参数,默认是ISO-8859-1,需要单独针对GET编码如果是通过a标签跳转的,则可以设置a标签的编码方式为charset=utf-8

本文地址:https://blog.csdn.net/qq_45561313/article/details/110250644