min's devlog

[JSP] 메모장 본문

til/Server

[JSP] 메모장

값진 2022. 6. 28. 10:01

파일 구조

 

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