jsp 쇼핑 프로그램 구현
저자:Eve Cole
업데이트 시간:2009-07-02 17:12:58
다음은 JSP와 데이터베이스를 사용하여 만든 장바구니의 소스 프로그램입니다.
알아채다:
1. 재결제 부분은 아직 완료되지 않았으니 직접 해주세요!
2. 다음 버전은 세션을 이용하여 진행됩니다.
//shop_cart.jsp
<%@ 페이지 contentType="text/html;charset=gb2312"%>
<%@ 페이지 세션="true" %>
<%@ 페이지 언어="java" import="java.sql.*" %>
<jsp:useBean id="bka" 범위="페이지" 클래스="shop.bka" />
<%
문자열 제품_유형;
스트링액션;
int product_id;
int curpage;
//제품 유형
if (request.getParameter("product_type")==null){
product_type="모두";
}또 다른{
product_type=request.getParameter("제품_유형");
}
//페이지 번호 및 상품 유형 매개변수, "쇼핑 계속" 시 마지막 쇼핑 페이지로 돌아갈 수 있습니다.
if (request.getParameter("curpage")==null){
커피지=1;
}또 다른{
curpage=java.lang.Integer.parseInt(request.getParameter("curpage"));
}
//행동
if (request.getParameter("action")==null){
액션="보기";
}또 다른{
action=request.getParameter("action");
}
//항목 번호
if (request.getParameter("product_id")==null){
제품_ID=0;
}또 다른{
product_id=java.lang.Integer.parseInt(request.getParameter("product_id"));
}
int bbb;
bbb=1;
정수 num = new Integer(bbb);
//가게번호
session.putValue("shop_id",num);
//고객 사용자 이름
session.putValue("guest_name","asp2001");
String guest_name=(String)session.getValue("guest_name");
정수 shop_id=(Integer)session.getValue("shop_id");
java.lang.String SQL;
java.sql.ResultSetrs;
if (action.compareTo("add")==0) {
sql="shop_cart에서 cart_Quantity를 선택하세요. 여기서 cart_shop_id=" + shop_id
+ " 및 cart_guest_id='" + guest_name + "' 및 cart_product_id=" + product_id ;
rs = bka.executeQuery(sql);
if (rs.next()){
int 장바구니_수량;
cart_Quantity=java.lang.Integer.parseInt(rs.getString("cart_Quantity"))+1;
sql="update shop_cart set cart_Quantity=" + cart_Quantity + " 여기서 cart_shop_id="
+ shop_id + " 및 cart_guest_id='" + guest_name + "' 및 cart_product_id=" + product_id ;
rs = bka.executeQuery(sql);}
또 다른
{
sql="shop_cart(cart_shop_id,cart_guest_id,cart_product_id,cart_quantity) 값에 삽입 ('" + shop_id + "','"
+ 손님_이름 + "','" + 제품_ID + "',1)";
rs = bka.executeQuery(sql);
}
}
if (action.compareTo("clear")==0) {
sql="cart_shop_id=" + shop_id + " 및 cart_guest_id='" + guest_name + "'"인 shop_cart에서 삭제;
rs = bka.executeQuery(sql);
}
if (action.compareTo("delete")==0) {
sql="cart_shop_id=" + shop_id + " 및 cart_guest_id='"인 shop_cart에서 삭제
+ guest_name + "' 및 cart_product_id=" + product_id ;
rs = bka.executeQuery(sql);
}
%>
<div align="center"><center>
<table border="0" cellpadding="0" cellpacing="0" width="610"
높이="2">
<tr>
<td><양식 방법="POST"
action="shop_cart.jsp?action=update&product_type=<%=product_type%>&curp
나이=<%=curpage%>">
<table border="0" cellpadding="0" cellpacing="0" width="610"
높이="2">
<tr>
<td width="122" height="7"><div align="center"><center><테이블
border="1" cellpadding="2" cellpacing="0" width="100%" bordercolorlight="#FFB468"
bordercolordark="#FFFFFF" bgcolor="#FFB468">
<tr>
<td 너비="100%"><div
align="center"><center><p>장바구니</td>
</tr>
</table>
</center></div></td>
<td width="122" height="7" style="테두리: 중간"
align="center"><div align="center"><center><테이블
border="1" cellpadding="2" 세포 간격="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%>">쇼핑 계속하기</a></td>
</tr>
</table>
</center></div></td>
<td width="122" height="7" style="테두리: 중간"
align="center"><div align="center"><center><테이블
border="1" cellpadding="2" 세포 간격="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()">재청구</a></td>
</tr>
</table>
</center></div></td>
<td width="122" height="7" style="테두리: 중간"
align="center"><div align="center"><center><테이블
border="1" cellpadding="2" 세포 간격="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%>">장바구니 지우기</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" cellpacing="0" width="100%" bordercolorlight="#FFB468"
bordercolordark="#FFFFFF" bgcolor="#FFB468">
<tr>
<td width="100%"><div align="center"><center><p><a href="shop_order.asp">구매 확인</a></td>
</tr>
</table>
</center></div></td>
</tr>
<tr 정렬="가운데">
<td width="610" height="1" colspan="5"><div align="center"><center>
<table border="1" cellpadding="2" cellpacing="0" width="100%" bgcolor="#FDFEE2"
bordercolorlight="#FFB468" bordercolordark="#FFFFFF" 높이="40">
<tr>
<td width="20%" height="8" align="left">제품명</td>
<td width="10%" height="8" align="left">시장 가격</td>
<td width="10%" height="8" align="left">특별 가격</td>
<td width="10%" height="8" align="left">수량</td>
<td width="14%" height="8" align="left">소계</td>
<td width="12%" height="8" align="left">입금액</td>
<td width="17%" height="8" align="left">입금액 소계</td>
<td width="17%" height="8" align="left">삭제</td>
</tr>
<%
sql="shop_product.product_id,shop_product.product_name,shop_product.product_price 선택,
shop_product_discount,shop_cart.cart_Quantity,shop_product.product_first from shop_cart,shop_product 여기서 shop_cart.cart_shop_id=" + shop_id + " 및 shop_cart.cart_guest_id='" + guest_name + "' 및 shop_cart.cart_product_id=shop_product.product_id";
rs = bka.executeQuery(sql);
총합;
int total_first;
총계=0;
총_첫번째=0;
문자열 제품_이름;
int product_price;
int product_discount;
int product_first;
int 장바구니_수량;
if (rs.next()){
동안(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_수량%>"></td>
<td width="14%" height="1" align="left"><%=product_discount*cart_yangity%></td>
<td width="12%" height="1" align="left"><%=product_first + "%"%></td>
<td width="17%" height="1" align="left"><%=product_first*product_discount*cart_yangity/100.0%></td>
<td width="17%" height="1"><div align="center"><center><p><a href="shop_cart.jsp?action=delete&product_id=<%=product_id%>">삭제 </a></td>
</tr>
<%
총계=총계+제품_할인*카트_수량;
total_first=total_first+제품_할인*카트_수량*제품_첫번째/100;
}
%>
<tr 정렬="가운데">
<td width="72%" colspan="6" height="16"><div align="right"><p>합계</td>
<td width="36%" colspan="2" height="16"><div align="left"><%=total%></td>
</tr>
<tr 정렬="가운데">
<td width="72%" colspan="6" height="16"><div align="right"><p>총 입금액</td>
<td width="36%" colspan="2" height="16"><div align="left"><%=total_first%></td>
</tr>
<tr 정렬="가운데">
<td width="72%" colspan="6" height="16"><div align="right"><p>균형</td>
<td width="36%" colspan="2" height="16"><div align="left"><%=total-total_first%></td>
</tr>
</table>
</center></div>
<%
}또 다른{
%>
<p align="center">장바구니가 비어 있습니다!</p>
<%
}
%>
데이터베이스 운영 부분
이 프로그램은 두 개의 테이블을 사용합니다.
shop_cart 테이블 1개
cart_id int 장바구니 번호 자동 번호 매기기
cart_shop_id nvarchar 매장 번호
cart_product_id nvarchar 제품 번호
cart_Quantity int 제품 수량은 장바구니 데이터를 일시적으로 저장합니다.
2 shop_product 테이블
product_id int 제품 번호 자동 번호 매기기
shop_id nvarchar 매장 번호
product_name nvarchar 제품 이름
product_bb nvarchar 제품 소개
product_price int 시장 가격
product_discount int 할인 가격
product_img img 이미지
product_status nvarchar 상태
product_first int 예금 비율
product_type nvanchar 제품 유형은 제품 데이터를 저장합니다.
bka.java를 사용하여 만든 Javabean: bka.class는 데이터베이스에 대한 작업을 제공할 수 있습니다.
또한 제어판의 시스템 DSN에 bka.dsn을 등록해야 합니다.
이를 통해 JSP는 JDBC-ODBC를 통해 SQL 데이터베이스를 호출할 수 있습니다.
페이지에서 javabean을 호출하려면 기본적으로 다음 방법을 사용할 수 있습니다.
<%@ 페이지 언어="java" import="java.sql.*" %>
<jsp:useBean id="RegisterBean" 범위="페이지" 클래스="shop.bka" />
<%
문자열 sql="xxx에서 * 선택";
ResultSet rs = RegisterBean.executeQuery(sql);
if(rs.next()) {
rs.close();
RegisterBean.closeStmt();
session.putValue("register_message","중복된 이름이 발견되었습니다!");
}
%>
사용 후에는 rs를 닫아야 합니다.
다음은 bka.java의 소스 프로그램이다. 사용하기 전에 javac를 사용하여 클래스 파일이나 javabean으로 컴파일해야 합니다.
--상점/bka.java--
패키지샵;
import java.sql.*;
공개 클래스 bka {
문자열 sDBDriver = "sun.jdbc.odbc.JdbcOdbcDriver";
문자열 sConnStr = "jdbc:odbc:bka";
연결 연결 = null;
결과 집합 rs = null;
공개 bka() {
노력하다 {
Class.forName(sDBDriver);
}
catch(java.lang.ClassNotFoundException e) {
System.err.println("bka(): " + e.getMessage());
}
}
공개 ResultSet 실행 쿼리(문자열 SQL) {
RS = 널;
노력하다 {
conn = DriverManager.getConnection(sConnStr,"xxx","yyy");
명령문 stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
}
catch(SQLException ex) {
System.err.println("aq.executeQuery: " + ex.getMessage());
}
RS를 반환;
}
}