[JSP] 게시판_페이징_검색_게시물 띄우기
저번 글에 이어서 . . . [JSP] 게시판 구성(게시판 조회 LOWNUM) [JSP] 게시판 구성하기 (feat.시퀀스쿼리) log4j 자동으로 log 파일이 만들어진다. **로그 관련 파일 ** web.xml (복붙) log4j가 어디..
practice365.xyz
저번 시간엔 게시물 띄우는 것까지 했고, 수정과 삭제 버튼을 눌렀을 때 수정창이 뜨고, 삭제가 되는 것까지는 안 돼 있습니다. 수정/삭제까지 마쳐야 게시판의 기본적인 기능들은 사용해 봤다고 할 수 있을 법한데... 아직 댓글을 다는 것과 파일 첨부 등은 해보지 못 했네요. 이런 부분들은 스프링에 들어가서 하게 된다고 하니 기대가 됩니다!!
* 추가된 기능(2021.12.03)
- 삭제 기능
- 수정페이지와 수정기능
< / board / view.jsp >
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="com.icia.common.util.StringUtil" %>
<%@ page import="com.icia.web.util.CookieUtil" %>
<%@ page import="com.icia.web.util.HttpUtil" %>
<%@ page import="com.icia.web.dao.BoardDao" %>
<%@ page import="com.icia.web.model.Board" %>
<%@ page import="org.apache.logging.log4j.LogManager" %>
<%@ page import="org.apache.logging.log4j.Logger" %>
<%
Logger logger = LogManager.getLogger("/board/view.jsp");
HttpUtil.requestLogString(request, logger);
//글보기에 왔다가 다시 넘어갈 때
long bbsSeq = HttpUtil.get(request, "bbsSeq", (long)0);
String searchType = HttpUtil.get(request, "searchType");
String searchValue = HttpUtil.get(request, "searchValue");
long curPage = HttpUtil.get(request, "curPage", (long)1);
String cookieUserId = CookieUtil.getValue(request, "USER_ID");
BoardDao boardDao = new BoardDao();
Board board = boardDao.boardSelect(bbsSeq);
if(board != null)
{
//조회수 증가
boardDao.boardReadCntPlus(bbsSeq);
}
%>
<!DOCTYPE html>
<html>
<head>
<%@ include file="/include/head.jsp" %>
<script>
$(function(){
<%
if(board == null)
{
%>
alert("조회하신 게시물이 존재하지 않습니다.");
document.bbsForm.action = "/board/list.jsp";
document.bbsForm.submit();
<%
}
else
{
%>
//리스트 페이지 되돌아갈 때,
//원래상태 그대로의 페이지로 돌아가야 하기 때문에 bbsForm으로 거쳐감.
$("#btnList").on("click", function(){
document.bbsForm.action = "/board/list.jsp";
document.bbsForm.submit();
});
<%
if(StringUtil.equals(cookieUserId, board.getUserId()))
{
%>
$("#btnUpdate").on("click", function(){
document.bbsForm.action = "/board/update.jsp";
document.bbsForm.submit();
});
$("#btnDelete").on("click", function(){
if(confirm("게시물을 삭제 하시겠습니까?") == true)
{
document.bbsForm.action = "/board/delete.jsp";
document.bbsForm.submit();
}
});
<%
}
%>
<%
}
%>
});
</script>
</head>
<body>
<%
if(board != null)
{
%>
<%@ include file="/include/navigation.jsp" %>
<div class="container">
<h2>게시물 보기</h2>
<div class="row" style="margin-right:0; margin-left:0;">
<table class="table">
<thead>
<tr class="table-active">
<th scope="col" style="width:60%">
<%=HttpUtil.filter(board.getBbsTitle())%><br/>
<%=HttpUtil.filter(board.getBbsName())%>
<a href="mailto:<%=board.getBbsEmail()%>" style="color:#828282;"><%=board.getBbsEmail()%></a>
</th>
<th scope="col" style="width:40%" class="text-right">
조회 : <%=StringUtil.toNumberFormat(board.getBbsReadCnt())%><br/>
<%=board.getRegDate()%>
</th>
</tr>
</thead>
<tbody>
<tr>
<td colspan="2"><pre><%=StringUtil.replace(HttpUtil.filter(board.getBbsContent()),"\n", "<br />")%></pre></td>
</tr>
</tbody>
<tfoot>
<tr>
<td colspan="2"></td>
</tr>
</tfoot>
</table>
</div>
<button type="button" id="btnList" class="btn btn-secondary">리스트</button>
<%
if(StringUtil.equals(cookieUserId, board.getUserId()))
{
%>
<button type="button" id="btnUpdate" class="btn btn-secondary">수정</button>
<button type="button" id="btnDelete" class="btn btn-secondary">삭제</button>
<%
}
%>
<br/>
<br/>
</div>
<%
}
%>
<form name="bbsForm" id="bbsForm" method="post">
<input type="hidden" name="bbsSeq" value="<%=bbsSeq%>" />
<input type="hidden" name="searchType" value="<%=searchType%>" />
<input type="hidden" name="searchValue" value="<%=searchValue%>" />
<input type="hidden" name="curPage" value="<%=curPage%>" />
</form>
</body>
</html>
- 지난 시간 없는 게시물을 검색창에 치고 들어 갔을 때(게시물이 없으면 게시판에 없으니 누르고 들어갈 수는 없다) 이런 alert창을 띄우는 것까지 했다. 이 밖에도 다양한 예외 처리를 해줘야하기 때문에 이어서 추가로 작성해본다.
47 else 게시물이 있을 때
52 리스트 버튼을 눌렀을 때
- 그냥 돌아가는 게 아니라 돌아 갔을 때 전에 보던 페이지 그대로 들고가기 위해서 bbsForm을 들고 간다.
- 게시글 작성자가 아니더라도 리스트 버튼은 보여줘야함
58 쿠키 아이디(로그인한 아이디)와 보드아이디(글쓴이)가 동일하다면 수정/삭제 버튼을 띄운다.
![]() 아래의 html 부분에서 이미 버튼을 숨겨 뒀기 때문에 58번에서 if처리를 하지 않아도 오류는 없지만 버튼이 없는데 기능을 만들 이유가 없으니 똑같이 기능도 숨겨 둔다. |
61 수정 버튼을 누르면 update.jsp 페이지로 이동(추가 예정)
- 수정 페이지가 뜬다.
66 삭제 버튼을 누르면 confirm창이 뜨고 확인(true)를 누르면 delete.jsp에서 지정된 코드가 실행
- 여기선 따로 화면을 생성하지 않았기 때문에 어떠한 창이 뜨는 게 아니라 삭제 기능만 실행됨
** 여기까지 버튼에 어떤 기능만 들어갈 건지 설정만 해둔 상태로 실질적인 기능은 입혀지지 않았다.
** view.jsp에서 중요
document.bbsForm.action = "/board/list.jsp"; <= or [ update.jsp / delete ]
document.bbsForm.submit();
어떤 이유에서든지 리스트로 돌아갈 때 원래 내가 가지고 있던 정보를 가지고 돌아가기 위해서 update.jsp를 작성할 때에도 delete.jsp를 작성할 때에도 html문 가장 하단에 폼을 히든으로 숨겨둬야한다. 때문에 searchType과 searchValue를 사용하지 않더라도 들고 다니는 이유기도 하다.
< web.dao / boardDao.java >
- 게시물 삭제 메소드 boardDelete() 만들긔♡
//게시물 삭제
public int boardDelete(long bbsSeq)
{
int count = 0;
Connection conn = null;
PreparedStatement pstmt = null;
StringBuilder sql = new StringBuilder();
sql.append("DELETE FROM TBL_BOARD ");
sql.append(" WHERE BBS_SEQ = ? ");
try
{
conn = DBManager.getConnection();
pstmt = conn.prepareStatement(sql.toString());
pstmt.setLong(1, bbsSeq);
count = pstmt.executeUpdate();
}
catch(SQLException e)
{
logger.error("[BoardDao] boardDelete SQLException", e);
}
finally
{
DBManager.close(pstmt, conn);
}
return count;
}
- 지금까지 메소드는 많이 만들었지만 삭제는 처음이니까 간단하게 설명을 하자면 DB에 있는 정보를 삭제하기 위한 쿼리를 작성하는 거니까 ResultSet은 필요 없음~
- pstmt.setLong(1, bbsSeq) 이것도 전에 만든 메소드 처럼 bbsSeq 글 한 개만 삭제만 하는 거니까 idx를 사용하지 않고, 1만 사용하면 된다.
< board / delete.jsp >
- 따로 보여주는 페이지를 만들진 않음
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="com.icia.common.util.StringUtil" %>
<%@ page import="com.icia.web.util.HttpUtil" %>
<%@ page import="com.icia.web.util.CookieUtil" %>
<%@ page import="com.icia.web.dao.BoardDao" %>
<%@ page import="com.icia.web.model.Board" %>
<%@ page import="com.icia.web.model.User" %>
<%@ page import="org.apache.logging.log4j.LogManager" %>
<%@ page import="org.apache.logging.log4j.Logger" %>
<%
//로그
Logger logger = LogManager.getLogger("/board/delete.jsp");
HttpUtil.requestLogString(request, logger);
//쿠키아이디 조회 //게시글 쓴 사람과 같아야 하니까
String cookieUserId = CookieUtil.getValue(request, "USER_ID");
//성공실패
boolean bSuccess = false;
String errorMsg = "";
long bbsSeq = HttpUtil.get(request, "bbsSeq", (long)0);
if(bbsSeq > 0)
{ //모든 경우의 수를 생각해야한다.
BoardDao boardDao = new BoardDao();
Board board = boardDao.boardSelect(bbsSeq);
if(board != null)
{
if(StringUtil.equals(cookieUserId, board.getUserId()))
{
if(boardDao.boardDelete(bbsSeq) > 0)
{
bSuccess = true;
}
else
{
errorMsg = "게시물 삭제중 오류가 발생했습니다.";
}
}
else
{ //내 게시물이 아님
errorMsg = "사용자가 작성한 게시물이 아닙니다.";
}
}
else
{
errorMsg = "게시물 정보가 올바르지 않습니다.";
}
}
else
{
errorMsg = "게시물 키 값이 올바르지 않습니다.";
}
%>
<!DOCTYPE html>
<html>
<head>
<%@ include file="/include/head.jsp" %>
<script>
$(function(){
<%
if(bSuccess == true)
{
%>
alert("삭제되었습니다.");
<%
}
else
{
%>
alert("<%=errorMsg%>");
<%
}
%>
location.href = "/board/list.jsp";
});
</script>
</head>
<body>
</body>
</html>
초기화 세팅 작업
16 수정/삭제할 때 접속자와 글쓴이가 같아야 권한이 생기니까 필요
19/20 성공/실패 유무를 가르고 메세지를 띄우는 기능 초기화
22 게시글 번호의 초기값은 0으로 해둠
여기서는 새로운 페이지로 넘어간 게 아니기 때문에 폼의 정보를 세팅할 필요가 없다!
대부분 기존에 했던 작업들이라 익숙해지기만 하면 됨
24 게시물이 있다면
- null이 아닌 이유는 long 타입으로 지정했고, 값이 없는 게 0이니까 여기서는 0보다 크다는 전제를 깔아야 게시물이 있다는 뜻이다.
52 (else) 게시물이 없다는 뜻
26-27 boardDao/board 객체 선언
- 보통은 게시판에서 게시물을 클릭해 들어와서 삭제를 할 거라고 생각을 하지만 그렇지 않고 주소를 통해서 들어오는 경우도 있다. 개발자들은 이러한 예외처리들을 하나하나 계산해나가야한다. 때문에 게시물 번호가 있는지 확인을 할 필요가 있다.
26 메소드가 들어 있는 객체 선언
27 board에는 BoardDao에서 갖고 온 boardSelect를 이용해 한 건의 글을 불러온다.
- PK인 bbsSeq로 갖고 와야만 함
29 갖고 온 글이 비어 있지 않다면!
- 여기서는 board가 정보들을 담고 있는 객체니까 null을 사용해야 하는 것이다.
31 접속자와 게시자가 같다면
42 (else) 내 게시물이 아니라면 '사용자가 작성한 게시물이 아닙니다.'
33 객체가 0이 아니라면(들어있다면) 해당하는 글을 지운다.
35 성공으로 바꿔줌
39 else 실패라면 오류를 띄어줌
- 위쪽에서 jsp의 결과(bSuccess)가 나오면 아래에서 사용자에게 답을 알려준다.
64 삭제했습니다!
70 실패이유 입니다!
77 삭제하고 바로 게시판으로 이동 (bbsForm을 가지고 가야 됨)
< board / upadate.jsp >
- 뼈대(html)만 넣어 놓고 메소드부터 만든다.
< / board / BoardDao.jsp >
- boardUpdate() 게시글 수정 메소드 만들긔♡
//게시글 수정
public int boardUpdate(Board board)
{
int count = 0;
Connection conn = null;
PreparedStatement pstmt = null;
StringBuilder sql = new StringBuilder();
sql.append("UPDATE TBL_BOARD ");
sql.append(" SET BBS_TITLE = ?, ");
sql.append(" BBS_CONTENT = ? ");
sql.append(" WHERE BBS_SEQ = ? ");
try
{
int idx = 0;
conn = DBManager.getConnection();
pstmt = conn.prepareStatement(sql.toString());
pstmt.setString(++idx, board.getBbsTitle());
pstmt.setString(++idx, board.getBbsContent());
pstmt.setLong(++idx, board.getBbsSeq());
count = pstmt.executeUpdate();
}
catch(SQLException e)
{
logger.error("[BoardDao2] boardUpdate SQLException", e);
}
finally
{
DBManager.close(pstmt, conn);
}
return count;
}
- 이번엔 넣어 줄 정보가 많으니까 idx를 사용해서 넣어줌
- 그거 말고는 기존의 메소드의 원리와 같기 때문에 큰 설명은 안 함
< board / upadate.jsp >
- 이번엔 수정 페이지와 기능을 넣어 볼 거다.
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="com.icia.common.util.StringUtil" %>
<%@ page import="com.icia.web.util.CookieUtil" %>
<%@ page import="com.icia.web.util.HttpUtil" %>
<%@ page import="com.icia.web.dao.BoardDao" %>
<%@ page import="com.icia.web.dao.UserDao" %>
<%@ page import="com.icia.web.model.Board" %>
<%@ page import="com.icia.web.model.User" %>
<%@ page import="org.apache.logging.log4j.LogManager" %>
<%@ page import="org.apache.logging.log4j.Logger" %>
<%
//콘솔창에 로그 작성하기
Logger logger = LogManager.getLogger("/board/update.jsp");
HttpUtil.requestLogString(request, logger);
//로그인을 확인하기 위한
String cookieUserId = CookieUtil.getValue(request, "USER_ID");
//리스트로 다시 돌아가기 위한
Long bbsSeq = HttpUtil.get(request, "bbsSeq", (long)0);
String searchType = HttpUtil.get(request, "searchType", "");
String searchValue = HttpUtil.get(request, "searchValue", "");
long curPage = HttpUtil.get(request, "curPage", (long)1);
//얜 0으로 하면 안 됨. 왜냐면 페이지는 1부터 시작이니까~
BoardDao boardDao = new BoardDao();
Board board = boardDao.boardSelect(bbsSeq);
if(board != null)
{
//본인 게시물이 아니면 수정 못함
//해당 게시판를 작성한 사용자의 정보 가져오기.
if(!StringUtil.equals(cookieUserId, board.getUserId()))
{
board = null;
}
}
%>
<!DOCTYPE html>
<html>
<head>
<%@ include file="/include/head.jsp" %>
<script>
$(function(){
<%
if(board == null)
{
%>
alert("게시물이 존재하지 않습니다.");
location.href = "/board/list.jsp";
<%
}
else
{
%>
$("#btnList").on("click", function(){
document.bbsForm.action = "/board/list.jsp";
document.bbsForm.submit();
});
$("#btnUpdate").on("click", function(){
if($.trim($("#bbsTitle").val()).length <= 0)
{
alert("제목을 입력하세요.");
$("#bbsTitle").val("");
$("#bbsTitle").focus();
return;
}
if($.trim($("#bbsContent").val()).lenth <= 0)
{
alert("내용을 입력하세요.");
$("#bbsContent").val("");
$("#bbsContent").focus();
return;
}
document.updateForm.submit();
});
<%
}
%>
});
</script>
</head>
<body>
<%
if(board != null)
{
%>
<%@ include file="/include/navigation.jsp" %>
<div class="container">
<h2>게시물 수정</h2>
<form name="updateForm" id="updateForm" action="/board/updateProc.jsp" method="post" >
<!--<form name="updateForm" id="updateForm" action="/board/updateFileProc.jsp" method="post" enctype="multipart/form-data">-->
<input type="text" name="bbsName" id="bbsName" maxlength="20" style="ime-mode:active;" value="<%=board.getBbsName()%>" class="form-control mt-4 mb-2" placeholder="이름을 입력해주세요." readonly />
<input type="text" name="bbsEmail" id="bbsEmail" maxlength="30" style="ime-mode:inactive;" value="<%=board.getBbsEmail()%>" class="form-control mb-2" placeholder="이메일을 입력해주세요." readonly />
<input type="text" name="bbsTitle" id="bbsTitle" maxlength="100" style="ime-mode:active;" value="<%=board.getBbsTitle()%>" class="form-control mb-2" placeholder="제목을 입력해주세요." required />
<div class="form-group">
<textarea class="form-control" rows="10" name="bbsContent" id="bbsContent" style="ime-mode:active;" placeholder="내용을 입력해주세요" required><%=board.getBbsContent()%></textarea>
</div>
<!--수정버튼 눌렀을 때 타고 갈 폼-->
<input type="hidden" name="bbsSeq" value="<%=bbsSeq%>" />
<input type="hidden" name="searchType" value="<%=searchType%>" />
<input type="hidden" name="searchValue" value="<%=searchValue%>" />
<input type="hidden" name="curPage" value="<%=curPage%>" />
</form>
<div class="form-group row">
<div class="col-sm-12">
<button type="button" id="btnUpdate" class="btn btn-primary" title="수정">수정</button>
<button type="button" id="btnList" class="btn btn-secondary" title="리스트">리스트</button>
</div>
</div>
</div>
<!--리스트버튼 눌렀을 때 타고 갈 폼-->
<form name="bbsForm" id ="bbsForm" method="post">
<input type="hidden" name="bbsSeq" value="<%=bbsSeq%>" />
<input type="hidden" name="searchType" value="<%=searchType%>" />
<input type="hidden" name="searchValue" value="<%=searchValue%>" />
<input type="hidden" name="curPage" value="<%=curPage%>" />
</form>
<%
}
%>
</body>
</html>
<세팅 작업>
- 세팅 작업에 필요한 이 값들은 view.jsp에서 넘어 온 값을 이용해서 세팅한 것이다.
어딜 통해서 값이 들어오고 나가는지가 정말 중요함!!
26-27 boardSelect() 메소드를 이용해서 하나의 게시물을 갖고 옴(자세한 설명은 위 delete 에도 있음)
29 보드 안에 객체가 들어 있다면(board의 타입은 객체니까 0이 아니라 null)
33-35 접속자와 게시자가 같지 않다면 board의 값을 null로 만듦 수정을 못 하도록 값을 날려버리는 것
수정할 게시물이 없을 때
- else는 아래에서 보여줌
수정할 게시물이 있을 때 ( 접속자와 게시자가 같을 때 )
- 너무 길어서 캡쳐를 못 함
<body>
<%
if(board != null)
{
%>
<%@ include file="/include/navigation.jsp" %>
<div class="container">
<h2>게시물 수정</h2>
<form name="updateForm" id="updateForm" action="/board/updateProc.jsp" method="post" >
<!--<form name="updateForm" id="updateForm" action="/board/updateFileProc.jsp" method="post" enctype="multipart/form-data">-->
<input type="text" name="bbsName" id="bbsName" maxlength="20" style="ime-mode:active;" value="<%=board.getBbsName()%>" class="form-control mt-4 mb-2" placeholder="이름을 입력해주세요." readonly />
<input type="text" name="bbsEmail" id="bbsEmail" maxlength="30" style="ime-mode:inactive;" value="<%=board.getBbsEmail()%>" class="form-control mb-2" placeholder="이메일을 입력해주세요." readonly />
<input type="text" name="bbsTitle" id="bbsTitle" maxlength="100" style="ime-mode:active;" value="<%=board.getBbsTitle()%>" class="form-control mb-2" placeholder="제목을 입력해주세요." required />
<div class="form-group">
<textarea class="form-control" rows="10" name="bbsContent" id="bbsContent" style="ime-mode:active;" placeholder="내용을 입력해주세요" required><%=board.getBbsContent()%></textarea>
</div>
<!--수정버튼 눌렀을 때 타고 갈 폼-->
<input type="hidden" name="bbsSeq" value="<%=bbsSeq%>" />
<input type="hidden" name="searchType" value="<%=searchType%>" />
<input type="hidden" name="searchValue" value="<%=searchValue%>" />
<input type="hidden" name="curPage" value="<%=curPage%>" />
</form>
<div class="form-group row">
<div class="col-sm-12">
<button type="button" id="btnUpdate" class="btn btn-primary" title="수정">수정</button>
<button type="button" id="btnList" class="btn btn-secondary" title="리스트">리스트</button>
</div>
</div>
</div>
<!--리스트버튼 눌렀을 때 타고 갈 폼-->
<form name="bbsForm" id ="bbsForm" method="post">
<input type="hidden" name="bbsSeq" value="<%=bbsSeq%>" />
<input type="hidden" name="searchType" value="<%=searchType%>" />
<input type="hidden" name="searchValue" value="<%=searchValue%>" />
<input type="hidden" name="curPage" value="<%=curPage%>" />
</form>
<%
}
%>
</body>
- null이 아닐 때에만 수정페이지를 보여준다.
- 하드 코딩 돼 있던 부분들에 변수명을 <%= 이런식으로 %> 넣어준다.
- 가장 하단에는 리스트 버튼을 눌렀을 때 타고 갈 폼(hidden)도 넣어준다.
(참고 : 중간에 수정해서 번호가 다름)
이렇게 게시물이 있을 때(else)는 버튼의 기능도 열어주어야 한다.
52 btnList 버튼을 누르면 폼에 있는 정보들을 데리고 게시판으로 돌아간다.
57-75 수정 버튼을 눌렀을 때
58 제목의 길이가 0이라면 alert창을 띄우고 포커스를 맞춘다.
- $().val(""); 으로 null처리를 해주는 이유는 trim을 했지만 공백이 있을 수 있으니까~
66 내용의 길이가 0이라면 alert창을 띄우고 포커스를 맞춘다.
74 업데이트폼(수정 페이지)도 서브밋 해준다.
게시물 수정폼(Form)은 어디로 가느냐
바로 action="updateProc.jsp"이다.
< / board / updateProc.jsp >
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="com.icia.common.util.StringUtil" %>
<%@ page import="com.icia.web.util.CookieUtil" %>
<%@ page import="com.icia.web.util.HttpUtil" %>
<%@ page import="com.icia.web.dao.BoardDao" %>
<%@ page import="com.icia.web.model.Board" %>
<%@ page import="org.apache.logging.log4j.LogManager" %>
<%@ page import="org.apache.logging.log4j.Logger" %>
<%
//콘솔창에 로그 작성하기
Logger logger = LogManager.getLogger("/board/updateProc.jsp");
HttpUtil.requestLogString(request, logger);
String cookieUserId = CookieUtil.getValue(request, "USER_ID");
boolean bSuccess = false;
String errorMsg = "";
long bbsSeq = HttpUtil.get(request, "bbsSeq", (long)0);
String searchType = HttpUtil.get(request, "searchType", "");
String searchValue = HttpUtil.get(request, "searchValue", "");
long curPage = HttpUtil.get(request, "curPage", (long)1);
String bbsTitle = HttpUtil.get(request, "bbsTitle", ""); //수정한 값
String bbsContent = HttpUtil.get(request, "bbsContent", ""); //나중 문제 //수정한 값
//매개변수 맞게 넘어 왔는지 //Seq 타이틀 컨텐츠
if(bbsSeq > 0 && !StringUtil.isEmpty(bbsTitle) && !StringUtil.isEmpty(bbsContent))
{
//파라미터는 없는데 들어오는 경우도 있으니 예외처리를 모두 해줘야 한다.
BoardDao boardDao = new BoardDao();
Board board = boardDao.boardSelect(bbsSeq);
//DB에 들어가있는 값을 그대로 불러온 것(원본)
//로그인정보와 게시물에 대한 userId 동일한지
if(board != null && StringUtil.equals(cookieUserId, board.getUserId()))
{
board.setBbsTitle(bbsTitle);
board.setBbsContent(bbsContent);
if(boardDao.boardUpdate(board) > 0)
{
bSuccess = true;
}
else
{
errorMsg = "게시물 수정 중 오류가 발생했습니다.";
}
}
else
{
errorMsg = "게시물이 존재하지 않습니다.";
}
}
else
{
errorMsg = "게시물 수정 값이 올바르지 않습니다.";
}
%>
<!DOCTYPE html>
<html>
<head>
<%@ include file="/include/head.jsp" %>
<script>
$(document).ready(function(){
<%
if(bSuccess == true)
{
%>
alert("게시물이 수정 되었습니다.");
document.bbsForm.action = "/board/view.jsp";
document.bbsForm.submit();
<%
}
else
{
%>
alert("<%=errorMsg%>");
location.href = "/board/list.jsp";
<%
}
%>
});
</script>
</head>
<body>
<form name="bbsForm" id="bbsForm" method="post">
<input type="hidden" name="bbsSeq" value="<%=bbsSeq%>" />
<input type="hidden" name="searchType" value="<%=searchType%>" />
<input type="hidden" name="searchValue" value="<%=searchValue%>" />
<input type="hidden" name="curPage" value="<%=curPage%>" />
</form>
</body>
</html>
값 세팅
24-25 수정한 제목과 내용 값이 담길 예정
- 나머지는 기존과 동일하다
28 게시글이 있고, 제목과 내용에도 값이 들어 있나?
55 else errorMsg = "게시물 수정값이 올바르지 않습니다."
31-32 여기서 정의하는 게시물은 수정되지 않은 방금 DB에서 막 불러온 원본임
36 게시물이 정상이고, 접속자와 게시자가 동일한가?
50 else errorMsg = "게시물이 존재하지 않습니다."
35-39 board.setxxXX()으로 수정한 값을 DB에 보내준다.
41-44 board에 담긴 값을 가지고 boardDao.boardUpdate()를 이용해 업데이트를 해준다.
- 그 값이 0보다 크다면(들어 있다면) 44 성공
45 else errorMsg = "게시물 수정 중 오류가 발생했습니다."
- updateProc.jsp의 경우에도 따로 페이지가 존재하지 않고 기능만 존재하는 파일이다.
- 위에서 bSuccess가 정상적으로 처리 됐다면 70~72에 의해서 게시물 수정이 되고, bbsForm을 가지고 view.jsp로 이동을 한다.
- 실패를 했다면 alert에 위에서 설정했던 오류 중 하나가 뜰 것이다. 마찬가지로 bbsForm을 가지고 이번엔 list로 이동한다. view가 아니라 list로 이동하는 이유는 없는 게시글일 경우도 있기 때문
이것으로 게시판 만들기 기초는 끝났다.
금요일 수업은 4시간 밖에 못 잔 상태로 들어서 머리에 잘 들어오지도 않았고 500번대 오류도 났음ㅠㅠ 혼자 어찌어찌 해결하긴 했지만 수면의 질이 이렇게 중요하구나 또 한 번 느꼈다. 그래도 스프링 배우기 전에 깨우쳐서 다행이고, 다음주는 최대한 수면 조절도 하면서 수업 듣는 걸로~~ 소원이 있다면 최대한 수업시간에 빡 집중해서 이해하고 저녁에는 빨리 블로그 정리 하고 끝내고 싶다. 그게 맘처럼 쉽지 않지만 아직 어렵다고 느끼는데 벌써 JSP가 끝났다니 너무 아쉽고 걱정이 많이 된다. 나 프로젝트 할 수 있나??
'개발일지 > JSP' 카테고리의 다른 글
[JSP] 권장되는 비교 연산자 (0) | 2025.03.07 |
---|---|
[JSP] request 특정값에 따라 다른 헤더를 포함하고 싶을 때 (0) | 2024.11.14 |
[JSP] 게시판_페이징_검색_게시물 띄우기 (0) | 2021.12.03 |
[JSP] 게시판 구성(게시판 조회 LOWNUM) (0) | 2021.12.02 |
[JSP] 게시판 구성하기 (feat.시퀀스쿼리) (0) | 2021.12.01 |