어제는(8/8) 아침에 학원에 못 나온 친구들이 많았다
코로나 확진에 등등등 8명이 못 나옴
그래서 오전에는 자율 + 팀별 프로젝트를 하라고 하시고, 오후에 셤을 3시간 봄
3시간이라고 했을때, 시험 시간 많이 주네 했는데, 전혀 많이 준게 아니였음
한번 오류나니까 초조, 마음 넘 급해서 겨우 시간 맞춰서 냈다. 100점 맞긴 했징!
근디 이번 시험은 잘 못 한 친구들도 있었는지 어제는 보강까지 함
나는 보강은 안 듣고 집에갔다
어제 비가 많이 오고해서, 침수된 지역도 많아
오늘은(8/9) 11시부터 수업 시작이라고 카톡이 왔는데, 나는 지하철타고 나서 카톡을 봤지....
그래서 학원와서 어제꺼 시험에 대해 쓰는중
시험은 이랬다
오라클에 BOOK 테이블을 만들고,
java, jsp, xml파일 만들어서 데이터 연동시키기
PshExamController.java
package com.spring.sample.web.test.controller;
import java.util.HashMap;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;
import com.spring.sample.web.test.service.ITestService1;
@Controller
public class PshExamController {
@Autowired
public ITestService1 iTestService1;
// book테이블 글 목록
@RequestMapping(value = "/bookList")
public ModelAndView bookList(ModelAndView mav) throws Throwable {
List<HashMap<String, String>> list = iTestService1.getBookList();
mav.addObject("list", list);
mav.setViewName("test/bookList");
return mav;
}
// book테이블 글 상세보기
@RequestMapping(value = "/bookDetail")
public ModelAndView bookDetail(@RequestParam HashMap<String, String> params, ModelAndView mav) throws Throwable {
if (params.get("no") == null || params.get("no") == "") {
mav.setViewName("redirect:bookList");
} else {
HashMap<String, String> data = iTestService1.getBook(params);
mav.addObject("data", data);
mav.setViewName("test/bookDetail");
}
return mav;
}
// book테이블 글 추가
@RequestMapping(value = "/bookInsert")
public ModelAndView bookInsert(ModelAndView mav) {
mav.setViewName("test/bookInsert");
return mav;
}
@RequestMapping(value = "/bookRes")
public ModelAndView bookInsertRes(@RequestParam HashMap<String, String> params, ModelAndView mav) throws Throwable {
try {
int cnt = 0;
switch (params.get("gbn")) {
case "i":
cnt = iTestService1.insertBook(params);
break;
case "u":
cnt = iTestService1.updateBook(params);
break;
case "d":
cnt = iTestService1.deleteBook(params);
break;
}
if (cnt > 0) {
mav.addObject("res", "success");
} else {
mav.addObject("res", "failded");
}
} catch (Exception e) {
e.printStackTrace();
mav.addObject("res", "error");
}
mav.setViewName("test/bookRes");
return mav;
}
// book테이블 글 수정페이지
@RequestMapping(value = "/bookUpdate")
public ModelAndView sellUpdate(@RequestParam HashMap<String, String> params, ModelAndView mav) throws Throwable {
// 기존데이터 조회해와야함
HashMap<String, String> data = iTestService1.getBook(params);
mav.addObject("data", data);
mav.setViewName("test/bookUpdate");
return mav;
}
}
ITestService1.java
package com.spring.sample.web.test.service;
import java.util.HashMap;
import java.util.List;
public interface ITestService1 {
public List<HashMap<String, String>> getBookList() throws Throwable;
public HashMap<String, String> getBook(HashMap<String, String> params) throws Throwable;
public int insertBook(HashMap<String, String> params) throws Throwable;
public int updateBook(HashMap<String, String> params) throws Throwable;
public int deleteBook(HashMap<String, String> params) throws Throwable;
}
TestService1.java
package com.spring.sample.web.test.service;
import java.util.HashMap;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.spring.sample.web.test.dao.ITestDao1;
@Service
public class TestService1 implements ITestService1 {
@Autowired
public ITestDao1 iTestDao1;
@Override
public List<HashMap<String, String>> getBookList() throws Throwable {
return iTestDao1.getBookList();
}
@Override
public HashMap<String, String> getBook(HashMap<String, String> params) throws Throwable {
return iTestDao1.getBook(params);
}
@Override
public int insertBook(HashMap<String, String> params) throws Throwable {
return iTestDao1.insertBook(params);
}
@Override
public int updateBook(HashMap<String, String> params) throws Throwable {
return iTestDao1.updateBook(params);
}
@Override
public int deleteBook(HashMap<String, String> params) throws Throwable {
return iTestDao1.deleteBook(params);
}
}
ITestDao1.java
package com.spring.sample.web.test.dao;
import java.util.HashMap;
import java.util.List;
public interface ITestDao1 {
public List<HashMap<String, String>> getBookList() throws Throwable;
public HashMap<String, String> getBook(HashMap<String, String> params) throws Throwable;
public int insertBook(HashMap<String, String> params) throws Throwable;
public int updateBook(HashMap<String, String> params) throws Throwable;
public int deleteBook(HashMap<String, String> params) throws Throwable;
}
TestDao1.java
package com.spring.sample.web.test.dao;
import java.util.HashMap;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
@Repository
public class TestDao1 implements ITestDao1 {
@Autowired
public SqlSession sqlSession;
@Override
public List<HashMap<String, String>> getBookList() throws Throwable {
return sqlSession.selectList("test.getBookList");
}
@Override
public HashMap<String, String> getBook(HashMap<String, String> params) throws Throwable {
return sqlSession.selectOne("test.getBook", params);
}
@Override
public int insertBook(HashMap<String, String> params) throws Throwable {
return sqlSession.insert("test.insertBook", params);
}
@Override
public int updateBook(HashMap<String, String> params) throws Throwable {
return sqlSession.update("test.updateBook", params);
}
@Override
public int deleteBook(HashMap<String, String> params) throws Throwable {
return sqlSession.delete("test.deleteBook", params);
}
}
Test_SQL.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- namespace : 클래스와 동일, 이 파일의 대표명 -->
<mapper namespace="test">
<select id="getBookList" resultType="hashmap">
SELECT BOOK_NO, BOOK_TITLE, BOOK_AUTHOR
FROM BOOK
</select>
<select id="getBook" resultType="hashmap" parameterType="hashmap">
SELECT BOOK_NO, BOOK_TITLE, BOOK_AUTHOR, BOOK_CO,
TO_CHAR(BOOK_DT,'YYYY-MM-DD') AS BOOK_DT, TO_CHAR(REG_DT,'YYYY-MM-DD') AS REG_DT
FROM BOOK
WHERE BOOK_NO = #{no}
</select>
<insert id="insertBook" parameterType="hashmap">
INSERT INTO BOOK(BOOK_NO, BOOK_TITLE, BOOK_AUTHOR, BOOK_CO, BOOK_DT)
VALUES(BOOK_SEQ.NEXTVAL, #{bookTitle}, #{bookAuthor}, #{bookCo}, #{bookDt})
</insert>
<delete id="deleteBook" parameterType="hashmap">
DELETE FROM BOOK
WHERE BOOK_NO = #{no}
</delete>
<update id="updateBook" parameterType="hashmap">
UPDATE BOOK SET BOOK_TITLE = #{bookTitle},
BOOK_AUTHOR = #{bookAuthor},
BOOK_CO = #{bookCo},
BOOK_DT = #{bookDt}
WHERE BOOK_NO = #{no}
</update>
</mapper>
bookList.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<style type="text/css">
table{
border-collapse: collapse;
}
th, td {
border: 1px solid #000;
padding: 5px;
}
</style>
<script type="text/javascript" src="resources/script/jquery/jquery-1.12.4.min.js"></script>
<script type="text/javascript">
$(document).ready(function () {
$("tbody").on("click", "tr", function () {
console.log($(this).attr("no"));
$("#no").val($(this).attr("no"));
$("#actionForm").submit();
})
$("#insertBtn").on("click", function () {
location.href = "bookInsert";
});
});
</script>
</head>
<body>
<form action="bookDetail" id="actionForm" method="post">
<input type="hidden" id="no" name="no" />
</form>
<input type="button" value="추가" id="insertBtn" />
<br />
<table>
<thead>
<tr>
<th>책번호</th>
<th>책제목</th>
<th>저자</th>
</tr>
</thead>
<tbody>
<c:forEach var="data" items="${list}">
<tr no="${data.BOOK_NO}">
<td>${data.BOOK_NO}</td>
<td>${data.BOOK_TITLE}</td>
<td>${data.BOOK_AUTHOR}</td>
</tr>
</c:forEach>
</tbody>
</table>
</body>
</html>
bookDetail.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript"
src="resources/script/jquery/jquery-1.12.4.min.js"></script>
<script type="text/javascript">
$(document).ready(function () {
$("#btnWrap").on("click", "input", function(){
if($(this).attr("id") != "deleteBtn" ||
($(this).attr("id") == "deleteBtn" && confirm("삭제하시곘습니까?"))){
$("#actionForm").attr("action", $(this).attr("loc"));
$("#actionForm").submit();
}
})
});
</script>
</head>
<body>
<form action="#" id="actionForm" method="post">
<input type="hidden" name="gbn" value="d">
<input type="hidden" name="no" value="${data.BOOK_NO}">
</form>
책제목: ${data.BOOK_TITLE}<br/>
저자: ${data.BOOK_AUTHOR}<br/>
출판사: ${data.BOOK_CO}<br/>
출판일: ${data.BOOK_DT}<br/>
등록일: ${data.REG_DT}<br/>
<div id="btnWrap">
<input type="button" value="수정" id="updateBtn" loc="bookUpdate" />
<input type="button" value="삭제" id="deleteBtn" loc="bookRes"/>
<input type="button" value="목록" id="listBtn" loc="bookList" />
</div>
</body>
</html>
bookInsert.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript" src="resources/script/jquery/jquery-1.12.4.min.js"></script>
<script type="text/javascript">
$(document).ready(function () {
$("#listBtn").on("click", function () {
history.back();
});
$("#insertBtn").on("click", function () {
if($("#bookTitle").val() == ""){
alert("책제목을 입력하세요");
$("#bookTitle").focus();
} else if($("#bookAuthor").val() == ""){
alert("저자를 입력하세요");
$("#bookAuthor").focus();
} else if($("#bookCo").val() == ""){
alert("출판사를 입력하세요");
$("#bookCo").focus();
}else if($("#bookDt").val() == ""){
alert("출판일을 입력하세요");
$("#bookDt").focus();
}else {
$("#actionForm").submit();
}
});
});
</script>
</head>
<body>
<form action="bookRes" id="actionForm" method="post">
<!-- gbn : 구분, 혹은 flag -->
<!-- 구분: i - insert, u - update, d - delete -->
<input type="hidden" name="gbn" value="i"/>
책제목 <input type="text" name="bookTitle" id="bookTitle"/>
<br />
저자 <input type="text" name="bookAuthor" id="bookAuthor" />
<br />
출판사 <input type="text" name="bookCo" id="bookCo"/>
<br />
출판일 <input type="date" name="bookDt" id="bookDt" />
</form>
<input type="button" value="등록" id="insertBtn">
<input type="button" value="목록" id="listBtn">
</body>
</html>
bookRes.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript" src="resources/script/jquery/jquery-1.12.4.min.js"></script>
<script type="text/javascript">
$(document).ready(function () {
switch("${res}"){
case "success" :
if("${param.gbn}" == "u"){
$("#goForm").submit();
} else {
location.href = "bookList"
}
break;
case "failed" :
alert("작업에 실패하였습니다.");
history.back();
break;
case "error" :
alert("작업중 문제가 발생 하였습니다.");
history.back();
break;
}
});
</script>
</head>
<body>
<form action="bookDetail" id="goForm" method="post">
<input type="hidden" name="no" value="${param.no}" />
</form>
</body>
</html>
bookUpdate.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript" src="resources/script/jquery/jquery-1.12.4.min.js"></script>
<script type="text/javascript">
$(document).ready(function () {
$("#listBtn").on("click", function () {
history.back();
});
$("#updateBtn").on("click", function () {
if($("#bookTitle").val() == ""){
alert("책제목을 입력하세요");
$("#bookTitle").focus();
} else if($("#bookAuthor").val() == ""){
alert("저자를 입력하세요");
$("#bookAuthor").focus();
} else if($("#bookCo").val() == ""){
alert("출판사를 입력하세요");
$("#bookCo").focus();
}else if($("#bookDt").val() == ""){
alert("출판일을 입력하세요");
$("#bookDt").focus();
}else {
$("#actionForm").submit();
}
});
});
</script>
</head>
<body>
<form action="bookRes" id="actionForm" method="post">
<input type="hidden" name="gbn" value="u"/>
<input type="hidden" name="no" value="${data.BOOK_NO}"/>
책제목 <input type="text" name="bookTitle" id="bookTitle" value="${data.BOOK_TITLE}"/>
<br />
저자 <input type="text" name="bookAuthor" id="bookAuthor" value="${data.BOOK_AUTHOR}"/>
<br />
출판사 <input type="text" name="bookCo" id="bookCo" value="${data.BOOK_CO}"/>
<br />
출판일 <input type="date" name="bookDt" id="bookDt" value="${data.BOOK_DT}"/>
<br/>
</form>
<input type="button" value="수정" id="updateBtn">
<input type="button" value="뒤로가기" id="listBtn">
</body>
</html>
내가 시험 볼때 떴던 오류는....
뭐라고 떴는지는 기억이 안나고,
1. service.java에 어노테이션 안 붙여서 오류났었고,
2. bookUpdate.jsp에서 form의 경로를 잘못 입력해줘서....
경로를 잘 보면서 하자!
아니 근데, import 할때, import한 내용이 사라지지?
@하면은 어제 시험 볼때는 import한 내용이 있었는데, 지금 보니 사라져 있네
이런것들, 있던 파일에 어노테이션 지우고 다시 붙여도 import내용이 안떠서
예를 보여주기 위해 파일을 새로 만듬
왜지??!!!!!
난 바보였다..
감춰져 있는거였음
+버튼 클릭하면 나타남....
오늘은 8/10일임
나는 또 바보였다
저번에 시험에서 쓴 코드를 복붙해서 쓸려다가 이상한게 있었음
Controller부분에
왜 bookUpdate부분에 public ModelAndView sellUpdate.... sell이 왜있어!
bookUpdate이여야 했는데, 근데 화면은 잘 작동됨, 저 이름부분은.... 다른곳이랑 연결된곳이 없나
'TIL > academy' 카테고리의 다른 글
국비 TIL(Today I Learned) 20220810 검색하기, sell, manager, anboard테이블 (0) | 2022.08.10 |
---|---|
국비 TIL(Today I Learned) 20220809 테이블 페이징 처리 (0) | 2022.08.09 |
국비 TIL(Today I Learned) 20220805 오라클에서 divs 데이터 가져오기 실습 (0) | 2022.08.05 |
국비 TIL(Today I Learned) 20220804 스프링 게시판 글추가, 수정, 삭제 (0) | 2022.08.04 |
국비 TIL(Today I Learned) 20220803 스프링, DB랑 연결, DAO, myBatis (0) | 2022.08.03 |