리우's IT Story
article thumbnail
Published 2023. 8. 4. 21:41
EL 태그 JSP
728x90
반응형
Expression Language (print)
attribute에 접근하여 값을 출력한다

 

 

삼항연산을 이용할 수 도 있다.

=> 대상이 비어있지 않으면 객체의 이름을 출력하고 거짓이면 '없음'을 출력해라.

	<fieldset>
		<h3>${not empty param.name ? param.name : '없음' }</h3>
	</fieldset>

 

문자열의 덧셈은 불가능하다. 

	<fieldset>
		<legend>문자열 덧셈은 불가능</legend>
		<h3>${'1104' + '100' }</h3>
	</fieldset>

 

 

문자열을 더해주려면 el태그안에서 따옴표로 문자열을 선언해서 붙여주면 된다. 

	<fieldset>
		<legend>문자열 덧셈은 불가능</legend>
		<h3>${'1104'}${"a"}</h3>
	</fieldset>

 

 


EL태그의 연산자:
산술연산,비교연산, 논리연산 
<table>
		<thead>
			<tr>
				<th>연산자</th>
				<th>예시</th>
				<th>결과</th>
			</tr>
		</thead>
		<tbody>
			<tr>
				<td>+</td>
				<td>\${12+23}</td> 
				<td>${12+23 }</td>
			</tr>
			
			<tr>
				<td>*</td>
				<td>\${12*23}</td> 
				<td>${12 * 23 }</td>
			</tr>
			
			<tr>
				<td>/, div</td>
				<td>\${10/3}</td> 
				<td>${10/ 3 }</td>
			</tr>
			
			<tr>
				<td>%,mod</td>
				<td>\${10 % 3}</td> 
				<td>${10 % 3 }</td>
			</tr>
			
			<tr>
				<td>>, gt</td>
				<td>\${10 > 3 }</td>
				<td>${10 > 3 }</td>
			</tr>
			
			<tr>
				<td><, lt</td>
				<td>\${10 < 3 }</td>
				<td>${10 < 3 }</td>
			</tr>
			
			<tr>
				<td>>=, ge</td>
				<td>\${10 >= 3 }</td>
				<td>${10 >= 3 }</td>
			</tr>
			
			<tr>
				<td><=, le</td>
				<td>\${10 <= 3 }</td>
				<td>${10 <= 3 }</td>
			</tr>
			
			<tr>
				<td>==, eq</td>
				<td>\${10 == 3 }</td>
				<td>${10 == 3 }</td>
			</tr>
			
			<tr>
				<td>!=, ne</td>
				<td>\${10 != 3 }</td>
				<td>${10 ne 3 }</td>
			</tr>
			
			<tr>
				<td>&& , and</td>
				<td>\${10 % 2 == 0 && 10 > 2  }</td>
				<td>${10 % 2 == 0 && 10 > 2  }</td>
			</tr>
			
			<tr>
				<td>|| , or</td>
				<td>\${10 % 2 == 0 || 10 < 2  }</td>
				<td>${10 % 2 == 0 || 10 < 2  }</td>
			</tr>
			
			<tr>
				<td>! , not</td>
				<td>\${!(10 < 2)}</td>
				<td>${not(10 < 2)}</td>
			</tr>
		
		</tbody>
	</table>

 

gt = greater than (보다 크다) 초과 
lt = less than (보다 작다) 미만 
ge = greater equal (크거나 같다) 이상
le = less equal (작거나 같다) 이하 
eq =  equal 같다.
ne = 같지않다. not equal (이클립스에서 인식을 못해서 빨간줄이 뜨지만 출력은 문제가 없다)

 

 

<%@ page import="java.util.*" %>
			<%
				//EL태그는 지역변수는 취급하지않는다.  
				String[] arr = {"이효리","옥주현","성유리","이진"};
				pageContext.setAttribute("arr", arr);
				
				List<String> list = Arrays.asList(arr);
				pageContext.setAttribute("list", list);
				
				HashMap<String, String> map = new HashMap<>();
				map.put("위" , "조조");
				map.put("촉" , "유비");
				map.put("오" , "손권");
				map.put("title", "romance of three kingdoms");
				pageContext.setAttribute("map", map);
			%>
			<tr>
				<td>[]</td>
				<td>\${arr[1] }</td>
				<td>${arr[1] }</td>
			</tr>
			<tr>
				<td>list[]</td>
				<td>\${list[1] }</td>
				<td>${list[1] }</td>
			</tr>
			
			<tr>
				<td>map</td>
				<td>\${map['위'] }</td>
				<td>${map['위'] }</td>
			</tr>
			
			<tr>
				<td>map</td>
				<td>\${map.title}</td>
				<td>${map.title }</td>
			</tr>
			
			<tr>
				<td>param.name <br> (request.getParameter("name"))</td>
				<td>\${param.name}</td>
				<td>${param.name}</td>
			</tr>
			<tr>
				<td>param.age <br> (request.getParameter("age"))</td>
				<td>\${param.age}</td>
				<td>${param.age}</td>
			</tr>
EL태그는 지역변수는  취급하지않는다

attribute에 접근하여  담겨져 있는 값을 읽어오기때문에 . 
배열 변수 arr을 pageContext에 담아서 불러올 수 있다. 

또 list나 map도 attribute에 담아주기만 하면 EL태그로 선언할 수 있다. 

map에서 key와 value를 넣는 방식 map.put(name, value)
map에서 name을 얻는 내장함수 map.get(name)
ob.get(name) > ob.getName
위와 같이 EL태그는 key값을 얻는 방식에서 바뀐것이다. 

 

 

	<tr>
				<td>pageContext</td>
				<td>\${pageContext } </td>
				<td>${pageContext}</td>
			</tr>
			
			<tr>
				<td>request</td>
				<td>\${pageContext.request } </td>
				<td>${pageContext.request}</td>
			</tr>
			
			<tr>
				<td>session</td>
				<td>\${pageContext.session } </td>
				<td>${pageContext.session}</td>
			</tr>
			
			<tr>
				<td>application</td>
				<td>\${pageContext.servletContext } </td>
				<td>${pageContext.servletContext}</td>
			</tr>

 

 

 

EL태그는 attribute의 중간다리 역할도 한다. 
EL태그에 이렇게 많은 기능을 넣어놓은 이유는 JSP 에서 이제  왠만하면 표현식을 쓰지 않겠다는 것이다. 
하지만 jstl태그를 쓰기때문에 표현식을 아예 배제할 수는  없다. 

 

 


 

간단한 예제 :
EL 태그와 표현식의 차이점 

 

<body>
	<h1>ex05.jsp</h1>
	<hr>
	
	<form>
		<input type="text" name="name" placeholder="이름을 입력하세요" autofocus>
	</form>
	
	<h3>
		안녕하세요. 
		${param.name }
		<%--빈 문자열은 없다 라고 판단한다.  --%> %>
		${not empty param.name ? '님' : '' }	
	</h3>
	
	<h3>
		안녕하세요. 
		<%=request.getParameter("name") !=null ? request.getParameter("name") : ""  %>
		
		<%=request.getParameter("name") != null ? "님" : " " %>	
	</h3>
</body>

 

 

파라미터의 값이 비어있지 않으면 님을 출력하고 거짓이면 빈 문자열을 출력한다. 

 

 

여기는 표현식

  출력은 똑같다. 

 

728x90
반응형

'JSP' 카테고리의 다른 글

Connection Pool (커넥션 풀) , singleton(싱글톤)  (0) 2023.08.10
JSTL  (0) 2023.08.07
영화정보를 El태그, action태그를 사용해서 추가하기  (0) 2023.08.04
Form - action 태그  (0) 2023.08.04
attribute 어트리뷰트 , form  (0) 2023.08.03
profile

리우's IT Story

@LRWoo

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!