# 표현언어 #param #EL내장객체 #Scope
표현언어(EL: Expression Language)란?
JSP 코드를 작성할 때 편리함을 위한 코드방식으로,
기존 JSP 코드를 작성할 때 스크립트릿(<% %>)이나 표현식(<%= %>)을 HTML코드와 함께 사용하다보면, 자바 객체 선언 등 코드가 복잡해진다.
이런 문법 문제를 직관적이고 쉽게 표현한 코드 방식이 바로 표현언어( ${ } ) 이다.
[표현언어 연산자]
예제
예제1) 표현식과 표현언어의 차이
<body>
${"표현 언어로 출력"}<br>
<%="표현식으로 출력" %><br>
<!-- 시스템 출력 -->
<%out.print("메소드로 출력"); %><br>
</body>
예제2) 자료형과 연산
<body>
<h3>자료형별</h3>
정수형 : ${10 }<br>
실수형 : ${10.123 }<br>
문자열형 : ${"홍길동" }<br>
논리형 : ${true }<br>
null데이터 : ${null }<br> <!-- NULL : 결과 화면을 공백을 처리 -->
연산 : ${10 + 123}<br>
<h3>연산자들</h3>
\${5 + 2} : ${5 + 2}<br>
\${5 - 2} : ${5 - 2}<br>
\${5 * 2} : ${5 * 2}<br>
\${5 / 2} : ${5 / 2}<br>
\${5 div 2} : ${5 div 2}<br>
\${5 % 2} : ${5 % 2}<br>
\${5 mod 2} : ${5 mod 2}<br>
</body>
예제3) 비교 연산자
<body>
<h1> 비교 연산자들</h1>
<!-- (\)을 사용하여 문자형으로 출력되도록함. -->
\${5 == 2} : ${5 == 2} => \${5 eq 5} : ${5 eq 5}<br>
\${5 != 2} : ${5 != 2} => \${5 ne 5} : ${5 ne 5}<br>
\${5 < 2} : ${5 < 2} => \${5 lt 2} : ${5 lt 2}<br>
\${5 > 2} : ${5 > 2} => \${5 gt 2} : ${5 gt 2}<br>
\${5 <= 2} : ${5 <= 2} => \${5 le 2} : ${5 le 2}<br>
\${5 >= 2} : ${5 >= 2} => \${5 ge 2} : ${5 ge 2}<br>
</body>
예제4) 논리 연산자
<body>
<h1> 논리 연산자들</h1>
\${(5>2) || (5<2)} : ${(5>2) || (5>2)} => \${false or true} : ${false or true}<br>
\${(5>2) && (5>2)} : ${(5>2) && (5>2)} => \${false and true} : ${false and true}<br>
\${ !(5>2) } : ${ !(5>2) } => \${ not false} : ${ not false }<br>
</body>
param 내장객체
표현언어는 사용자가 폼에 입력한 값을 얻어오기 위해서 JSP 내장 객체인 request의 getParameter() 메소드를 대신 param 객체( . 또는 [])를 사용한다.
내장객체 | 설명 |
param | jsp의 내장 객체인 request의 getParameter()와 동일한 역할인 파라미터 값을 알려준다. |
paramValues | 파라미터 값들을 배열 형태로 얻어오는데 사용하는 request의 getParameterValues()와 동일한 역할을 한다. |
예제1)
<body>
<div align="center">
<h1>로그인</h1>
<table>
<tr><td>
<form action="ex6_result.jsp" method="post">
<input type="text" name="id" placeholder="아이디"> <br>
<input type="password" name="pw" placeholder="비밀번호"><br>
<input type="submit" value="로그인" ><br>
</form>
</td></tr>
</table>
</div>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
request.setCharacterEncoding("utf-8");
String id = request.getParameter("id");
String pw = request.getParameter("pw");
%>
아이디 : <%=id%> <br>
비밀번호 : <%=pw%> <br>
<br>
아이디 : ${param.id} <br>
비밀번호 : ${param.pw}<br>
<br>
아이디 : ${param["id"]} <br>
비밀번호 : ${param["pw"]}<br>
Scope (뜻: 범위)
JSP에서는 page(pageContext), request, session, application 등의 네가지 객체 범위를 제공한다.
작은 범위부터 page < request < session < application 순이며,
만약 같은 이름의 변수가 범위 두곳에 저장되어있는 경우 작은 범위에 있는 변수가 불러진다.
- pageScope : 현재 페이지 영역의 변수
- requestScope : 이전 페이지에서 받아온 영역의 변수(생략가능)
- sessionScope : session 영역의 변수
- applicationScope : application 영역의 변수
예제1) 변수 범위지정해주고 페이지별 유효범위 출력해보기
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
pageContext.setAttribute("data", "page man");
request.setAttribute("data", "request man");
session.setAttribute("data", "session man");
application.setAttribute("data", "appliction man");
%>
범위 지정 없음 : ${data } <br>
page 속성 : ${pageScope.data } <br>
request 속성 : ${requestScope.data } <br>
session 속성 : ${sessionScope.data } <br>
application 속성 : ${applicationScope.data } <br>
<a href="ex7_B.jsp">이동</a>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
범위 지정 없음 : ${data } <br>
pageContext : ${pageScope.data } <br>
request : ${requestScope.data } <br>
session : ${sessionScope.data } <br>
application : ${applicationScope.data } <br>
- 첫페이지에서 네가지 객체 범위를 가진 데이터 4개를 선언해주었다.
- 범위 지정하지 않았을 때는 변수의 범위는 기본적으로 page범위이다.
- 두번째 페이지에서는 첫번째 페이지 범위로 해당되는 pageContext, request 변수 두개가 범위를 벗어나서 사용할 수 없어 출력되지 않는다.
예제2) JSTL을 이용해 변수 범위지정해주고 페이지별 유효범위 출력해보기
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!-- 기본범위 pageContext -->
<c:set var="data" value="pageContext"/>
<c:set var="data" value="request" scope="request"/>
<c:set var="data" value="session" scope="session"/>
<c:set var="data" value="application" scope="application"/>
범위 지정 없음 : ${data} <br>
pageContext : ${pageScope.data} <br>
request : ${requestScope.data} <br>
session : ${sessionScope.data} <br>
application : ${applicationScope.data} <br>
<a href="ex9_B.jsp">이동</a>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
범위 지정 없음 : ${data} <br>
pageContext : ${pageScope.data} <br>
request : ${requestScope.data} <br>
session : ${sessionScope.data} <br>
application : ${applicationScope.data} <br>
'Programming > JSP' 카테고리의 다른 글
[JSP] JSP 액션 태그 <jsp:useBean> (0) | 2022.10.17 |
---|---|
[JSP] RequestDispatcher().forward(); (0) | 2022.10.14 |
[JSP] Redirect와 forward의 차이점(+sendRedirect ) (0) | 2022.10.14 |
[JSP] JSTL와 JAR 다운방법 (0) | 2022.10.13 |
[JSP] Tomcat을 이용한 Eclipse 웹 자바 개발환경 세팅하기 (0) | 2022.09.07 |