您好,欢迎来到99网。
搜索
您的当前位置:首页jsp实验-应用Servlet实现购物车讲解

jsp实验-应用Servlet实现购物车讲解

来源:99网


应用Servlet实现购物车

具体实现过程

1、 创建封装商品信息的值JavaBean---------GoodsSingle

package com.yxq.valuebean;

public class GoodsSingle {

private String name; //保存商品名称

private float price; //保存商品价格

private int num; //保存商品购买数量

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getNum() {

return num;

}

public void setNum(int num) {

this.num = num;

}

public float getPrice() {

return price;

}

public void setPrice(float price) {

this.price = price;

}

}

2、 创建工具JavaBean-------- MyTools 实现字符型数据转换为整型及乱码处理

package com.yxq.toolbean;

import java.io.UnsupportedEncodingException;

public class MyTools {

public static int strToint(String str){ 的方法

//将String型数据转换为int型数据

if(str==null||str.equals(\"\"))

str=\"0\";

int i=0;

try{

i=Integer.parseInt(str); //把str 转换成 int 类型的变量

}catch(NumberFormatException e){ // try-catch就是监视try中的语句,如果抛出catch中声明的异常类型

i=0;

e.printStackTrace(); //把Exception的详细信息打印出来

}

return i;

}

public static String toChinese(String str){ //进行转码操作的方法

if(str==null)

str=\"\";

try {

str=new String(str.getBytes(\"ISO-8859-1\"),\"gb2312\");

} catch (UnsupportedEncodingException e) {

str=\"\";

e.printStackTrace();

}

return str;

}

}

3、 创建购物车JavaBean------ ShopCar实现添加、删除,购物车制作

package com.yxq.toolbean;

package com.yxq.toolbean;

import java.util.ArrayList;

import com.yxq.valuebean.GoodsSingle;

public class ShopCar {

private ArrayList buylist=new ArrayList(); 存储购买的商品

//用来

public void setBuylist(ArrayList buylist) {

this.buylist = buylist;

}

/**

* @功能 向购物车中添加商品

* @参数 single为GoodsSingle类对象,封装了要添加的商品信息

*/

public void addItem(GoodsSingle single){

if(single!=null){

if(buylist.size()==0){ 在任何商品

//如果buylist中不存

GoodsSingle temp=new GoodsSingle();

temp.setName(single.getName());

temp.setPrice(single.getPrice());

temp.setNum(single.getNum());

buylist.add(temp); //存储商品

}

else{ 品

//如果buylist中存在商

int i=0;

for(;i//遍历buylist集合对

象,判断该集合中是否已经存在当前要添加的商品

GoodsSingle temp=(GoodsSingle)buylist.get(i); 合中当前元素

//获取buylist集

if(temp.getName().equals(single.getName())){ 集合中获取的当前商品的名称是否与要添加的商品的名称相同

//判断从buylist

//如果相同,说明已经购买了该商品,只需要将商品的购买数量加1

temp.setNum(temp.getNum()+1); 1

//将商品购买数量加

break; //结束for循环

}

}

if(i>=buylist.size()){ 要添加的商品

GoodsSingle temp=new GoodsSingle();

temp.setName(single.getName());

temp.setPrice(single.getPrice());

temp.setNum(single.getNum());

buylist.add(temp); }

}

}

}

/**

* @功能 从购物车中移除指定名称的商品

* @参数 name表示商品名称

//说明buylist中不存在

//存储商品

*/

public void removeItem(String name){

for(int i=0;i//遍历buylist集合,查找指定名称的商

GoodsSingle temp=(GoodsSingle)buylist.get(i); 置的商品

//获取集合中当前位

if(temp.getName().equals(name)){ name参数指定的名称

//如果商品的名称为

if(temp.getNum()>1){ //如果商品的购买数量大于1

temp.setNum(temp.getNum()-1); //则将购买数量减1

break; //结束for循环

}

else if(temp.getNum()==1){ //如果商品的购买数量为1

buylist.remove(i); //从buylist集合对象中移除该商品

}

}

}

}

}

4、 创建实例首页面index.jsp,初始化商品信息

<%@ page contentType=\"text/html;charset=gb2312\"%>

5、 创建处理用户访问首页面请求的Servlet--- IndexServlet

package com.yxq.servlet;

import java.io.IOException;

import java.util.ArrayList;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.servlet.http.HttpSession;

import com.yxq.valuebean.GoodsSingle;

public class IndexServlet extends HttpServlet {

}

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

HttpSession session=request.getSession();

session.setAttribute(\"goodslist\

response.sendRedirect(\"show.jsp\");

}

static{ //静态代码块

String[] names={\"苹果\香蕉\梨\橘子\

float[] prices={2.8f,3.1f,2.5f,2.3f};

for(int i=0;i<4;i++){

GoodsSingle single=new GoodsSingle();

single.setName(names[i]);

single.setPrice(prices[i]);

single.setNum(1);

goodslist.add(single);

}

}

}

6、 show.jsp显示商品信息

<%@ page contentType=\"text/html;charset=gb2312\"%>

<%@ page import=\"java.util.ArrayList\" %>

<%@ page import=\"com.yxq.valuebean.GoodsSingle\" %>

<% ArrayList goodslist=(ArrayList)session.getAttribute(\"goodslist\"); %>

cellpadding=\"0\">

<% if(goodslist==null||goodslist.size()==0){ %>

<%

}

else{

for(int i=0;iGoodsSingle single=(GoodsSingle)goodslist.get(i);

%>

<%

}

}

%>

提供商品如下
名称价格(元/斤)购买
没有商品可显示!
<%=single.getName()%><%=single.getPrice()%>\">购买
查看购物车

7、 创建处理用户购买、移除、清空购物车请求的Servlet Servlet----- BuyServlet

package com.yxq.servlet;

import java.io.IOException;

import java.util.ArrayList;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.servlet.http.HttpSession;

import com.yxq.toolbean.MyTools;

import com.yxq.toolbean.ShopCar;

import com.yxq.valuebean.GoodsSingle;

public class BuyServlet extends HttpServlet {

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

doPost(request,response);

}

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

String action=request.getParameter(\"action\"); //获取action参数值

if(action==null)

action=\"\";

if(action.equals(\"buy\")) //触发了“购买”请求

buy(request,response); //调用buy()方法实现商品的购买

if(action.equals(\"remove\")) //触发了“移除”请求

remove(request,response); //调用remove()方法实现商品的移除

if(action.equals(\"clear\")) //触发了“清空购物车”请求

clear(request,response); //调用clear()方法实现购物车的清空

}

//实现购买商品的方法

protected void buy(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

HttpSession session=request.getSession();

String strId=request.getParameter(\"id\"); //获取触发“购买”请求时传递

的id参数,该参数存储的是商品在goodslist对象中存储的位置

int id=MyTools.strToint(strId);

ArrayList goodslist=(ArrayList)session.getAttribute(\"goodslist\");

GoodsSingle single=(GoodsSingle)goodslist.get(id);

ArrayList buylist=(ArrayList)session.getAttribute(\"buylist\"); session范围内获取存储了用户已购买商品的集合对象

//从

if(buylist==null)

buylist=new ArrayList();

ShopCar myCar=new ShopCar();

myCar.setBuylist(buylist); 类实例中的属性

//将buylist对象赋值给ShopCar

myCar.addItem(single); 法实现商品添加操作

//调用ShopCar类中addItem()方

session.setAttribute(\"buylist\

response.sendRedirect(\"show.jsp\"); 面

//将请求重定向到show.jsp页

}

8、 在web.xml文件中配置Servlet

indexServlet

com.yxq.servlet.IndexServlet

indexServlet

/index

buyServlet

com.yxq.servlet.BuyServlet

buyServlet

/doCar

9、 创建页面shopcar.jsp购物车

<%@ page contentType=\"text/html;charset=gb2312\"%>

<%@ page import=\"java.util.ArrayList\" %>

<%@ page import=\"com.yxq.valuebean.GoodsSingle\" %>

<%

//获取存储在session中用来存储用户已购买商品的buylist集合对象

ArrayList buylist=(ArrayList)session.getAttribute(\"buylist\");

float total=0; //用来存储应付金额

%>

cellpadding=\"0\">

<% if(buylist==null||buylist.size()==0){ %>

<%

}

else{

for(int i=0;iGoodsSingle single=(GoodsSingle)buylist.get(i);

String name=single.getName(); //获取商品名称

float price=single.getPrice(); //获取商品价格

int num=single.getNum(); //获取购买数量

//计算当前商品总价,并进行四舍五入

float money=((int)((price*num+0.05f)*10))/10f;

total+=money; //计算应付金额

%>

<%

%>\">

}

}

%>

购买的商品如下
名称价格(元/斤)数量总价(元)移除(-1/次)
您的购物车为空!
<%=name%><%=price%><%=num%><%=money%>href=\"doCar?action=remove&name=<%=single.getName()
应付金额
继续购物清空购物车

:<%=total%>

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 99spj.com 版权所有 湘ICP备2022005869号-5

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务