보라코딩
Day69_230405_ JSP, MyBatis 방명록 본문
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>
'코딩 > Servlet, JSP, MyBatis' 카테고리의 다른 글
Day71_230407_ JSP, MyBatis (Shop), 파일업로드 (0) | 2023.04.07 |
---|---|
Day70_230406_ JSP, MyBatis 방명록, Shop (0) | 2023.04.06 |
Day68_230404_JSP, MyBatis 방명록 (0) | 2023.04.04 |
Day67_230403_ JSP (EL, JSTL) (0) | 2023.04.03 |
Day66_230331_ JSP (action tag, EL tag, useBean, setProperty) (0) | 2023.03.31 |