83일차_Spring

서창민·2023년 7월 7일
0

Spring

목록 보기
10/15
post-thumbnail

23.07.07 83일차

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;
}
  • gradeVO
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;	
}
  • koreaDao / koreaService
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);
}
  • koreaService
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파일에서 결합을 한다.

  • koreaDaoImpl
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);
	}
}
  • form
<%@ 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()">&emsp;
			   		<input type=button value=" 조 회 " onClick="moveK()">
		      	</td>
		     </tr>
    	</table>
   </form>
</section>
<c:import url ="/include/footer.jsp"/>
  • list
<%@ 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" %>
  • list(매출액 우선순위, 매출0 원은 미노출)
<%@ 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" %>
  • edit
<%@ 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=" 수 정 " >&emsp;
		<input type=button value=" 조 회 " onClick="moveK()">
       </td>
     </tr>
    </table>
   </form>
</section>
<%@ include file ="/include/footer.jsp" %>

C태그와 jsp에서 사용하는 코드를 좀더 심층적으로 배웠다.
앞으로 포트폴리오를 시작해야한다. 고민이 많다.
열심히 배워서 써먹도록 하자!

profile
Back-end Developer Preparation Students

0개의 댓글