Spring - jstl(JSP Standard Tag Library)

2020. 9. 18. 21:40Spring

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
    <%
        // 세션값 가져오기
    // String id=(String)session.getAttribute("id");
    // if(세션값이 없으면) loginForm.jsp 이동 
    // if(id == null){
    //     response.sendRedirect("loginForm.jsp");
    // }
    %>
    <c:if test="${empty sessionScope.id }">
        <c:redirect url="./login" />
    </c:if>
    <h1>jsp4/main.jsp</h1>
    ${sessionScope.id}님 로그인 하셨습니다.
    <input type="button" value="로그아웃" onclick="location.href='./logout'">
    <br>
    <a href="./info">회원정보조회</a>
    <a href="./update">회원정보수정</a>
    <a href="./delete">회원정보삭제</a>
    <%
        // 회원목록 관리자(admin) 볼수 있게 처리
    // if  세션값이 있으면
    //    if  세션값이 "admin"같으면  회원목록 
    // if(id!=null){
    //     if(id.equals("admin")){
    //     }
    // }
    %>
    <c:if test="${not empty sessionScope.id }">
        <c:if test="${sessionScope.id eq 'admin' }">
            <a href="./list">회원목록</a>
        </c:if>
    </c:if>
 
    <c:choose>
        <c:when test="${5+10==50 }">
            <h3>5+10은 50이다</h3>
        </c:when>
        <c:otherwise>
            <h3>5+10은 50이 아니다</h3>
        </c:otherwise>
    </c:choose>
    
    <c:forEach var="i" begin="1" end="10" step="2">
    ${i }
    </c:forEach>
    
    <c:forEach var="mb" items="${memberList }">
    ${mb.id },${mb.pass },${mb.name }
    </c:forEach>
    
    <c:set var="data" value="홍길동,김길동,고길동"/>
    <c:forTokens var="d" items="${data }" delims=",">
    ${d }
    </c:forTokens>
    
    <br>
    <fmt:setLocale value="en_US"/>
    <fmt:formatNumber value="50000" type="currency" />
    <fmt:formatNumber value="0.15" type="currency" />
    <fmt:formatNumber value="123456789" pattern="###,###,###" />
    
    <br>
    <jsp:useBean id="date" class="java.util.Date"/>
    <fmt:formatDate value="${date }" type="date"/>
    <fmt:formatDate value="${date }" type="time"/>
    <fmt:formatDate value="${date }" type="both"/>
    
    
</body>
</html>
 
 
 
 
 
cs

 

MVC 2를 기반으로 프로젝트를 할 때부터 생각을 해왔던 것인데 View에서 Java코드를 사용하면 안 될 거라고 

생각을 해왔었다. 왜냐하면 View 와 Model, Controller로 나눈 의미가 없어지니까 View 즉 jsp 페이지에서는

Java 코드를 사용하지 않는 방법이 있을까 고민해왔는데 JSTL 이라는 방법이 있었다.

사용하기 전에 전역변수로 선언해주기 위해 <%@ %> 안에 taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"

선언해주고 사용을 시작 하면 된다. c:if는 if문이고 c:redirect는 포워딩시켜주는 태그이다.

c:if를 사용해서는 else 구문의 역할을 하는 태그를 사용할 수가 없고 그저 간단한 조건만 정의가 가능하고

여러 조건을 if-else로 사용하고 싶을 때는  c:choose를 먼저 선언해주고 그 안에  c:when을 선언해준다.

 c:when이 if 의 역할이고, c:otherwise 가 else의 역할을 한다.  for문도  c:forEach를 사용하여 var은

변수의 역할 이고,value 나 item 이 받아오는 변수나 객체를 선언해주는 문법이다. 

c:set 은 변수의 설정 문법이고, c: forTokens 는 delims로 구분자를 선언해줘서 for문을 반복 사용할 때

구분자를 변수 사이사이에 입력해 출력할 수 있는 용도의 문법이다.

fmt는 jstl에서의 데이터 포맷 문법이다.

마찬가지로 <%@ %> 안에 taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"

선언을 해주고 사용하면 된다. 마지막에 <jsp:useBean> 태그는 jsp 페이지 내에서 Bean  객체를 선언해주는 것이다.

이 태그로 java 페이지에서 선언된 객체들도 가져와서 사용이 가능하니 잘 알아두고 사용하면 되겠다. 

'Spring' 카테고리의 다른 글

Spring - Maven  (0) 2020.09.18
Spring - Connection  (0) 2020.09.18
Spring - servlet-context.xml  (0) 2020.09.15
Spring - 출력문, DI(Dependecy Injection)  (0) 2020.09.15