Spring MVC패턴 게시판 만들기 Review
게시판 만들기(OpenApi 사용)
koreaVO
package com.korea.k1.board;
import lombok.Data;
@Data
public class koreaVO {
private int custno;
private String custname;
private String phone;
private String address; // 전체주소
private String addr1; // 우편번호
private String addr2; // 주소
private String addr3; // 상세주소
private String joindate;
private String grade;
private String city ;
String gradeKor;
int sum;
}
package com.korea.k1.board;
import lombok.Data;
@Data
public class gradeVO {
int custno;
int salenol;
int pcost;
int amount;
int price;
String pcode;
String sdate;
}
package com.korea.k1.board;
import java.util.List;
public interface koreaDao {
void insert(koreaVO vo);
void update(koreaVO vo);
koreaVO selectOne(koreaVO vo);
koreaVO selectMax(koreaVO vo);
List<koreaVO> selectAll(koreaVO vo);
List<gradeVO> selectAllGrade(gradeVO vo);
}
------------------------------------------------
package com.korea.k1.board;
import java.util.List;
public interface koreaService {
void insert(koreaVO vo);
void update(koreaVO vo);
koreaVO selectOne(koreaVO vo);
koreaVO selectMax(koreaVO vo);
List<koreaVO> selectAll(koreaVO vo);
List<gradeVO> selectAllGrade(gradeVO vo);
}
package com.korea.k1.board;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class koreaServiceImpl implements koreaService{
@Autowired
private koreaDao dao;
@Override
public void insert(koreaVO vo) {
dao.insert(vo);
}
@Override
public List<koreaVO> selectAll(koreaVO vo) {
return dao.selectAll(vo);
}
@Override
public koreaVO selectMax(koreaVO vo) {
return dao.selectMax(vo);
}
@Override
public void update(koreaVO vo) {
dao.update(vo);
}
@Override
public koreaVO selectOne(koreaVO vo) {
return dao.selectOne(vo);
}
@Override
public List<gradeVO> selectAllGrade(gradeVO vo) {
return dao.selectAllGrade(vo);
}
}
어노테이션을 걸어두어 applicationContext파일에서 결합을 한다.
package com.korea.k1.board;
import java.util.List;
import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
@Repository
public class koreaDaoImpl implements koreaDao{
@Autowired
private SqlSessionTemplate mybatis;
@Override
public void insert(koreaVO vo) {
mybatis.insert("koreaDAO.korea_INSERT", vo);
}
@Override
public void update(koreaVO vo) {
mybatis.update("koreaDAO.korea_UPDATE", vo);
}
@Override
public koreaVO selectOne(koreaVO vo) {
return mybatis.selectOne("koreaDAO.korea_SELECTONE", vo);
}
@Override
public List<koreaVO> selectAll(koreaVO vo) {
return mybatis.selectList("koreaDAO.korea_SELECTALL", vo);
}
@Override
public koreaVO selectMax(koreaVO vo) {
return mybatis.selectOne("koreaDAO.korea_SELECTMAX", vo);
}
@Override
public List<gradeVO> selectAllGrade(gradeVO vo) {
return mybatis.selectList("koreaDAO.korea_SELECTGRADE", vo);
}
}
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@page import="java.text.SimpleDateFormat"%>
<%@page import="java.util.Date"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<c:import url ="/include/top.jsp"/>
<c:set var="path" value="${pageContext.request.contextPath}" />
<%
SimpleDateFormat ab = new SimpleDateFormat("yyyy-MM-dd");
Date date = new Date(System.currentTimeMillis());
String Date2 = ab.format(date);
%>
<!-- 우편번호 kakao openApi -->
<script src="//t1.daumcdn.net/mapjsapi/bundle/postcode/prod/postcode.v2.js"></script>
<script>
function kakaoPostcode() {
new daum.Postcode({
oncomplete: function (data) {
var addr = ''; // 주소 변수
// 사용자가 선택한 주소 타입에 따라 해당 주소 값을 가져온다.
if (data.userSelectedType === 'R') {
// 사용자가 도로명 주소를 선택한 경우
addr = data.roadAddress;
} else {
// 사용자가 지번 주소를 선택한 경우
addr = data.jibunAddress;
}
// 우편번호와 주소 정보를 해당 필드에 넣는다.
document.getElementById('addr1').value = data.zonecode;
document.getElementById('addr2').value = addr;
/* alert(document.getElementById('sample6_address').value = addr); */
// 커서를 상세주소 필드로 이동한다.
document.getElementById('addr3').focus();
},
}).open();
}
</script>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script>
var path = '${path}';
function inK() {
var pass = true;
if ($("#custno").val() == "") {
alert("회원번호가 입력되지 않음");
pass = false;
} else if ($("#custname").val() == "") {
alert("회원성명이 입력되지 않음");
pass = false;
} else if ($("#phone").val() == "") {
alert("회원전화가 입력되지 않음");
pass = false;
} else if ($("#address").val() == "") {
alert("회원주소가 입력되지 않음");
pass = false;
} else if ($("#joindate").val() == "") {
alert("가입일자가 입력되지 않음");
pass = false;
} else if ($("#city").val() == "") {
alert("도시코드가 입력되지 않음");
pass = false;
}
if (!pass) {
location.replace("${path}/selectKoreaMax.do");
return;
}
// 등록시 알림 동작
var dataStr = {
custno: $("#custno").val(),
custname: $("#custname").val(),
phone: $("#phone").val(),
addr1: $("#addr1").val(),
addr2: $("#addr2").val(),
addr3: $("#addr3").val(),
joindate: $("#joindate").val(),
grade: $("input[name='grade']:checked").val(),
city: $("#city").val()
};
$.ajax({
type: "GET",
url: path + "/insertKorea.do",
data: dataStr,
success: function(k) {
alert("회원등록 완료");
location.replace("${path}/selectKoreaAll.do");
}
});
}
// 조회 버튼 동작
function moveK() {
location.replace("${path}/selectKoreaAll.do");
}
</script>
<section>
<br>
<div align="center">
<h2> 홈쇼핑 회원 등록</h2></div>
<br>
<form action="${path}/insertKorea.do">
<table border=1 width=700 height=250 align="center">
<tr>
<td id=a1><b>회원번호(자동발생)</b></td>
<td><input type="text" id=custno name=custno value="${k}" readonly></td>
<tr>
<td id=a1><b>회원성명</b></td>
<td><input type="text" id=custname name=custname></td>
<tr>
<td id=a1><b>회원전화</b></td>
<td><input type="text" id=phone name=phone size=30></td>
<tr>
<td id=a1><b>회원주소</b></td>
<td height="30">
<input type="text" name="addr1" id="addr1" placeholder="우편번호" size="8">
<input type="button" onclick="kakaoPostcode()" value="우편번호 찾기"><br>
<input type="text" name="addr2" id="addr2" placeholder="주소" size="48" readonly><br>
<input type="text" name="addr3" id="addr3" placeholder="상세주소" size="48">
</td>
<tr>
<td id=a1><b>가입일자</b></td>
<td><input type=text id=joindate name=joindate value='<%=Date2%>'></td>
<tr>
<td id=a1><b>고객등급[A:VIP,B:일반,C:직원]</b></td>
<td>
<input type="radio" name=grade value="A">VIP
<input type="radio" name=grade value="B" checked="checked">일반
<input type="radio" name=grade value="C">직원
</td>
<tr>
<td id=a1><b>도시코드</b></td>
<td><input type="text" id=city name=city ></td>
<tr>
<td colspan="2" align="center">
<input type=button value=" 등 록 " onClick="inK()"> 
<input type=button value=" 조 회 " onClick="moveK()">
</td>
</tr>
</table>
</form>
</section>
<c:import url ="/include/footer.jsp"/>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ include file="/include/top.jsp" %>
<%@taglib uri="http://java.sun.com/jstl/core_rt" prefix="c" %>
<section>
<br>
<div align="center"><h2> 회원매출조회</h2></div>
<br>
<form>
<table border=1 width=700 height=250 align="center">
<tr align="center" style="font-weight: bold;">
<td class="bold">회원번호</td>
<td>회원성명</td>
<td>회원전화</td>
<td>주소</td>
<td>가입일자</td>
<td>고객등급</td>
<td>거주지역</td>
</tr>
<c:forEach items="${li}" var="m">
<tr align="center">
<td id=td1><a href="${path}/getKorea.do?custno=${m.custno}">${m.custno}</a></td>
<td>${m.custname}</td>
<td>${m.phone}</td>
<td>${m.addr2}</td>
<td>${m.joindate}</td>
<td>
<c:choose>
<c:when test="${m.grade=='A' }">
<c:out value="VIP"></c:out>
</c:when>
<c:when test="${m.grade=='B' }">
<c:out value="일반"></c:out>
</c:when>
<c:when test="${m.grade=='C' }">
<c:out value="직원"></c:out>
</c:when>
</c:choose>
</td>
<td>${m.city}</td>
</tr>
</c:forEach>
</table>
</form>
</section>
<%@ include file ="/include/footer.jsp" %>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ include file="/include/top.jsp" %>
<%@taglib uri="http://java.sun.com/jstl/core_rt" prefix="c" %>
<section>
<br>
<div align="center"><h2> 회원매출조회</h2></div>
<br>
<form>
<table border=1 width=700 height=250 align="center">
<tr align="center" style="font-weight: bold;">
<td class="bold">회원번호</td>
<td>회원성명</td>
<td>고객등급</td>
<td>매출</td>
</tr>
<c:forEach items="${li}" var="m">
<c:if test="${m.sum > 0}">
<tr align="center">
<td>${m.custno}</td>
<td>${m.custname}</td>
<td>
<c:choose>
<c:when test="${m.grade=='A' }">
<c:out value="VIP"></c:out>
</c:when>
<c:when test="${m.grade=='B' }">
<c:out value="일반"></c:out>
</c:when>
<c:when test="${m.grade=='C' }">
<c:out value="직원"></c:out>
</c:when>
</c:choose>
</td>
<td>${m.sum}</td>
</tr>
</c:if>
</c:forEach>
</table>
</form>
</section>
<%@ include file ="/include/footer.jsp" %>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ include file="/include/top.jsp" %>
<%@taglib uri="http://java.sun.com/jstl/core_rt" prefix="c" %>
<script>
function moveK() {
location.href="${path}/selectKoreaAll.do";
}
</script>
<section>
<br>
<div align="center">
<h2> 홈쇼핑 회원 수정</h2></div>
<br>
<form action="${path}/updateKorea.do">
<table border=1 width=700 height=250 align="center">
<tr>
<td id=a1><b>회원번호(자동발생)</b></td>
<td><input type="text" name=custno value="${m.custno}" readonly></td>
<tr>
<td id=a1><b>회원성명</b></td>
<td><input type="text" name=custname value="${m.custname}"></td>
<tr>
<td id=a1><b>회원전화</b></td>
<td><input type="text" name=phone value="${m.phone}" size=30></td>
<tr>
<td id=a1><b>회원주소</b></td>
<td><input type="text" name=address value="${m.address}" size=45></td>
<tr>
<td id=a1><b>가입일자</b></td>
<td><input type=text name=joindate value="${m.joindate}"></td>
<tr>
<td id=a1><b>고객등급[A:VIP,B:일반,C:직원]</b></td>
<td><input type="text" name=grade value="${m.grade}"></td>
<tr>
<td id=a1><b>도시코드</b></td>
<td><input type="text" name=city value="${m.city}"></td>
<tr>
<td colspan="2" align="center">
<input type=submit value=" 수 정 " > 
<input type=button value=" 조 회 " onClick="moveK()">
</td>
</tr>
</table>
</form>
</section>
<%@ include file ="/include/footer.jsp" %>
C태그와 jsp에서 사용하는 코드를 좀더 심층적으로 배웠다.
앞으로 포트폴리오를 시작해야한다. 고민이 많다.
열심히 배워서 써먹도록 하자!