[JSP] 쇼핑몰 만들기 (1)

·2023년 11월 3일
0

jsp

목록 보기
8/18
post-thumbnail

myHome에 쇼핑몰을 만들어 보자.

1. 템플릿 페이지

(1) 개요도

WebContent/myshop/admin/
top.jsp : 관리자 모드 top 화면 구성
main.jsp : 첫페이지 안에 들어갈 내용(일반 사진을 올리자)
bottom.jsp : 관리자 모드 bottom 화면구성

(2) 화면 구성

📍 top.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!-- top.jsp -->
<html>
<head>
	<title>쇼핑몰(관리자)</title>
	<link rel="stylesheet" type="text/css" href="../../style.css">
</head>
<body>
	<div align="center">
		<font size="5">쇼핑몰(관리자용)</font><br>
		<a href="<%=request.getContextPath()%>/myshop/display/mall.jsp">쇼핑몰홈</a> | 
		<a href="<%=request.getContextPath()%>/index.jsp">메인홈</a>
		<table border="1" width="60%" height="70%">
			<tr height="10%">
				<th width="20%"><a href="cate_input.jsp">카테고리등록<a></th>
				<th width="20%">카테고리목록</th>
				<th width="20%">상품등록</th>
				<th width="20%">상품목록</th>
				<th width="20%">쇼핑몰홈</th>
			</tr>
			<tr height="40%">
				<td colspan="5">

📍 main.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!-- main.jsp -->
<%@ include file="top.jsp" %>
	<img src="../../img/wonyoung.png" width="100%" height="100%">
<%@ include file="bottom.jsp"%>			

📍 bottom.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!-- bottom.jsp -->

</td>
			</tr>
			<tr height="10%">
				<td colspan="2" align="center">
					GaHyun's SHOP
				</td>
			</tr>
		</table>
	</div>
</body>
</html>

나에게 가장 부족한 기술인 디자인은...
장원영으로 채워 봤다.

사진 출처

순식간에 세련되어짐.

(1) 카테고리 설정

그 다음은 카테고리를 등록하고 카테고리 리스트를 만들 수 있는 페이지를 만들어 보자.

WebContent/myshop/admin/
~/cate_input.jsp : 카테고리 입력폼
~/cate_input_ok.jsp: 카테고리 입력 처리 로직
~/cate_list.jsp : 카테고리 목록
~/cate_delete.jsp : 카테고리 삭제

📍 DB 설정

create table category(
	cnum 	number primary key,
	code 	varchar2(20) not null,
	cname 	varchar2(50) not null
);


create sequence cate_seq
start with 1
increment by 1;

카테고리 리스트와 카테고리 시퀀스를 만들어 주었다.

📍 cate_input.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>

<%@ include file="top.jsp" %>
<head>
	<title>글 삭제</title>
</head>
<body>
	<form name="f" method="POST" action="cate_input_ok.jsp">
		<div align="center">
			<h3>카테고리 등록</h3>
			<table width="100%" class="outline">
				<tr>
					<td align="center">카테고리 코드 : <input type="text" name="code"></td>
				</tr>
				<tr>
					<td align="center">카테고리 이름 : <input type="text" name="cname"></td>
				</tr>	
					<td align="center">
						<input type="submit" value="등록" >
						<input type="button" value="취소" 
								onclick="window.location='main.jsp'">
					</td>		
			</table>
		</div>
	</form>
</body>
<%@ include file="bottom.jsp"%>		

DTO는 생략합니다.

📍 categoryDAO.java

import java.sql.*;
import java.util.*;

import my.db.ConnectionPoolBean;

public class CategoryDAO {
	Connection con;
	PreparedStatement ps;
	ResultSet rs;
	
	private ConnectionPoolBean pool;
	
	public void setPool(ConnectionPoolBean pool) {
		this.pool = pool;
	}
	
	public int insertCate(CategoryDTO dto) throws SQLException{
		try {		
			con = pool.getConnection();
			String sql = "insert into category values(cate_seq.nextval, ?, ?)";
			ps = con.prepareStatement(sql);
			
			ps.setString(1, dto.getCode());
			ps.setString(2, dto.getCname());

			int res = ps.executeUpdate();
			
			return res;
		}finally{
			if (ps != null) ps.close();
			if (con != null) pool.returnConnection(con);
		}
	}

메서드 구성. 카테고리를 추가하면 값을 받아와서 추가해 주기.

📍 cate_input.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>

<!-- cate_input_ok.jsp -->

<% request.setCharacterEncoding("EUC-KR"); %>

<jsp:useBean id="cdao" class="my.shop.CategoryDAO"/>
<jsp:useBean id="pool" class="my.db.ConnectionPoolBean" scope="application"/>
<jsp:setProperty name="cdao" property="pool" value="<%=pool%>"/>
<jsp:useBean id="cdto" class="my.shop.CategoryDTO"/>
<jsp:setProperty property="*" name="cdto"/>

<%
/* 유효성 검사
	if (memdto.getName() == null || memdto.getName().trim().equals("")){
		response.sendRedirect("memberSsn.jsp");
		return;
	}
*/
	int res = cdao.insertCate(cdto);

	if (res > 0){%>
		<script type="text/javascript">
			alert("카테고리 등록 성공 : 카테고리 목록으로 이동합니다")
			location.href="cate_list.jsp"
		</script>
<% 	}else {%>
		<script type="text/javascript">
			alert("카테고리 등록 실패 : 다시 입력해 주세요")
			location.href="cate_input.jsp"
		</script>
<%	}
%>


그럼 이렇게

📍 cate_input.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR" import="java.util.*, my.shop.*" %>

<% 	request.setCharacterEncoding("EUC-KR"); %>

<jsp:useBean id="cdao" class="my.shop.CategoryDAO"/>
<jsp:useBean id="pool" class="my.db.ConnectionPoolBean" scope="application"/>
<jsp:setProperty name="cdao" property="pool" value="<%=pool%>"/>
<jsp:useBean id="cdto" class="my.shop.CategoryDTO"/>
<jsp:setProperty property="*" name="cdto"/>
<%@ include file="top.jsp"%>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
	<table border="0" width="100%" class="outline">
		<tr>
			<th class="m1">번호</th>
			<th class="m1">카테고리 코드</th>
			<th class="m1">카테고리 명</th>
			<th class="m1">삭제</th>
		</tr>
<%		List<CategoryDTO> list = cdao.listCate();

		if (list == null || list.size() == 0){%>
		<tr>
			<td colspan="4">등록된 카테고리가 없습니다.</td>
		</tr>
<%		}else { 
			int co = 1;
			for(CategoryDTO dto : list){%>
		<tr>
			<td align="center"><%=co++%></td>

			<td align="center"><%=dto.getCode()%></td>
			<td align="center"><%=dto.getCname()%></td>
			<td align="center">삭제</td>
		</tr>	
<%			}
		}	%>				
	</table>
</body>

<%@ include file="bottom.jsp"%>

📍 cate_input.jsp 관련 DAO

	public List<CategoryDTO> makeList(ResultSet rs) throws SQLException {
		List<CategoryDTO> list = new ArrayList<>();
		
		while(rs.next()) {
			CategoryDTO dto = new CategoryDTO();
			
			dto.setCnum(rs.getInt("cnum"));
			dto.setCode(rs.getString("code"));
			dto.setCname(rs.getString("cname"));
			
			list.add(dto);
		}
		return list;
	}

	public List<CategoryDTO> listCate() throws SQLException{
		try {			
		con = pool.getConnection();
		String sql = "select * from category";
		ps = con.prepareStatement(sql);
		
		rs = ps.executeQuery();
		
        return makeList(rs);
		
		}finally{
			if (rs != null) rs.close();
			if (ps != null) ps.close();
			if (con != null) pool.returnConnection(con);
		}
	}

이렇게.

여기까지는 너무 당연한 거라 설명 생략. 미래의 나야 알아서 잘 알아먹을 수 있지?

profile
자바 백엔드 개발자 개인 위키

0개의 댓글

관련 채용 정보