jsp implementation of shopping program
Author:Eve Cole
Update Time:2009-07-02 17:12:58
The following is the source program of the shopping cart I made using JSP and database:
Notice:
1. The re-billing part has not been completed yet, please do it yourself!
2. The next version will be done using session.
//shop_cart.jsp
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page session="true" %>
<%@ page language="java" import="java.sql.*" %>
<jsp:useBean id="bka" scope="page" class="shop.bka" />
<%
String product_type;
String action;
int product_id;
int curpage;
//Product type
if (request.getParameter("product_type")==null){
product_type="all";
}else{
product_type=request.getParameter("product_type");
}
//Page number and product type parameters, you can return to the last shopping page when "continue shopping"
if (request.getParameter("curpage")==null){
curpage=1;
}else{
curpage=java.lang.Integer.parseInt(request.getParameter("curpage"));
}
//action
if (request.getParameter("action")==null){
action="view";
}else{
action=request.getParameter("action");
}
//Item number
if (request.getParameter("product_id")==null){
product_id=0;
}else{
product_id=java.lang.Integer.parseInt(request.getParameter("product_id"));
}
int bbb;
bbb=1;
Integer num = new Integer(bbb);
//store number
session.putValue("shop_id",num);
//Customer username
session.putValue("guest_name","asp2001");
String guest_name=(String)session.getValue("guest_name");
Integer shop_id=(Integer)session.getValue("shop_id");
java.lang.String sql;
java.sql.ResultSetrs;
if (action.compareTo("add")==0) {
sql="select cart_quantity from shop_cart where cart_shop_id=" + shop_id
+ " and cart_guest_id='" + guest_name + "' and cart_product_id=" + product_id ;
rs = bka.executeQuery(sql);
if (rs.next()){
int cart_quantity;
cart_quantity=java.lang.Integer.parseInt(rs.getString("cart_quantity"))+1;
sql="update shop_cart set cart_quantity=" + cart_quantity + " where cart_shop_id="
+ shop_id + " and cart_guest_id='" + guest_name + "' and cart_product_id=" + product_id ;
rs = bka.executeQuery(sql);}
else
{
sql="insert into shop_cart (cart_shop_id,cart_guest_id,cart_product_id,cart_quantity) values ('" + shop_id + "','"
+ guest_name + "','" + product_id + "',1)";
rs = bka.executeQuery(sql);
}
}
if (action.compareTo("clear")==0) {
sql="delete from shop_cart where cart_shop_id=" + shop_id + " and cart_guest_id='" + guest_name + "'";
rs = bka.executeQuery(sql);
}
if (action.compareTo("delete")==0) {
sql="delete from shop_cart where cart_shop_id=" + shop_id + " and cart_guest_id='"
+ guest_name + "' and cart_product_id=" + product_id ;
rs = bka.executeQuery(sql);
}
%>
<div align="center"><center>
<table border="0" cellpadding="0" cellspacing="0" width="610"
height="2">
<tr>
<td><form method="POST"
action="shop_cart.jsp?action=update&product_type=<%=product_type%>&curp
age=<%=curpage%>">
<table border="0" cellpadding="0" cellspacing="0" width="610"
height="2">
<tr>
<td width="122" height="7"><div align="center"><center><table
border="1" cellpadding="2" cellspacing="0" width="100%" bordercolorlight="#FFB468"
bordercolordark="#FFFFFF" bgcolor="#FFB468">
<tr>
<td width="100%"><div
align="center"><center><p>Shopping Cart</td>
</tr>
</table>
</center></div></td>
<td width="122" height="7" style="border: medium"
align="center"><div align="center"><center><table
border="1" cellpadding="2" cellspacing="0" width="100%"
bordercolorlight="#FFB468"
bordercolordark="#FFFFFF" bgcolor="#FFB468">
<tr>
<td width="100%"><div align="center"><center><p><a
href="shop_list.jsp?shop_id=<%=shop_id%>&product_type=<%=product_type%>
&curpage=<%=curpage%>">Continue shopping</a></td>
</tr>
</table>
</center></div></td>
<td width="122" height="7" style="border: medium"
align="center"><div align="center"><center><table
border="1" cellpadding="2" cellspacing="0" width="100%"
bordercolorlight="#FFB468"
bordercolordark="#FFFFFF" bgcolor="#FFB468">
<tr>
<td width="100%"><div align="center"><center><p><a
href="javascript: document.forms[0].submit()">Rebilling</a></td>
</tr>
</table>
</center></div></td>
<td width="122" height="7" style="border: medium"
align="center"><div align="center"><center><table
border="1" cellpadding="2" cellspacing="0" width="100%"
bordercolorlight="#FFB468"
bordercolordark="#FFFFFF" bgcolor="#FFB468">
<tr>
<td width="100%"><div align="center"><center><p>
<a href="shop_cart.jsp?action=clear&product_type=<%=product_type%>&curpage=<%=curpage%>">Clear shopping cart</a></td>
</tr>
</table>
</center></div></td>
<td width="122" height="7" style="border: medium" align="center"><div align="center"><center><table
border="1" cellpadding="2" cellspacing="0" width="100%" bordercolorlight="#FFB468"
bordercolordark="#FFFFFF" bgcolor="#FFB468">
<tr>
<td width="100%"><div align="center"><center><p><a href="shop_order.asp">Confirm purchase</a></td>
</tr>
</table>
</center></div></td>
</tr>
<tr align="center">
<td width="610" height="1" colspan="5"><div align="center"><center>
<table border="1" cellpadding="2" cellspacing="0" width="100%" bgcolor="#FDFEE2"
bordercolorlight="#FFB468" bordercolordark="#FFFFFF" height="40">
<tr>
<td width="20%" height="8" align="left">Product name</td>
<td width="10%" height="8" align="left">Market price</td>
<td width="10%" height="8" align="left">Special price</td>
<td width="10%" height="8" align="left">Quantity</td>
<td width="14%" height="8" align="left">Subtotal</td>
<td width="12%" height="8" align="left">Deposit ratio</td>
<td width="17%" height="8" align="left">Deposit subtotal</td>
<td width="17%" height="8" align="left">Delete</td>
</tr>
<%
sql="select shop_product.product_id,shop_product.product_name,shop_product.product_price,
shop_product.product_discount,shop_cart.cart_quantity,shop_product.product_first from shop_cart,shop_product where shop_cart.cart_shop_id=" + shop_id + " and shop_cart.cart_guest_id='" + guest_name + "' and shop_cart.cart_product_id=shop_product.product_id";
rs = bka.executeQuery(sql);
int total;
int total_first;
total=0;
total_first=0;
String product_name;
int product_price;
int product_discount;
int product_first;
int cart_quantity;
if (rs.next()){
while (rs.next()) {
product_id=java.lang.Integer.parseInt(rs.getString(1));
product_name=rs.getString(2);
product_price=java.lang.Integer.parseInt(rs.getString(3));
product_discount=java.lang.Integer.parseInt(rs.getString(4));
cart_quantity=java.lang.Integer.parseInt(rs.getString(5));
product_first=java.lang.Integer.parseInt(rs.getString(6));
%>
<tr>
<td width="10%" height="1" align="left"><%=product_name%></td>
<td width="10%" height="1" align="left"><%=product_price%></td>
<td width="10%" height="1" align="left"><%=product_discount%></td>
<td width="10%" height="1" align="left"><input type="text" name="<%= "t" + product_id %>" size="3" value="<% =cart_quantity%>"></td>
<td width="14%" height="1" align="left"><%=product_discount*cart_quantity%></td>
<td width="12%" height="1" align="left"><%=product_first + "%"%></td>
<td width="17%" height="1" align="left"><%=product_first*product_discount*cart_quantity/100.0%></td>
<td width="17%" height="1"><div align="center"><center><p><a href="shop_cart.jsp?action=delete&product_id=<%=product_id%>">delete </a></td>
</tr>
<%
total=total+product_discount*cart_quantity;
total_first=total_first+product_discount*cart_quantity*product_first/100;
}
%>
<tr align="center">
<td width="72%" colspan="6" height="16"><div align="right"><p>Total</td>
<td width="36%" colspan="2" height="16"><div align="left"><%=total%></td>
</tr>
<tr align="center">
<td width="72%" colspan="6" height="16"><div align="right"><p>Total deposit</td>
<td width="36%" colspan="2" height="16"><div align="left"><%=total_first%></td>
</tr>
<tr align="center">
<td width="72%" colspan="6" height="16"><div align="right"><p>Balance</td>
<td width="36%" colspan="2" height="16"><div align="left"><%=total-total_first%></td>
</tr>
</table>
</center></div>
<%
}else{
%>
<p align="center">Shopping cart is empty!</p>
<%
}
%>
Database operation part
The program uses two tables:
1 shop_cart table
cart_id int Shopping cart number automatic numbering
cart_shop_id nvarchar store number
cart_product_id nvarchar product number
cart_quantity int Product quantity temporarily stores shopping cart data
2 shop_product table
product_id int product number automatic numbering
shop_id nvarchar store number
product_name nvarchar product name
product_bb nvarchar product introduction
product_price int market price
product_discount int discount price
product_img img image
product_status nvarchar status
product_first int deposit ratio
product_type nvanchar product type stores product data
Javabeans made using bka.java: bka.class can provide operations on the database.
In addition, bka.dsn needs to be registered in the system DSN of the control panel.
This enables JSP to call the sql database through JDBC-ODBC.
To call javabean in the page, you can basically use the following method:
<%@ page language="java" import="java.sql.*" %>
<jsp:useBean id="RegisterBean" scope="page" class="shop.bka" />
<%
String sql="select * from xxx";
ResultSet rs = RegisterBean.executeQuery(sql);
if(rs.next()) {
rs.close();
RegisterBean.closeStmt();
session.putValue("register_message","duplicate name found!");
}
%>
Note that rs should be closed after use.
The following is the source program of bka.java. Note that you need to use javac to compile it into a class file or javabean before use.
--shop/bka.java--
package shop;
import java.sql.*;
public class bka {
String sDBDriver = "sun.jdbc.odbc.JdbcOdbcDriver";
String sConnStr = "jdbc:odbc:bka";
Connection conn = null;
ResultSet rs = null;
public bka() {
try {
Class.forName(sDBDriver);
}
catch(java.lang.ClassNotFoundException e) {
System.err.println("bka(): " + e.getMessage());
}
}
public ResultSet executeQuery(String sql) {
rs = null;
try {
conn = DriverManager.getConnection(sConnStr,"xxx","yyy");
Statement stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
}
catch(SQLException ex) {
System.err.println("aq.executeQuery: " + ex.getMessage());
}
return rs;
}
}