여기서부턴 순서를 못적어서 뒤죽박죽일 뻔 했는데
우리반 반장님께서 목차정리를 해주셨다 ㅠㅠㅠ
정말 천사들이야....ㅠㅠ
조회수 업데이트(BBSDao)
이전글,다음글(BBSDao,View)
수정(Edit,EditOk) 하기
1.bbs08/Edit.jsp(writer.jsp복붙)
이건 상세보기 페이지에 있는 상태에서 수정버튼을 누르면 이동하는 페이지니
view.jsp 로 가서 수정버튼인 a태그에 링크를 연결시켜 놓자!
<a href="Edit.jsp?no=<%=no %>" class="btn btn-success">수정</a>
Edit 페이지 작성!
사용자가 상세보기서 수정버튼 눌렀을 때 누른 글의 번호를 키로해서
작성했던 글(누른 번호의 그 글만!) 내용을 가져와 수정한다! selectone()
<!-- 로그인 여부 판단 -->
<jsp:include page="/common/IsMember.jsp" />
<%
//파라미터(키값)받기
String no = request.getParameter("no");
//CRUD작업용 BBSDao생성
BBSDao dao = new BBSDao(application);
//레코드하나 가져오기
BBSDto dto = dao.selectOne(no);
dao.close();
%>
<jsp:include page="/template/Top.jsp"/>
<div class="container" style="margin-top:65px;">
<div class="jumbotron bg-warning">
<h1>수정 페이지</h1>
</div>
<form method="post" action="EditOk.jsp">
<input type="hidden" name="no" value="<%=no%>"/>
<input type="hidden" name="nowPage" />
<input type="hidden" name="searchColumn" />
<input type="hidden" name="searchWord" />
<div class="form-group">
<label><kbd class="lead" >제목</kbd></label>
<input type="text" class="form-control" placeholder="제목을 입력하세요" name="title" value="<%=dto.getTitle() %>">
</div>
<div class="form-group">
<label><kbd class="lead">내용</kbd></label>
<textarea class="form-control" rows="5" name="content"><%=dto.getContent() %></textarea>
</div>
<button type="submit" class="btn btn-primary">수정</button>
</form>
</div>
<jsp:include page="/template/Footer.jsp"/>
2.EditOk.jsp(WriteOk복붙)
여기서 글을 수정하는 작업을 하기 때문에 update()메소드를 구현하러 DAO로 가쟈!
@Override
public int update(BBSDto dto) {
int affected=0;
String sql="UPDATE bbs SET TITLE=?,CONTENT=? WHERE no=?";
try {
psmt = conn.prepareStatement(sql);
psmt.setString(3,dto.getNo());
psmt.setString(1,dto.getTitle());
psmt.setString(2,dto.getContent());
affected = psmt.executeUpdate();
}
catch(SQLException e){e.printStackTrace();}
return affected;
}//////////////
잠시 잊고 있었던거 같은데 update 반환타입이 int인건
update가 성공하면 1 아니면 0아니음수 반환
다시 EditeOk 작성가자
<!-- EditOk.jsp -->
<jsp:include page="/common/IsMember.jsp" />
<%
//POST방식일때 한글 깨지는 거 처리용(톰캣 10.0.27버전은 안깨짐)
//request.setCharacterEncoding("UTF-8");
//파라미터 받기(이건 사용자가 입력하는걸 그대로 받으니까)
String title = request.getParameter("title");
String content = request.getParameter("content");
String no = request.getParameter("no");
//데이타를 전달할 DTO객체 생성 및 데이타 설정
BBSDto dto = new BBSDto();
dto.setContent(content);
dto.setTitle(title);
dto.setNo(no);
//CRUD작업용 DAO계열 객체 생성
BBSDao dao =new BBSDao(application);
//데이터 설정한거 입력작업
int affected = dao.update(dto);
dao.close();
if(affected == 1){
//response.sendRedirect("List.jsp"); 리다이렉트는 한글이 깨짐
out.println("<script>");
out.println("location.replace('List.jsp')");
out.println("</script>");
}
else{
out.println("<script>");
out.println("alert('수정 실패!');");
out.println("history.back();");
out.println("</script>");
}
%>
나중에 페이징 할 때 수정 후 글 다시보기는 그때 처리
지금은 수정하면 목록으로 보내버림 안그럼 에러나서...
3. 이제 delete 만 하면 주요기능은 얼추 끝낸듯...
삭제같은경우
값들을 따로 뿌려줘야할 게 없음
얻은 키값으로 레코드 하나를 걍 날려버리면 됨
역시 그럼 먼저 DAO로 가서 delete메소드를 구현시켜보자
@Override
public int delete(String no) {
int affected=0;
String sql="DELETE bbs WHERE no=?";
try {
psmt= conn.prepareStatement(sql);
psmt.setString(1,no);
affected =psmt.executeUpdate();
}
catch(SQLException e) {e.printStackTrace();}
return affected;
}
Delete.jsp는 보이는 페이지가 아님
삭제 로직만 작성하면 끝
아! 그 전에
삭제 버튼을 누른다고 그냥 삭제되면 너무 정이 없음... 은 감정적인 이유고
혹시 모를 불상사를 대비해서
삭제버튼 클릭 시 한 번 더 물어보는 작업을 해주면 좋음
view.jsp에서 자바스크립트로 작성
<script>
function isDelete(){
if(confirm("삭제 하시겠습니까?")){
location.replace("Delete.jsp?no=<%=no%>");
}
}
</script>
아 그래서 삭제버튼 a태그에 isDelete 가 있었구나 !!
중요한건 대충 끝냇고
이제 남은건
model /PagingUitil.jsp
페이징(BBSDao,List)
수정시 조회수 늘리지 않기
게시판페이징
글 번호를 pk값이 아닌 목록에 표시된 순서로 저장
이건... 내일..
아 내일 팀프로젝트 찾아봐야하는데.... 하......
'학원 > JSP' 카테고리의 다른 글
11/28 52-1 [JSP] EL개념 및 연산 (0) | 2022.11.28 |
---|---|
11/25 51-3 게시판 짜기(이전/다음글, 페이징 ) (0) | 2022.11.27 |
11/25 51-2 게시판 짜기(Write,view) (0) | 2022.11.26 |
11/25 51-1 대망의 게시판 짜기 _1,2 (0) | 2022.11.25 |
11/24 50-2 [JSP] Action Tag(Param) (0) | 2022.11.24 |