로그인 상태에 따라 게시물 상세페이지 조회 제어하기

1 분 소요

로그인 상태에 따라 게시물 상세페이지 조회 제어하기

1. 로그인 상태에 관계 없이 상세 페이지로 넘어가는 코드

  • 현재 상태에서는 로그인 상태에 대한 체크를 하지 않기 때문에 제어를 할 수 없다.
<a href="detail.jsp?no=${board.no }"> 
  <c:out value="${board.title }"/>
</a>

2. 미 로그인 상태일 때, doAction()함수로 confirm 창을 띄우는 방법

  • 이처럼 로그인이 되어있는지 JSTL 문법으로 먼저 검증하면, 서블릿코드로 변환되어 조건에 맞는 스크립트문만 웹브라우저에 출력된다.

  • 문제 : href 속성이 없어서 css의 hover, link 등의 효과가 적용되지 않는다.

<script type="text/javascript">
	function doAction(no){
		<c:choose>
			<c:when test="${ not empty userVO}">
				location.href = 'detail.jsp?no=' + no;
			</c:when>
			<c:otherwise>
				if(confirm('로그인이 필요한 서비스입니다.\n 로그인페이지로 이동하시겠습니까?'))
					location.href = "/Mission-Web/jsp/login/login.jsp"
			</c:otherwise>
		</c:choose>
	}	
</script>
<a onclick="doAction()">
  <c:out value="${board.title }"/>
</a>

3. a태그에서 href="#"으로 설정하기

  • 문제 : href=”#”으로 설정하면, css 효과는 적용되지만 uri 뒤에 #이 붙게 되어서 좋은 방법은 아니다.
<script type="text/javascript">
	function doAction(no){
		<c:choose>
			<c:when test="${ not empty userVO}">
				location.href = 'detail.jsp?no=' + no;
			</c:when>
			<c:otherwise>
				if(confirm('로그인이 필요한 서비스입니다.\n 로그인페이지로 이동하시겠습니까?'))
					location.href = "/Mission-Web/jsp/login/login.jsp"
			</c:otherwise>
		</c:choose>
	}	
</script>
<a href="#" onclick="doAction()">
  <c:out value="${board.title }"/>
</a>

4. a태그의 href 속성에 javascript를 명시하기

<script type="text/javascript">
	function doAction(no){
		<c:choose>
			<c:when test="${ not empty userVO}">
				location.href = 'detail.jsp?no=' + no;
			</c:when>
			<c:otherwise>
				if(confirm('로그인이 필요한 서비스입니다.\n 로그인페이지로 이동하시겠습니까?'))
					location.href = "/Mission-Web/jsp/login/login.jsp"
			</c:otherwise>
		</c:choose>
	}	
</script>
<a href="javascript:doAction(${board.no })">
  <c:out value="${board.title }"/>
</a>