EL 표현식과 JSTL

jyp·2023년 1월 13일
0

학원

목록 보기
26/57
post-thumbnail
EL표현식 : request, pageContext, session, application 저장된 값을 표현식을 통해 출력

 <%
 	int kor = 90;
 	int eng = 80;
 	int tot = kor + eng;
 	
 	String name = "원더우먼";
 	pageContext.setAttribute("name", "홍길동");
 	request.setAttribute("name", "배트맨");
 	session.setAttribute("name", "슈퍼맨");
 	application.setAttribute("name", "뽀로로");
 %>

 <div> 합: <%=tot%> </div> <p>
이름1 : <%=pageContext.getAttribute("name")%> <p>
이름2 : <%=request.getAttribute("name")%> <p>
이름3 : <%=session.getAttribute("name")%> <p>
이름4 : <%=application.getAttribute("name")%>

<!-- EL 표현식 : 위의 4개 영역의 값을 출력할때 간단히 출력 할 수 있는 표현식 -->
이름1 : ${pageScope.name} <p>
이름2 : ${requestScope.name}<p>
이름3 : ${sessionScope.name}<p>
이름4 : ${applicationScope.name}

EL 표현식은 Scope를 생략 할 수 있다. 
Scope를 생략시 동일한 이름이 존재한다면 pageContext > request > session > application순 젤 먼저것만 출력
// 작업시 내장객체의 영역에 동일한 이름의 속성을 만들지 않는다.

이름1 : ${name} <p>
이름2 : ${name} <p>
이름3 : ${name} <p>
이름4 : ${name}

<%
	String hakbun = "p1234";
	int eng = 99;
	// 내장객체영역이 아닌 스크립트릿에 존재하는 변수는 EL표현식으로 출력이 안됨
	// 단, 하고 싶다면 >> setAttribute를 통해서 작업 해야한다.
	request.setAttribute("hakbun", hakbun);
	request.setAttribute("mat", mat);
%>
학번 : ${hakbun} <p>
영어 : ${eng}

EL 표현식은 비교연산자를 영어로도 쓸 수 있음

 ${kor > eng } <p>
 ${kor gt eng } <p>
 
 ${kor < eng } <p>
 ${kor lt eng } <p>
 
 ${kor == eng } <p>
 ${kor eq eng } <p>
 
 ${kor != eng } <p>
 ${kor ne eng } <p>

 ${true && false }<p>
 ${true and false}<p>
 
 ${true || false }<p>
 ${true or false }<p>
 
 <%
 request.setAttribute("mat","");
 %>
 ${mat == null } <p>
 ${sci == null } <p>
 null은 값이 아예 비워져있는것까지 확인 할 수 있는데에 비해 empty는 그렇지 않다.
 ${empty mat } <p>
 ${empty sci } <p>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<c:set value="<%=eng%>" var="eng" />
<c:set value="홍길동" var="name" />
<c:set value="1" var="a" />
<hr>
이름 : ${name}<p>
국어 : ${kor} <p>
영어 : ${eng} <p>
<hr>
변수 a : ${a}
<hr>
<c:set value="${a+1}" var="a"/>
변수 a : ${a} <p>
=======================================================<p>
<!-- set : 변수 생성 (내장 객체) -->
<!-- out : 내장 객체 변수를 출력할때 사용 -->
국어 : <c:out value="${kor}"/><p>
영어 : ${eng}<p>
과학 : <c:out value="${sci}"/><p>
과학 : <c:out value="${sci}" default="존재하지 않음"/>
   

core 태그의 if문 (core 태그에는 else가 없기 때문에 false 부분 처리도 해줘야함)

<c:set var="kor" value="80"/>

<c:if test="${kor >= 60}">
	국어점수는 합격입니다.
</c:if>
<c:if test="${kor < 60}">
	국어점수는 불합격입니다.
</c:if>

core 태그에서 for문을 이용해 생년월일 선택하는 select

<select>
	<c:forEach var="i" begin="1900" end="2023">
		<option> ${i} </option>
	</c:forEach>
</select>

<select>
 	<c:forEach var="i" begin="0" end="123">
 		<option> ${2023-i} </option>
 	</c:forEach>
 </select>
   

향상된 for문 이용관련

String[] name = {"배트맨","홍길동","보로로","헐크","원더우먼"};
   
<c:forEach var="i" begin="0" end="5">
	${name[i]} <br>
</c:forEach>

   <p>==========================<p>

<c:forEach items="${name}" var="nam">
	${nam} <br>
</c:forEach>

varStatus 값을 줘서 쓸 수 있는 속성

<c:forEach var="i" begin="0" end="5" step="1" varStatus="pkc">
	${pkc.current} : ${pkc.index} : ${pkc.count} : ${name[i]} : ${pkc.begin} : ${pkc.end} : ${pkc.step} <br>
</c:forEach>

<p>===================<p>

<c:forEach items="${name}" var="nam" varStatus="pkc">
	${pkc.current} : ${pkc.index} : ${pkc.count} : ${nam} : ${pkc.first} : ${pkc.last} <br>
</c:forEach>
여러개 중에 조건에 맞는 하나의 내용을 실행
<c:choose>
	<c:when test="${food == 0}">
		짜장면을 주문 하셨습니다.
	</c:when>
	<c:when test="${food == 1}">
		짬뽕을 주문 하셨습니다.
	</c:when>
	<c:when test="${food == 2}">
		탕수육을 주문 하셨습니다.
	</c:when>
	<c:when test="${food == 3}">
		팔보채를 주문 하셨습니다.
	</c:when>
	<c:when test="${food == 4}">
		라조기를 주문 하셨습니다.
	</c:when>
	<c:otherwise>
		주문이 잘못 됐습니다!!!
	</c:otherwise>
</c:choose>
   

list에 page처리하는 코드

<td colspan="3" align="center">
		<!-- 사용자가 링크 할 수 있는 페이지를 출력 -->
		
		<!-- 10 페이지 왼쪽 -->
		<c:if test="${pstart != 1}">
		<a href="list?page=${pstart-1}"> << </a>
		</c:if>
		
		<c:if test="${pstart == 1}">
		<<
		</c:if>
		<!-- 1페이지 왼쪽 -->
		<c:if test="${page != 1 }">
		<a href="list?page=${page-1}"> < </a>
		</c:if>
		
		<c:if test="${page == 1 }">
		<
		</c:if>
		
		<c:forEach var="i" begin="${pstart}" end="${pend}">
		
		<c:if test="${page != i}">
		<a href="list?page=${i}">${i}</a>
		</c:if>
		
		<c:if test="${page == i}">
		<span style="color:red;">${i}</span>
		</c:if>
		
		</c:forEach>
		
		<!-- 1페이지 오른쪽 -->
		<c:if test="${page != chong}">
		<a href="list?page=${page+1}"> > </a>
		</c:if>
		
		<c:if test="${page == chong}">
		>
		</c:if>
		
		<!-- 10페이지 오른쪽 -->
		<c:if test="${pend != chong}">
		<a href="list?page=${page+10}"> >> </a>
		</c:if>
		
		<c:if test="${pend == chong}">
		>>
		</c:if>
		
		</td>
	</tr>
profile
국비 코딩

0개의 댓글