[Server] TIL no.44 | JSTL 조건문 & 반복문 & (2023.09.20)

유은서·2023년 9월 20일
0

Server

목록 보기
4/6

1. JSTL 조건문

1-1) 단독 if (c:if 태그)

(c:else)문 없음
속성은 test만 존재함.

EL에서 모든 비교는 == 또는 eq / != 또는 ne 사용
EL에서 문자열은 ''(홑따옴표)로 표현

🔆 주의사항 🔆

1) test의 속성값은 무조건 EL 구문으로 작성해야 함.
2) test의 속성값은 true 또는 false가 나오는 조건식이어야 함.
3) test의 속성값을 작성하는 ""내부에는 앞뒤 공백이 존재해서는 안됨!

test = " money==50000"(X)test="{money == 50000} " (X) test = "{money == 50000}" (O)

1-1) 예제

<!-- jsp  --> 
<a href="condition">JSTL을 이용한 조건문(if / choose, when, otherwise)</a>
// controller

//최상위 주소 기준! 
@WebServlet("/jstl/condition")
public class JSTLConditionController extends HttpServlet{

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

		req.setAttribute("name", "홍길동");
		req.setAttribute("money", 50000);

		req.getRequestDispatcher("/WEB-INF/views/jstl/condition.jsp").forward(req, resp);		
	}
}
<!-- 이동 할 jsp -->
request에 세팅된 name : ${name} <%--홍길동--%>
  <br>
  request에 세팅된 money : ${money} <%-- 50000 --%>
  <br>

  <c:if test="${money == 50000 }">
    <h3 style = "color : blue">돈이 5만원 있습니다.</h3>

  </c:if>

  <c:if test ="${ name eq '홍길동' }">
    <h3>이름이 일치합니다.</h3>
  </c:if>

  <c:if test ="${ name ne '홍길동' }">
    <h3>이름이 일치하지 않습니다.</h3>
  </c:if>

✔ 단독 if문 결과


2. if ~ else if ~ else (c:choose)

  • choose : when, otherwise 태그를 감싸는 태그
               (이 안에 if ~ else if ~ else를 쓰겠다고 말하는 것 )
  • when : if, else if (역할의 태그)
            속성은 test만 있음
  • otherwise : else역할, 속성 X

[ 범위 ]
lt(little) : < 미만
gt(greater) : > 초과
le (little or equal) : <= 이하
ge (greater or equal) : >= 이상

index.html -> controller에서 doget 이용 후

<!-- 이동  jsp>
  <%-- 관리자 이동하는 조건에 자주 쓰임  --%>
    <c:when test = "${param.val gt 100}">
      100 초과
    </c:when>
    <c:when test = "${param.val < 100}">
      100 미만
    </c:when>
    <c:otherwise>
      100과 같다 
    </c:otherwise>
    </c:choose>

✔ choose 결과

  • 처음에는 val값이 null이라서 otherwise에 걸려서 또는 100 입력 시

  • val 값에 120 입력

  • val값에 90입력

3. 반복문-for (c:forEach 태그)

  • 일반 for + 추가 기능
  • 속성
    1) var : 현재 반복 횟수에 해당하는 변수 (int i)
    2) begin : 반복 시 var 시작 값
    3) end : 반복이 종료될 var 값
    4) step : 반복 시 마다 var의 증가 값 (기본값 1)
    5) items : 반복 접근한 객체(배열, 컬렉션 객체)
    6) varStatus : 현재 반복 상태와 관련된 정보를 제공하는 변수 선언

varStatus="변수명"
-> c:forEach 구문 내에서 "변수명"을 통해 원하는 값을 얻을 수 있다.

★ varStatus에서 제공되는 값

  • current : 현재 반복 횟수(현재 var 값)
    또는 현재 반복 접근 중인 객체(컬렉션/배열 요소)
  • index : 현재 인덱스값 반환 (0부터 시작)
  • count : 현재 몇바퀴째인지 반복 횟수 반환 (1부터 시작)
  • first : 첫 번째 반복이면 true, 아니면 false
  • last : 마지막 반복이면 true, 아니면 false

3-1) 일반 for문

<!-- 마지막으로 출력될 jsp -->

<h3>일반 for문 형식으로 사용하기</h3>

<c:forEach var = "i" begin ="1" end = "6" step = "1">
  <%-- 1부터 6까지 1씩 증가 반복문 --%>
    <h${i}> 현재 i값 값 : ${i}  </h${i}>
 </c:forEach>

✔ 일반 for문 결과

3-2) 향상된 for문

1) 현재 인덱스 값을 반환
index : ${vs.index}

2) 몇 번째 반복인지 출력
count : ${vs.count}

3) 현재 접근한 객체
current : ${vs.current}

4) 첫 번째 요소 확인 (t/f)
first : ${vs.fisrt}

5) 마지막 요소 확인 (t/f)
last : ${vs.last}

<!-- 마지막에 출력될 jsp -->
<c:forEach var = "book" items = "${bookList}" varStatus = "vs">
  <%-- varStatus :: 변수명  --%>
    <p>
      1) 현재 인덱스 값을 반환 <br>
      index : ${vs.index} <br>

      <br><br>
      2) 몇 번째 반복인지 출력 <br>
      count : ${vs.count} <br>

      3) 현재 접근한 객체 <br>
      current : ${vs.current}<br>

      <c:if test = "${vs.first}">
        4) 첫 번째 요소 확인 (t/f)
        첫 번째 요소 입니다.
      </c:if>

      <c:if test = "${vs.last}">
        5) 마지막 요소 확인 (t/f)
        마지막 요소 입니다.
      </c:if>
    </p>
    </c:forEach>

✔ 향상된 for문 결과

4. DB와 연결하기

있어야 하는 것!
=> lib -> ojdbc

순서) index.html -> (dto) -> controller -> Service -> dao -> db -> dao -> service -> controller -> 새 jsp(jstl)


✨오늘의 프로그래밍 Tip ✨

1) choose 안에서 주석 쓸 때, <!-- -- > 사용하면 안됨
<%-- -- > 를 이용해야 함!

2) queryString
=> 주소에 작성된 파라미터 문자열

3) class.getResource()
클래스 기준으로 상대적인 위치의 리소스를 가져올 수 있다.

0개의 댓글