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>