Template
Template 게시판, 회원관리, 댓글관리 나눠서 관리하기6(mapper, service, controller 비밀글 비밀번호)
머리방울
2022. 8. 10. 23:45

비밀글 표시가 있는 글제목을 눌렀을 때 비밀글 비밀번호 입력 jsp로 가도록 만들 것이다.
1. 게시글 목록jsp
비밀글이라도 관리자의 경우에는 비밀번호 칠 필요 없이 무조건 들어가도록 설정하고
그 외 회원에게는 비밀글은 비밀번호를 작성해서 맞으면 글을 볼 수 있고,
공개글은 그냥 볼 수 있도록 설정할 것이라 choose when otherwise를 이용할 것이다.
우선 나는 sql Developer에서 아래의 쿼리문을 이용해서 한사람을 관리자로 만들어 주었다.

<c:choose>
1) 관리자일 때
<c:when test="${sessionScope.loginInfo.isAdmin eq 'Y'}">
<a href ="boardDetail.bo?boardNum=${board.boardNum }">${board.title }</a>
</c:when>
<c:otherwise>
<c:choose>
2) 관리자 외 회원이 비밀글 보고자 할 때
<c:when test="${board.isPrivate eq 'Y'}">
비밀글 비밀번호가 맞는지 파악하기 위해 비밀글 비밀번호 데이터와
상세페이지 가기위해서 게시글 번호가 필요하여 두가지 자료를 보냈다
<a href ="check_boardPw.bo?boardPw=${board.boardPw}&boardNum=${board.boardNum}">${board.title }</a>
</c:when>
3) 관리자 제외한 회원이 공개글 보고자 할 때
<c:otherwise>
<a href ="boardDetail.bo?boardNum=${board.boardNum}">${board.title }</a>
</c:otherwise>
</c:choose>
</c:otherwise>
</c:choose>
2. controller
else if(command.equals("/check_boardPw.bo")) {
각각 나눠서 데이터 보내준다!
String boardPw = request.getParameter("boardPw");
request.setAttribute("boardPw", boardPw);
int boardNum = Integer.parseInt(request.getParameter("boardNum"));
request.setAttribute("boardNum", boardNum);
contentPage="checkBoardPw.jsp";
}
3. 비밀글 비밀번호jsp (자바스크립트 방식)
자바스크립트 방식을 첨가하여 만들 것이다.
비밀글 비밀번호
보낸 데이터 중 비밀글 비밀번호boardPw는 히든으로 보내어
실제로 이용자가 비밀번호 입력했을 때 비교할 수 있도록 할 것이다.
1) 실제 비밀번호 id를 realPw
<input type="hidden" value="${boardPw }" id="realPw">
2) 이용자에게 받을 비밀번호 id를 inputPw
<input type="password" id="inputPw">
controller에서 받은 boardNum 데이터를
확인 버튼 클릭시 함수checkPw가 실행될 수 있도록 변수로 넣어준다.
<input type="button" value="확인" onclick="checkPw(${boardNum});">
<script type="text/javascript">
함수 function
function checkPw(boardNum){
1) id가 inputPw인 태그를 가져오겠다
var inputPw = document.getElementById('inputPw');
2) inputPw의 value 속성값을 가져옴(키보드에서 받은 값)
var a = inputPw.value;
3) id가 realPw인 태그를 가져오겠다
var realPw = document.getElementById('realPw');
4) realPw value 속성값 가져옴(데이터에 저장된 값)
var b = realPw.value;
if(a==b){
location.href='boardDetail.bo?boardNum='+boardNum;
}
else{
alert('다시 입력하세요.')
기존 작성한 값 모두 지워지도록 설정
inputPw.value='';
}
}
</script>