7.1 c:if, c:forEach
모두가 자바 코드 대신 태그를 사용한 코드를 좋아해서 범위를 확장하기로 했습니다. 그러나 프로그래밍은 개체를 만들고 해당 속성을 읽는 것으로 제한되지 않습니다. 개체의 메서드를 호출하고 데이터베이스 및 기타 서비스로 작업해야 합니다. 무엇을 해야 합니까?
각 Java 문을 태그로 나타내기만 하면 됩니다. 이었다 if
, 이었다 <if>
, 이었다 for
, <for>
이었다 . 알았어, 농담이야, 그런 게 아니었어. 사람들이 실제로 그렇게 하기로 결정할 수는 없습니다. 하지만 아니, 어쩌면!
프로그래머는 코드에 태그를 추가할 수 있습니다. 원칙적으로 걱정할 것이 없습니다. JSP는 확장 가능한 표준입니다. 그러나 그들은 더 나아가 JSP 표준 태그 라이브러리인 JSTL을 출시했습니다. 이 페이지는 다음과 같습니다.
<%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c" %>
<html>
<head>
<title> JSTL Example</title>
</head>
<body>
<c:set var = "salary" scope = "session" value = "${2000*5}"/>
<c:if test = "${ salary > 2000}">
<p>My salary is: <c:out value = "${salary}"/><p>
</c:if>
</body>
</html>
향후 프로젝트에서 이러한 코드를 접하게 될 가능성이 매우 높습니다. 여기에서 몇 가지 설명을 드리겠습니다.
7.2 JSTL 함수
JSTL 함수는 5가지 범주로 나뉩니다.
- 메인 태그;
- 포맷팅 태그;
- SQL 태그;
- XML 태그;
- 함수를 호출합니다.
모두 나열하지는 않겠지만 가장 인기 있는 것만 나열하겠습니다. 기본 태그부터 시작하겠습니다.
1 | <c:out> |
지정된 표현식을 출력합니다. <%= %>와 동일합니다. |
2 | <c:set> |
식의 결과를 변수에 씁니다. |
삼 | <c:remove> |
변수를 삭제합니다 |
4 | <c:catch> |
예외 포착 |
5 | <c:if> |
만약의 아날로그 |
6 | <c:choose> |
아날로그 스위치 |
7 | <c:when> |
선택과 함께 사용 |
8 | <c:otherwise> |
선택과 함께 사용 |
9 | <c:import> |
코드에 콘텐츠를 포함할 수 있습니다(import 지시문과 동일). |
10 | <c:forEach> |
각 루프에 대해 |
열하나 | <c:param> |
가져오기 옵션을 설정할 수 있습니다. |
12 | <c:redirect> |
리디렉션 |
13 | <c:url> |
매개변수로 URL 생성 |
한 가지 예만 들고 마치겠습니다. 원칙적으로 약간의 기술을 사용하면 이러한 코드를 읽을 수 있습니다. 하지만 저는 쓰는 것을 추천하지 않습니다.
<%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c" %>
<html>
<head>
<title> Each Tag Example&</title>
</head>
<body>
<c:forEach var = "i" begin = "1" end = "5">
Item <c:out value = "${i}"/><p>
</c:forEach>
</body>
</html>
JSP 파서가 이러한 태그를 Java 코드로 변환할 수 있도록 태그 형식으로 Java 코드를 작성합니다. 이 세상의 무언가가 잘못되었습니다.
그건 그렇고, 당신은 자신의 태그 라이브러리를 작성할 수 있습니다. 나는 그들이 있던 프로젝트에서 한 번도 일했습니다. 멋진 경험. 라이브러리가 변경되는 즉시 전체 jsp가 중단됩니다.
당신은 무엇을 원하십니까? 컴파일러는 이러한 변경 사항을 추적하지 않습니다. 생성된 HTML 페이지를 볼 때 시각적으로만 찾을 수 있습니다. 그리고 이것이 사소하지 않은 상황에서 발생하는 드문 시나리오라면 ... 백엔드 개발과 정적 타이핑에 신의 축복이 있기를!
GO TO FULL VERSION