본문 바로가기
JSP/이론

EL

by SEOKIHOUSE 2023. 6. 14.

EL(Expression Language) 
표현언어
변수의 값을 출력할 때 사용하는 스크립트 언어

${}

표현식 <%= %> 과 역할이 같음 
but 형번환, null등의 예외에 유연하다
4대 저장소(page,request,session,application)에 저장된 데이터 값 출력 시 사용
-->일반 자바 변수의 값을 출력할 수 없다

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<%
		String s = "Hello~";
		pageContext.setAttribute("greet", "Hello..pageContext");
	%>
	<%= "Hello..표현식" %><br>
	${"Hello..EL" }<br>
	<%
		out.print("hello..스크립틀릿<br>");
	%>
	
	<%=s +"표현식 변수사용" %><br>
	EL로 자바변수 출력: ${s}<br>
	EL로 페이지영역 데이터 출력: ${greet }
</html>

  • 등호모임

div는 나누기 연산자(/)
mod나머지 연산자(%)
eq는 등호(==)
gt는 크다(>) 
lt는 작다(<) 
ne는 같지 않다(!=)
ge 크거나 같다(>=)  
le는 작거나 같다(<=) 
empty는 변수가 비어있거나 null인지 확인하는 연산자

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	참 거짓${(10>5)  && (10<5)}<br>
	<%="10>5" %><br>
	<hr>
	<%-- div는 나누기 연산자(/)와 동일한 의미 --%>
	10/5: ${10 div 5 }<br>
	
	<%-- mod는 나머지 연산자(%)와 동일한 의미 --%>
	10%3: ${10 mod 3 }<br>
	<%-- eq는 등호(==)  --%>
	10==10 : ${10eq 10 }<br>
	10==5 : ${10eq 5 }<br>
	
	<%-- gt는 크다(>) --%>
	10>5 : ${10 gt 5 }<br>
	5>10 : ${5 gt 10 }<br>
	
	<%-- lt는 작다(<) --%>
	10<5 : ${10 lt 5}<br>
	5<10 : ${5 lt 10}<br>
	
	<%-- ne는 같지 않다(!= --%>
	10!=9 : ${10 ne 9}<br>
	
	<%-- ge는 크거나 같다(>=)  --%>
	10>=9 : ${10 ge 9 }<br>
	
	<%-- le는 작거나 같다(<=) --%>
	9<10 : ${9 le 10 }<br>
	
	
	
	<%
		String s = null;
	%>
	<%-- empty는 변수가 비어있거나 null인지 확인하는 연산자 --%>
	s는 null: ${empty s }<br>
	s : ${s }<br>
	null은 안나온다 : ${null }<br>
</body>
</html>

  • EL파라미터
  • setAttribute를 써서 el로 가져오려면 name만 적어주면 된다


  • el로 쓰는건 getparameter로 안가져와도 바로 쓸 수 있따

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<a href ="0614el03파라미터.jsp?name=짱구&age=23">el03로 가기</a>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<%
		String param=request.getParameter("name");
	%>
	파라미터(표현식) : <%=param %><br>
	파라미터(EL) : ${param.name }<br>
	파라미터(EL) : ${param.age }
</body>
</html>

  • 좁은범위부터 가져온다


  • 이게 왜 흰둥이가 오느냐? 사실상 requestsetAttribute했는데 

이렇게 되어있는게 맞다 근데 왜 흰둥이가 나오냐고? 


★좁은순서가 우선순위가 되는데 1. page  2. request 3. session 4. application

이렇게하면 흰둥이만 나온다 그럼 값을 다 가져오려면 앞에 pageScope requestScope...등등을 붙여주면 된다



ㅇ아차차 그리고 만약에 application만 남겨두고 연습하려고 하면 session을 지워주고 해야한다 

아니면 session먼저 뜨니깐 ㅇㅋ?

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<%
		request.setAttribute("name","짱구");
		request.getRequestDispatcher("0614el03파라미터.jsp?age=22").forward(request, response);
	%>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<%
		String param=request.getParameter("name");
		pageContext.setAttribute("name", "흰둥이");
		//이게 왜 흰둥이가 나오느냐? 아래꺼 있는데
		//같은 이름(여기선 name)이 있을 경우(좁은범위가 우선순위 == pageContext)
		//requestScope이걸 써줘서 읽자
		//request.setAttribute("name", "짱구"); 
		session.setAttribute("name", "세션흰둥이");
		application.setAttribute("name", "어플흰둥이");
	%>
	파라미터(표현식) : <%=param %><br>
	<%--  page영역 name : ${name }<br> --%>
	page영역 name : ${pageScope.name }<br>
	request속성 name : ${requestScope.name }<br>
	session영역 name : ${sessionScope.name }<br>
	application속성 name : ${applicationScope.name }<br>
	파라미터(EL) : ${param.age }
</body>
</html>