min's devlog
[JSP] 메모장 본문
header.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<header>
<h1>JSP Model 2 Memo</h1>
</header>
- 실수를 방지하고자 inc 밑에 jsp를 넣어놓았다.
- <h1> jsp 어쩌고 같이 매 페이지 반복되는 코드는 inc> header로 다 빼놓는게 좋다.
memo.sql (DBeaver)
create table tblMemo (
seq number primary key, --번호(PK)
subject varchar2(100) not null, --제목
content varchar2(1000) not null, --내용
name varchar2(30) not null, --작성자
pw varchar2(30) not null, --암호
regdate date default sysdate not null --날짜
);
create sequence seqMemo;
-- 업무 SQL
insert into tblMemo (seq, subject, content, name, pw, regdate)
values (seqMemo.nextVal, '메모입니다.', '내용입니다.', '홍길동', '1111', default);
select * from tblMemo order by seq desc;
select count(*) from tblMemo where seq = 1 and pw = '1111'; -- 인증(허가)
update tblMemo set subject = '', content = '', name = '' where seq = 1;
delete tblMemo where seq = 1;
메모를 수정하는 뷰 edit.jsp
<body>
<main>
<%@ include file="/WEB-INF/views/memo/inc/header.jsp" %>
<section>
<form method="POST" action="/jsp/memo/editok.do">
<table class="table table-bordered add">
<tr>
<th>제목</th>
<td><input type="text" name="subject" class="form-control" required value="${dto.subject}"></td>
</tr>
<tr>
<th>내용</th>
<td><textarea name="content" class="form-control" required>${dto.content}</textarea></td>
</tr>
<tr>
<th>이름</th>
<td><input type="text" name="name" class="form-control" required value="${dto.name}"></td>
</tr>
<tr>
<th>암호</th>
<td><input type="password" name="pw" class="form-control" required></td>
</tr>
</table>
<div class="btns">
<input type="button" value="돌아가기" class="btn btn-secondary"
onclick="location.href='/jsp/memo/list.do';">
<input type="submit" value="메모수정" class="btn btn-primary">
</div>
<input type="hidden" name="seq" value="${dto.seq}">
</form>
</section>
</main>
edit의 서블릿 edit.java
@WebServlet("/memo/edit.do")
public class Edit extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//Edit.java
//1. 데이터 가져오기(?seq=5)
//2. DB 작업 > select
//3. 결과 반환(DTO)
//4. JSP 호출하기 + 3번 전달하기
//1.
String seq = req.getParameter("seq");
//2.
DAO dao = new DAO();
//3.
DTO dto = dao.get(seq);
//4.
req.setAttribute("dto", dto);
RequestDispatcher dispatcher = req.getRequestDispatcher("/WEB-INF/views/memo/edit.jsp");
dispatcher.forward(req, resp);
}
}
editok.jsp
<body>
<main>
<%@ include file="/WEB-INF/views/memo/inc/header.jsp" %>
<section>
</section>
</main>
<script>
<c:if test="${result == 1}">
location.href = '/jsp/memo/list.do';
</c:if>
<c:if test="${result == 0}">
alert('수정 실패');
history.back();
</c:if>
</script>
</body>
editOk의 서블릿 editOk.java
@WebServlet("/memo/editok.do")
public class EditOk extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//EditOk.java
//1. 인코딩
//2. 데이터 가져오기
//3. DB 작업 > DAO 위임 > update
//4. int result
//5. JSP 호출하기 + result 전달하기
//1.
req.setCharacterEncoding("UTF-8");
//2.
String seq = req.getParameter("seq");
String subject = req.getParameter("subject");
String content = req.getParameter("content");
String name = req.getParameter("name");
String pw = req.getParameter("pw");
//3.
DTO dto = new DTO();
dto.setSeq(seq);
dto.setSubject(subject);
dto.setContent(content);
dto.setName(name);
dto.setPw(pw);
DAO dao = new DAO();
int result = 0;
if (dao.check(dto)) {
result = dao.edit(dto); //성공(1), 실패(0)
} else {
result = 0; //암호 실패(0)
}
System.out.println(result);
//4.
req.setAttribute("result", result);
RequestDispatcher dispatcher = req.getRequestDispatcher("/WEB-INF/views/memo/editok.jsp");
dispatcher.forward(req, resp);
}
}
'til > Server' 카테고리의 다른 글
[JSP] 로그인 구현 (0) | 2022.06.28 |
---|---|
[JSP] 게시판 설계 (0) | 2022.06.28 |
Code template (0) | 2022.06.27 |
[JSP] 웹 인증 (0) | 2022.06.27 |
[JSP] 주소록 데이터 삭제 (0) | 2022.06.27 |
Comments