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 |