Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

게으른 완벽주의자의 개발자 도전기

Template 게시판, 회원관리, 댓글관리 나눠서 관리하기6(mapper, service, controller 비밀글 비밀번호) 본문

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>