보라코딩

Day69_230405_ JSP, MyBatis 방명록 본문

코딩/Servlet, JSP, MyBatis

Day69_230405_ JSP, MyBatis 방명록

new 보라 2023. 4. 5. 17:46

 

 

 

 

update.jsp

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

<%-- 전달받은 데이터(session guestbookVO)를 화면에 표시하고 수정데이터 작성 --%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>수정화면</title>

<script>
function save_go(form){
//alert("save_go 실행 : " + form);
//비밀번호 일치여부 확인하고 일치하면 수정요청 처리
let pwd1 = form.pwd.value; //현재 화면에서 입력한 암호
let pwd2 = "${guestbookVO.pwd}";   // DB저장된 암호!! 꼭 " "안에 넣어줘야 오류 발생하지 않는다.

alert("pwd1 : " + pwd1 + ", pwd2 : " + pwd2);
if (pwd1 !== pwd2) {
alert("암호 불일치, 암호를 확인하세요!");
form.pwd.value = "";
for m.pwd.focus(); 
return false;   //불일치시 함수 종료
}
//alert("암호일치");
form.action = "update_ok.jsp";  // DB작업하러 이동~
form.submit();
}
</script>

</head>
<body>

<div id="container">
<h2>방명록 : 수정화면(update.jsp)</h2>
<hr>
<p><a href="list.jsp">[목록으로 이동]</a></p>

<form method="post">
<table>
<tbody>
<tr>
<th>작성자</th>
<td><input type="text" name="name" value="${guestbookVO.name }"></td>
</tr>
<tr>
<th>제목</th>
<td><input type="text" name="subject" value="${guestbookVO.subject }"></td>
</tr>
<tr>
<th>이메일</th>
<td><input type="email" name="email" value="${guestbookVO.email }"></td>
</tr>
<tr>
<th>비밀번호</th>
<td><input type="password" name="pwd"></td>
</tr>
<tr>
<td colspan="2">
<textarea name="content" rows="5" cols="60">${guestbookVO.content }</textarea>
</td>
</tr>
</tbody>
<tfoot>
<tr>
<td colspan="2">
<input type="button" value="수 정" onclick="save_go(this.form)">
<input type="reset" value="다시작성">
<input type="hidden" name="idx" value="${guestbookVO.idx }" readonly>
</td>
</tr>
</tfoot>
</table>
</form>
</div>
</body>
</html>

 

 

이렇게하면 화면에 보이지 않으면서 name값 (idx) 전달 가능하다!!!

<input type="hidden" name="idx" value="${guestbookVO.idx }" readonly>

 

 

 

 

 

계속 반복해서 쓰는 style 양식을 따로 빼줬다.

 

 

 

 

 

mapper.xml에서 update 작성

 

<!-- VO데이터를 받아서 글번호로 찾아 이름,제목,이메일,내용,날짜(SYSDATE) 수정-->
   <update id="update" parameterType="guestbookVO">
   UPDATE GUESTBOOK 
SET NAME = #{name},
    SUBJECT =  #{subject},
    EMAIL = #{email},
    CONTENT = #{content},
    REGDATE = SYSDATE 
WHERE IDX = #{idx} 
   </update>

 

 

 

혹시 수정이 잘 안먹힌다면

톰캣 오른쪽마우스에서 add and remove로 톰캣 다 내리고

다음에 clean 해준 후 다시 작동시킨다.

 

 

 

 

 

update_ok.jsp

update에서 idx를 포함한 모든 값을 넘겨줬기 때문에

jsp:javabean과 property 이용해서 값 다 가져오고

그 vo를 파라미터로 넘겨줘서 update 한다!

 

<%@page import="com.mystudy.mybatis.GuestbookVO"%>
<%@page import="com.mystudy.mybatis.DBService"%>
<%@page import="org.apache.ibatis.session.SqlSession"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

<%-- (실습) 전달받은 데이터를 사용해서 DB데이터 수정(update) 후 화면전환
수정성공 : 상세화면으로 이동(또는 전체목록 페이지 이동)
예외발생 : 예외메시지 표시 후 이전화면(수정페이지 또는 상세페이지) 이동
--%>
<%
//전달받은 데이터 한글처리(UTF-8)  포스트방식일때!!!!
request.setCharacterEncoding("UTF-8");

//1. 파라미터값 추출(확인)
%>
<jsp:useBean id="vo" class="com.mystudy.mybatis.GuestbookVO" />
<jsp:setProperty property="*" name="vo" />
<%
//System.out.println("update_ok의 vo : "+vo);

//2. SqlSession 객체생성 및 DB 수정(update)
SqlSession ss = DBService.getFactory().openSession(true);
try {
int result = ss.update("guestbook.update",vo);
System.out.println("수정건수 : " + result);
//response.sendRedirect("list.jsp");
response.sendRedirect("onelist.jsp?idx=" + vo.getIdx());    //idx 같이 넘겨줘야 한다!
} catch(Exception e) {
e.printStackTrace();
} finally {
ss.close();
}
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>예외발생</title>
</head>
<body>

<script>
alert("[예외발생] 수정작업 중 오류발생\n담당자(8282)에게 연락바람\n이전페이지로 이동합니다.");
//history.back();
history.go(-2);
</script>

</body>
</html>

 

 

 

 

 

 

delete.jsp

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

<%-- (실습) 전달받은 데이터를 사용해서 DB데이터 삭제(delete) 후 화면전환
비교값 : 전달받은 pwd 파라미터값과 session의 pwd(DB값) 비교
- 일치하면 : DB 데이터 삭제 후 목록페이지로 이동
- 불일치면 : 이전페이지(삭제화면) 이동 - 암호 재입력 할 수 있도록
삭제성공 : 전체목록 페이지 이동
예외발생 : 상세페이지로 이동
--%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<link rel="stylesheet" href="../css/guestbook.css">
<script>
function delete_go(form){
let pwd1 = form.pwd.value;
let pwd2 = "${guestbookVO.pwd}";
alert("pwd1 : " + pwd1 + ", pwd2 : " + pwd2);

if(pwd1 != pwd2){
alert("비밀번호 불일치");
form.pwd.value = "";
for m.pwd.focus(); 
return false;
}
alert("비밀번호 일치"); 
form.action = "delete_ok.jsp?idx=${guestbookVO.idx}";   //DB삭제하기!!
form.submit();
}
</script>
</head>

<body>
<div id="container">
<h2>방명록 : 삭제화면(delete.jsp)</h2>
<hr>
<p><a href="list.jsp">[목록으로 이동]</a></p>

<!-- 
<form action="delete_ok.jsp" method="post">
 -->
<form action="delete_ok.jsp" method="post">
<table>
<tbody>
<tr>
<th>비밀번호</th>
<td>
<input type="text" name="pwd">
<input type="button" value="삭 제" onclick="delete_go(this.form)">
</td>
</tr>

</tbody>
</table>
</form>
</div>
</body>
</html>

 

 

 

 

mapper.xml

<delete id="delete" parameterType="_int">
   DELETE FROM GUESTBOOK 
WHERE IDX = #{idx}
   </delete>

 

 

 

delete_ok.jsp

<%@page import="com.mystudy.mybatis.GuestbookVO"%>
<%@page import="com.mystudy.mybatis.DBService"%>
<%@page import="org.apache.ibatis.session.SqlSession"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%-- (실습) 전달받은 데이터를 사용해서 DB데이터 삭제(delete) 후 화면전환
비교값 : 전달받은 pwd 파라미터값과 session의 pwd(DB값) 비교
- 일치하면 : DB 데이터 삭제 후 목록페이지로 이동
- 불일치면 : 이전페이지(삭제화면) 이동 - 암호 재입력 할 수 있도록
삭제성공 : 전체목록 페이지 이동
예외발생 : 상세페이지로 이동
--%>
<%
int idx = Integer.parseInt(request.getParameter("idx"));

SqlSession ss = DBService.getFactory().openSession(true);
try {
int result = ss.delete("guestbook.delete", idx);
System.out.println("수정건수 : " + result);
response.sendRedirect("list.jsp");
} catch(Exception e) {
e.printStackTrace();
response.sendRedirect("onelist.jsp");
%>
alert("[예외발생] 입력작업 중 삭제발생");
location.href = "onelist.jsp";
<%
} finally {
ss.close();
}

%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>예외처리</title>
<link rel="stylesheet" href="../css/guestbook.css">
</head>
<body>
</body>
</html>