티스토리 뷰

VIEW/JSP&SERVLET

[JSP] JSTL

찰떡쿠키부스트 2017. 12. 1. 15:58

 

JSTL


:사용자가 직접만들어서 쓸 수 있는 costom tag 중 많이 쓰는것들을 모아 표준으로만든것.

태그를 사용하려면 taglib 지시자를 선언해줘야됨

ex) 웬만하면 c(코어)쓰고 잘 안바꾼다.
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>



#코어태그

1)
<c:set var="변수명" value="값" [scope="영역"] />

ex)
<c:set var="a" value="bbb"/>
<c:set var="a">bbb</c:set>
둘다 똑같은 밑의 효과
  var a=bbb;
출력 : ${a}--> bbb

2)
<c:set target"대상" property="프로퍼티이름" value="값" />
target: 표현식(<%=%>) or EL(${}) 형식 (자바빈,map만 받음)
property: 자바빈:set이름() , map map.put(이름,값) 을 제공받아야된다.

3)
<c:remove var="이름" [scope="영역"] />

4) if문 비슷
<c:if test="조건">
...
</c:if>

5) swich랑 else if 섞은느낌
<c:choose>
 <c:when test="조건">
 ...
 </c:when>
 ...
 <c:otherwise>
 ...
 </c:otherwise>
</c:choose>


6) for문 비슷
<c:forEach var="변수" items="아이템" begin="시작" end="끝" varStatus="이름">
 ...
</c:forEach>

items--> map,배열,Collection 만 올 수있음

varStatus  : 루프정보를 담는 객체
 -index  : 현재인덱스
 -count  : 루프 실행 횟수
 -begin  : begin 속성값
 -end    : end 속성값
 -step   : step 속성값
 -first  : 현재 실행이 처음일 경우 true
 -last   : 현재 실행이 마지막일 경우 true
 -current   : 컬렉션 중 현재 루프에서 사용할 객체


실전예제 1)


top.jsp 태그로다바꾸기
---------------------
<%
 String id="Guest";
 if(session.getAttribute("id")!=null) id=(String)session.getAttribute("id");
%>
<div align="center">TOP</div> <br>
<div align="right"><%=id%>님 즐거운 시간!!</div>

바꾼거
-----------------------
<c:set var="id" value="Guest" scope="session"/>
<c:if test="${sessionScope.id}!=null">
<c:set var="id" value="${sessionScope.id}" />
</c:if>
<div align="center">TOP</div> <br>
<div align="right"> ${id} 님즐거운 시간!!</div>


 

실전예제 2)

​menu.jsp
==========================
<%@ page language="java" contentType="text/html; charset=UTF-8"
 pageEncoding="UTF-8"%>
<%
int num=0;
if(application.getAttribute("activeCNT")!=null){
 num=(int)application.getAttribute("activeCNT");
}
%>
총방문자수 : <br>
현재접속자수:<%=num%><br>
<%
 if(session.getAttribute("id")==null){
%>
 <a href="t1.jsp?cp=loginForm.jsp">로그인</a>
<% }else{ %>
 <a href="logout.jsp">로그아웃</a>
<% } %>


바꾼거
===============================
<%@ page language="java" contentType="text/html; charset=UTF-8"
 pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<c:set var="num" value="0" />
<c:if test="${applicationScope.activeCNT != null}">
 <c:set var="num" value="${applicationScope.activeCNT}" />
</c:if>

총방문자수 : <br>
현재접속자수:${num}<br>

<c:if test="${sessionScope.id == null}">
 <a href="t1.jsp?cp=loginForm.jsp">로그인</a>
</c:if>
<c:if test="${sessionScope.id != null}">
 <a href="logout.jsp">로그아웃</a>
</c:if>


​실전예제3)


mvc의 list.jsp 바꾸기
=============================================
<%
List<MemberBean> list=(List<MemberBean>)request.getAttribute("memberList");
for(MemberBean bean:list){
out.println(bean.getId()+"<br/>");
 }
%>

바꾼거
==========================================
<h1>회원리스트</h1>
<c:forEach var="bean" items="${requestScope.memberList}">
 ${bean.id}<br/>
</c:forEach>




실전예제4)

mvc의 list2.jsp 바꾸기
====================
<%
 ListForm listform=(ListForm)request.getAttribute("listform");
 List<MemberBean> list=(List<MemberBean>)listform.getList();
 int num=listform.getStartrow();
 for(MemberBean bean:list){
 out.println((num++)+" : ");
 out.println(bean.getId()+"<br/>");
 }
 int pagenum=listform.getPagenum();
 String str="/mvc1/member/list2.do?pn="+(pagenum-1);
 if(listform.isPrevious())
 out.println("<a href="+str+"> << </a>");

 int sp=listform.getStartpage();
 int ep=listform.getEndpage();
 for(int pn=sp; pn<=ep; pn++){
 str="/mvc1/member/list2.do?pn="+pn;
 out.println("<a href="+str+">");
 out.println(pn+"</a> &nbsp;&nbsp;&nbsp;");
 }

 str="/mvc1/member/list2.do?pn="+(pagenum+1);
 if(listform.isNext())
 out.println("<a href="+str+"> >> </a>");
%>


바꾼거
=====================
<c:set var="num" value="${requestScope.listform.startrow}"/>  //requestScope 생략가능
<c:forEach items="${listform.list}" var="bean">
 ${num} ${bean.id}<br/>
 <c:set var="num" value="${num+1}" />
</c:forEach>
<c:set var="pagenum" value="${listform.pagenum}"/>
<c:if test="${listform.previous}">
 <a href="${pageContext.request.contextPath}/member/list2.do?pn=${pagenum-1}"> << </a> &nbsp;&nbsp;&nbsp;
</c:if>
<c:forEach var="pn" begin="${listform.startpage}" end="${listform.endpage}">
 <a href="${pageContext.request.contextPath}/member/list2.do?pn=${pn}"> ${pn}</a> &nbsp;&nbsp;&nbsp;
</c:forEach>
<c:if test="${listform.next}">
 <a href="${pageContext.request.contextPath}/member/list2.do?pn=${pagenum+1}"> >> </a>
</c:if>

댓글