-
210528_1(쇼핑몰)HTML_JS(Sol)/JSP(sol) 2021. 5. 28. 17:16
개념
앞에 공부하였던 내용이 모두 들어가 있다.
여러개 테이블을 사용함
세션 (장바구니) + 자료실 업로드컴포넌트 (상품이미지)
----------------------------------------------관리자
------------------------상품
1. 제품등록
2. 제품목록보기
3. 제품정보 보기
4. 제품정보 수정하기
5. 제품정보 삭제하기
------------------------구매
1. 판매 목록
2. 진행 상황(구매-결제(pg회사대행)-배송(배송회사)-배송중-배송완료)
-----------------------------------------------고객
1. 제품목록 보기
2. 제품상세 보기
3. 장바구니에 넣기 - 입력 / 수정 / 삭제 <--- 중요
4. 구매하기 -- 구매 --- 결제(pg회사대행) :PG -payment gateway : 결제대행회사
5. 구매정보 보기 (배송(배송회사)-배송중-배송완료)
준비
프로젝트생성 shopmall
드라이버 : mysql-version.jar
업로드 컴포넌트 : cos.jar
이미지 위치 : C:\Java_bigdata\mywork_jsp\shopmall\WebContent\images
공통 UI 만들기
index.jsp : 초기 페이지 -- 요청 파일명이 없는경우 기본으로 응답하는 페이지
Top.jsp --------템플릿 문서
Bottom.jsp ----템플릿 문서 ------->디자인프레임워크도 존재, 요즘은 디자이 구성용 태그 새로나옴
-----------------관리자용 문서들 /admin/xxx.jsp
-------컨트롤러 ProductMgr.jsp
요청을 받아서 - 요청분석 - 처리한 후 - 해당 결과 페이지로 이동
-----------제품등록하기 ProductInsert.jsp
클래스 객체명
HttpServeletRequest requetst
제품사진 :
이미지 준비중 : ready.jpg <==미리 입력하고
상품 이미지 : 몇장 준비 , 크기가 비슷한 걸로
이미지 경로
uploadDir \\images\\
#테이블 생성 #-------------상품테이블 create table shop_product ( no int(5) not null auto_increment, #상품번호 name varchar(20) null, #상품이름 price varchar(10) null, #상품가격 detail text null, #상품상세정보 date datetime null, #상품등록날짜 stock varchar(10) null, #상품 재고 image varchar(20) null, #상품이미지이름 PRIMARY KEY (no) )engine=innodb default charset=euckr; #---------------주문테이블 create table shop_order( no int(5) not null auto_increment, #주문번호 product_no varchar(5) not null, #상품 번호 quantity varchar(10) null, #주문수량 date datetime null, #주문일자 state varchar(10) null, #주문상태 id varchar(10) null, #회원아이디 PRIMARY KEY (no) )engine=innodb default charset=euckr; #----------------관리자 테이블 create table admin( admin_id varchar(20) not null, #관리자 아이디 admin_passwd varchar(20) null, #관리자 비밀번호 PRIMARY KEY (admin_id) ); select * from shop_product; select * from shop_order; select * from admin; show tables; desc shop_product; #제품등록확인 desc shop_order; alter table shop_order engine=innodb default charset=euckr; drop table shop_product;
Top.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%> <% String mem_id =(String) session.getAttribute("idkey"); String log=""; if(mem_id == null) log="<a href=Login.jsp>로그인</a>"; else log ="<a href=Logout.jsp>로그아웃</a>"; String mem=""; if(mem_id ==null) mem="<a href=Register.jsp>회원가입</a>"; else mem ="<a href=MemberUpdate.jsp>회원수정</a>"; %> <table width="75%" align="center" bgcolor="#C1FF6B"> <tr bgcolor="#80E12A"> <td align="center"><b><%=log%></b></td> <td align="center"><b><%=mem%></b></td> <td align="center"><b><a href="ProductList.jsp">상품목록</a></b></td> <td align="center"><b><a href="CartList.jsp">상품목록</a></b></td> <td align="center"><b><a href="OrderList.jsp">상품목록</a></b></td> </tr> </table>
script.js
// 나중에 회원 가입 관련 함수들과 합칠것 function productDetail(no){ document.detail.no.value=no; document.detail.submit(); } function cartUpdate(form){ form.flag.value="update"; form.submit(); } function cartDelete(form){ form.flag.value="del"; form.submit(); } function test(){ alert("success") }
index.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%> <!DOCTYPE html> <html> <head> <meta charset="EUC-KR"> <title>Simple Shopping Mall</title> <link href="style.css" rel="stylesheet" type="text/css"> <script type="text/javascript" src="script.js"></script> </head> <body bgcolor="#FFFFFF" topmargin="100"> <%@ include file="Top.jsp" %> <table width="75%" align="center" bgcolor="#65FFBA" height="100%"> <% if(mem_id != null){ %> <tr> <Td align="center"><%=mem_id%>님 방문해 주셔서 감사합니다.</Td> </tr> <%}else{ %> <tr> <Td align="center">로그인 하신 후 이용해 주세요</Td> </tr> <%} %> </table> <%@ include file="Bottom.jsp" %> </body> </html>
상품등록 폼
ProductInsert.jsp
**유효성검사만들어보기**
<%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%> <!DOCTYPE html> <html> <head> <meta charset="EUC-KR"> <title>Simple Shopping Mall Admin</title> <script type="text/javascript" src="../js/script.js"></script> </head> <body bgcolor=""#996600" topmargin="100"> <%@include file="../Top.jsp" %> <table width="75%" align="center" bgcolor="FFFF99"> <tr> <td align="center" bgcolor="#FFFFCC"> <form method="post" action="ProductProc.jsp?flag=insert" enctype="multipart/form-data"> <tr bgcolor="#996600"> <td colspan="2" align="center"><font color="#FFFFFF">상품 등록</font></td> </tr> <tr> <td align="center">상품 이름</td> <td align="left"><input type="text" name="name" size="20"></td> </tr> <tr> <td align="center">상품 가격</td> <td align="left"><input type="text" name="price" size="20">원</td> </tr> <tr> <td align="center">상품 설명</td> <td align="left"><textarea rows="10" cols="45" name="detail"></textarea></td> </tr> <tr> <td align="center">상품 수량</td> <td align="left"><input type="text" name="stock" size="10">개</td> </tr> <tr> <td align="center">상품이미지</td> <td><input type="file" name="image"></td> </tr> <tr> <td colspan="2" align="center"> <input type="submit" value="상품등록"> <input type="reset" value="다시쓰기"> </td> </tr> </form> </table> <%@include file="../Bottom.jsp" %> </body> </html>
RegisterBean.java 데이터빈
package ch14; public class RegisterBean { private String mem_id; private String mem_passwd; private String mem_name; private String mem_num1; private String mem_num2; private String mem_email; private String mem_phone; private String mem_zipcode; private String mem_address; private String mem_job; public String getMem_id() { return mem_id; } public void setMem_id(String mem_id) { this.mem_id = mem_id; } public String getMem_passwd() { return mem_passwd; } public void setMem_passwd(String mem_passwd) { this.mem_passwd = mem_passwd; } public String getMem_name() { return mem_name; } public void setMem_name(String mem_name) { this.mem_name = mem_name; } public String getMem_num1() { return mem_num1; } public void setMem_num1(String mem_num1) { this.mem_num1 = mem_num1; } public String getMem_num2() { return mem_num2; } public void setMem_num2(String mem_num2) { this.mem_num2 = mem_num2; } public String getMem_email() { return mem_email; } public void setMem_email(String mem_email) { this.mem_email = mem_email; } public String getMem_phone() { return mem_phone; } public void setMem_phone(String mem_phone) { this.mem_phone = mem_phone; } public String getMem_zipcode() { return mem_zipcode; } public void setMem_zipcode(String mem_zipcode) { this.mem_zipcode = mem_zipcode; } public String getMem_address() { return mem_address; } public void setMem_address(String mem_address) { this.mem_address = mem_address; } public String getMem_job() { return mem_job; } public void setMem_job(String mem_job) { this.mem_job = mem_job; } }
ProductMgr.java 처리빈
package ch14; import com.oreilly.servlet.*; import com.oreilly.servlet.multipart.DefaultFileRenamePolicy; import javax.servlet.http.HttpServletRequest; import java.sql.*; import java.util.Vector; public class ProductMgr { private DBConnectionMgr pool = null; public ProductMgr() { try { pool = DBConnectionMgr.getInstance(); } catch (Exception e) { System.out.println("ERROR : 커넥션 가져오기 실패 !!"); } }
ProductProc.jsp 컨트롤러
<%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%> <!DOCTYPE html> <jsp:useBean id="proMgr" class="ch14.ProductMgr"/> <% String flag =request.getParameter("flag"); boolean result = false; if(flag.equals("insert")){ result =proMgr.insertProduct(request); }else if(flag.equals("update")){ //result=proMgr.updateProduct(request); }else if(flag.equals("delete")){ //result=proMgr.deleteProduct(request.getParameter("no")); }else{ response.sendRedirect("ProductMgr.jsp"); } if(result){ %> <script> alert("처리하였습니다"); location.href="ProductMgr.jsp"; </script> <%}else{ %> <script> alert("오류가 발생하였습니다."); location.href="ProductMgr.jsp"; </script> <%} %>
ProductMgr.java 등록처리 추가
//////////////////// 비지니스 메소드들이 들어오는 곳///////////// public boolean insertProduct(HttpServletRequest req) { Connection con = null; PreparedStatement pstmt = null; boolean result = false; try { String uploadDir = "C:\\Java_bigdata\\mywork_jsp\\shopmall\\WebContent\\images\\"; //(request, "저장경로", 크기제한, "인코딩", 중복파일처리) MultipartRequest multi = new MultipartRequest(req, uploadDir, 5 * 1024 * 1024, "euc-kr", new DefaultFileRenamePolicy()); con = pool.getConnection(); String query = " insert into shop_product(name, price, detail, date, stock, image)" + "values(?,?,?,now(),?,?)"; pstmt = con.prepareStatement(query); pstmt.setString(1, multi.getParameter("name")); pstmt.setString(2, multi.getParameter("price")); pstmt.setString(3, multi.getParameter("detail")); pstmt.setString(4, multi.getParameter("stock")); if (multi.getFilesystemName("image") == null) { pstmt.setString(5, "ready.png"); } else { pstmt.setString(5, multi.getFilesystemName("image")); } int count = pstmt.executeUpdate(); if (count == 1) result = true; } catch (Exception ex) { System.out.println("Exception : " + ex); } finally { pool.freeConnection(con, pstmt); } return result; }
경로
/ProductProc.jsp 루트아래 있는
./ProductProc.jsp ProductProc.jsp 현재 경로 즉 같은 폴더에 있는 경우
/admin/ProductProc.jsp
클래스명 자리에 빨간줄이 가면, 참조가 안된 것이다.
package를 확인하고, import 해라
'HTML_JS(Sol) > JSP(sol)' 카테고리의 다른 글
210601_1(쇼핑몰4) (0) 2021.06.01 210531_1(쇼핑몰 관리자 제품목록~삭제) (0) 2021.05.31 210527_1(자료실게시판) (0) 2021.05.27 210526_1(답글게시판) (0) 2021.05.26 210525_1(일반형게시판4_글목록_글보기_수정_삭제) (0) 2021.05.25