본문 바로가기

웹 개발 한걸음

[Servlet] JSTL의 조건문으로 HTML 조건처리 하기 (수정)

 

 

** 이전까지 jsp프로젝트에서 로그인 여부에 따라 로그인 버튼이 보일지 로그아웃 버튼이 보일지를 자바 코드 블럭을 이용하여 조건 처리하였는데 JSP에서 자바 코드 블럭 완전히 빼기 위해서 JSTL을 이용해 로그인 여부를 확인하고 조건 처리를 하려고 한다.

 

** 될까 안될까 싶어서 나중으로 미뤘는데 생각해보니 너무 쉬운 문제여서 호다닥 바꿨다.

 

** EL에서 Scope가 빠져있었다. 꼭 넣어줘야 범위 설정이 된다.

 


 

** 기존 자바 코드 블럭을 이용한 html 조건 처리

                        <%
                            String userID = null;
                            if(session.getAttribute("userID") != null){
                                userID = (String)session.getAttribute("userID");

                            }

                        %>

			<%
				//세션이 없을 때
				if(userID == null){
			%>
			
			<!-- 오른쪽 상단에 드롭다운 만들기 -->
			<ul class="nav navbar-nav navbar-right">
				<li class="dropdown">
					<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button"
					aria-haspopup="true" aria-expanded="false">접속하기<span class="caret"></span></a>
					<!-- 드롭다운의 메뉴 -->
					<ul class="dropdown-menu">
						<!-- 세션이 없으므로 드롭다운에는 로그인과 회원가입이 보이도록-->
						<li><a href="login">로그인</a></li> 
						<li><a href="join">회원가입</a></li>
					</ul>
				</li>
			</ul>
			<%
				//세션이 있을 때
				}else if(userID != null){			
			%>
			<!-- 오른쪽 상단에 드롭다운 만들기 -->
			<ul class="nav navbar-nav navbar-right">
				<li class="dropdown">
					<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button"
					aria-haspopup="true" aria-expanded="false">회원관리<span class="caret"></span></a>
					<!-- 드롭다운의 메뉴 -->
					<ul class="dropdown-menu">
						<!-- 세션이 있을 때는 로그아웃만 보이도록 -->
						<li><a href="logout">로그아웃</a></li> 
					</ul>
				</li>
			</ul>
			<%
				}
			%>
		</div>
	</nav>

 

  • 코드블럭으로 세션을 확인하고 코드블럭으로 조건처리를 하였는데
  • 코드블럭을 아예 빼기 위해 JSTL을 사용할 것이다.

 

 

 


 

** JSTL 조건문을 이용한 html 조건 처리

	   <!-- 로그인이 안됐을 때 -->
        		<e:if test="${sessionScope.userID == null }">
			<!-- 오른쪽 상단에 드롭다운 만들기 -->
			<ul class="nav navbar-nav navbar-right">
				<li class="dropdown">
					<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button"
					aria-haspopup="true" aria-expanded="false">접속하기<span class="caret"></span></a>
					<!-- 드롭다운의 메뉴 -->
					<ul class="dropdown-menu">
						<!-- 세션이 없으므로 드롭다운에는 로그인과 회원가입이 보이도록-->
						<li><a href="login">로그인</a></li> 
						<li><a href="join">회원가입</a></li>
					</ul>
				</li>
			</ul>
			</e:if>
      	   <!-- 로그인 되어있을 때 -->
			<e:if test="${sessionScope.userID != null }">
			<!-- 오른쪽 상단에 드롭다운 만들기 -->
			<ul class="nav navbar-nav navbar-right">
				<li class="dropdown">
					<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button"
					aria-haspopup="true" aria-expanded="false">회원관리<span class="caret"></span></a>
					<!-- 드롭다운의 메뉴 -->
					<ul class="dropdown-menu">
						<!-- 세션이 있을 때는 로그아웃만 보이도록 -->
						<li><a href="logout">로그아웃</a></li> 
					</ul>
				</li>
			</ul>
			</e:if>

 

  • JSTL의 if 태그를 이용하여 조건 처리를 해주었다.
  • test가 조건식인데 session에서 userID를 찾아서 null일 때와 null이 아닐 때를 비교하면 된다.
  • 저장소에서 찾을 때는 Scope를 이용하여 범위를 한정할 수 있다.  
  •  page  ->  request  -> session  -> application  순으로 탐색을 한다.