사용자가
1.목록페이지를 본다
2. 클릭하면 자세한내용이 나온다 (detail.jsp)
3. 자세한페이지에 수정버튼, 삭제버튼이있다
제목,내용 수정할 수있게해보자.
수정할 수있는 상태를만들기
id에 해당하는 수정페이지
detail.jsp를 복사한다.
제목 value에 자바코드를 넣는다.
내용 textarea태그를 만들고 안에 콘텐트를 불러온다.
<td colspan="3"><input type ="text" name="title"value="<%=notice.getTitle() %>"></td>
<tr>
<td colspan="4">
<textarea rows="20" cols="80"><%=notice.getContent() %></textarea>
</td>
</tr>
<%=id%>
detail.jsp?id=<%=notice.getId()%>">취소</a>
sendRedirect
서블릿이 다른 서블릿을 요청할 수있게한다.
사용자가 저장을 눌러서 '업데이트처리'한테 post했지만 detail.jsp를 사용자에게 돌려준다.
jsp로만들면 <%%>코드블럭부담 + 제스퍼이용, 업데이트는 서블릿으로하는게 낫다
디테일jsp에 출력기능이 다있다. redirect로 detail.jsp에게 출력기능을 부탁한다.
- 새로운패키지생성 controller.lecture
- EditController 클래스생성
- edit.jsp에서 보낸 <form action="edit" method="post"> , <textarea rows="20" cols="80"><%=notice.getContent() %></textarea>를 받을수 있게 준비한다.
- name = "title"을 넣어 value="" 가 전달되게한다.
- <textarea>태그에도 name을 넣는다
id는 자바스크립트로 값에 접근하는데 사용,
name은 jsp에서는 request.getparameter(name); 이렇게 값에 접근
업데이트시 특정레코드만 수정하는거니까 id가 필요하다.
edit.jsp에 <input>태그에 숨겨서 보낼 수있다.
<input type="hidden"name="id" value="<%=id%>">
service.get(id);
- NoticeSerive.java에 update(Notice notice) 메소드 생성
- 제목,내용,조회수,첨부파일 등 업데이트가 될 수있다.
- sql을 한문장으로 쓸 수있게한다. 범용으로 쓸 수있는 update().
- service.get(id);를 통해 해당id에 대한 데이터를 채워놓은상태에서 title,content를 다른값으로 대체할수있다.
notice = service.get(id);
조회수만 업데이트된다면 나머지는 null값을 가진다. -> 데이터를 DB에서 가져와서 업데이트한것만 바꾼다음에 널을 채운다. (sql에 업데이트 가능한것들을 한번에 나열)
수정할 것만 채워서 전달하면 나머지는 null이 채워지고 ->업데이트 후 기존데이터가 null이 된다.
넘겨지지않은 부분을 채워야한다.
So, EditController클래스에서
Notice notice = new Notice();로 새로운 객체를 생성하지말고
Notice notice = service.get(id);로 기존의 데이터를 가져온다.
'2021 Newlecture > Servlet & JSP' 카테고리의 다른 글
데이터베이스 모델링 (0) | 2021.05.12 |
---|---|
VIEW/ SELF JOIN / 조인대신 서브쿼리사용 (0) | 2021.05.11 |
INNER JOIN / OUTER JOIN / 3개 테이블 조인 (0) | 2021.05.10 |
(JSP) 수정한내용 저장 / 등록페이지 / 삭제 (0) | 2021.05.07 |
(JSP) 페이지연결 , 상세내역 (0) | 2021.05.04 |
HAVING / FROM 안에 FROM / SQL 함수정리 (0) | 2021.04.30 |
정규식 (0) | 2021.04.29 |
IS NULL; BETWEEN 0 AND 2; NOT IN (0,2,7); LIKE '%i%'; (0) | 2021.04.28 |