2022. 10. 12. 11:01ㆍ3층 1구역 - 개발의 장/JSP
1. 서론
Spring 프레임워크를 배우기 전 jsp에서 좀 더 간결하게 <%= "hello"%>를
나타낼수 있는 EL 언어에 대해 알아보도록 하자.
2. 본론
표현 언어(Expression Language)
값(데이터)을 웹 페이지에 표시(표현)하는데 사용되는 태그
JSP 출력에 대한 부분을 쉽게 하기 위해 개발한 태그
표현 언어는 표현식보다 사용방법이 간단하고 문법체계가 직관적으로 쉬운 편이다. 표현 언어는 “${ }”를 사용하여 값을 표현한다.
2-1. 출력하는 다양한 방법
표현식 == <%="hello"%>
메소드 == <%out.print("hello"); %>
표현 언어(EL) == ${"hello"} >> 자동완성(추천)에 뜨진 않음...;;
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Ex1</title>
</head>
<body>
<!-- http://localhost:8085/jspExam/el/ex1.jsp -->
<%="표현식으로 출력" %><br>
<%out.print("메소드로 출력"); %><br>
${"표현언어 EL로 출력"}
</body>
</html>
2-2. 다양한 문자열 정수형 표현
EL태그도 물론 정수형이나 문자열을 표현할 수 있다...............만 null의 데이터일 경우 조금 다르다.
null의 경우는 EL로 출력할 경우 그냥 빈 데이터로 인식해 버린다.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Ex2</title>
</head>
<body>
<!-- http://localhost:8085/jspExam/el/ex2.jsp -->
정수형 : ${10}<br>
실수형 : ${10.123}<br>
문자열형 : ${"홍길동" }<br>
논리형 : ${true}<br>
null 데이터 : ${null}<br>
연산 : ${10 + 123 }<br>
</body>
</html>
2-3. 연산하기
산술 : +, -, *, /(or div), %(or mod)
관계 : ==(or eq), !=(or ne), <(or lt), >(or gt), <=(or le), >=(or ge)
조건 : a ? b : c
논리 : &&(or and), ||(or or), !(or not)
null 검사 : empty
연산 또한 가능하다.
여기서 div는 /와 같은 값을 (몫의 값을 결과로 도출)
mod는 %와 같은 값을(나머지의 값을 결과로 도출)
하게 된다.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Ex3</title>
</head>
<body>
<!-- http://localhost:8085/jspExam/el/ex3.jsp -->
<h1>연산자들</h1>
\${5 + 2}(역슬래시가 있어서 EL태그로 인식 몬함.) : ${5 + 2}<br>
\${5 - 2} : ${5 - 2}<br>
\${5 * 2} : ${5 * 2}<br>
\${5 % 2} : ${5 % 2}<br>
\${5 mod 2} : ${5 mod 2}<br>
\${5 / 2} : ${5 / 2}<br>
\${5 div 2} : ${5 div 2}<br>
</body>
</html>
위 코드를 복붙해서 붙이면 div구간에서 오류가 날 텐데(이클립스 기준) 신경 쓸 거 없이 바로 출력을 해보자.
다음은 비교연산자.
비교연산자도 다양한 표현이 있으나 아마 필자는 왼쪽으로 많이 쓸 거 같다.
하지만 오른쪽으로 쓰는 사람도 분명 있을테니 알아두도록 하자.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Ex4</title>
</head>
<body>
<!-- http://localhost:8085/jspExam/el/ex4.jsp -->
<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>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Ex5</title>
</head>
<body>
<!-- http://localhost:8085/jspExam/el/ex5.jsp -->
<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>
</html>
2-4. EL를 사용할 경우 request.getParameter();를 param으로 축약할 수 있다.
표현 언어로 요청 파라미터 처리하기
사용자가 폼에 입력한 값을 얻어오기 위해서 JSP 내장 객체인 request의 getParameter() 메소드를 사용.
표현 언어에서는 request.getParameter() 대신 param 객체를 사용.
param 객체는 “.” 또는 “[ ]”를 사용하여 사용자가 입력한 값을 얻어옴.
param : JSP의 내장 객체인 request의 getParameter()와 동일한 역할인 파라미터 값을 알려준다.
paramValues : 파라미터 값들을 배열 형태로 얻어오는데 사용하는 request의 getParameterValues()와 동일한 역할을 한다
EL를 사용할 경우 param을 통해 request.getParameter(); 와 같은 값을 출력할 수 있다.
ex6_form.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Ex5</title>
</head>
<body>
<!-- http://localhost:8085/jspExam/el/ex6_form.jsp -->
<h1>로그인</h1>
<form method="get" action="ex6_result.jsp">
<input type="text" name="id" placeholder="아이디"><br>
<input type ="password" name="pw" placeholder="비밀번호"><br>
<input type="submit" value="로그인">
</form>
</body>
</html>
ex6_result.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
String id = request.getParameter("id");
String pw = request.getParameter("pw");
%>
아이디 : <%=id%><br>
비밀번호 : <%=pw%> <br>
<br>
아이디 : ${param.id}<br>
비밀번호 : ${param.pw}<br>
2-5. scope를 이용한 내장객체의 출력
EL 방식으로 내장객체 사용하기
어트리뷰트에 저장된 값을 표현 언어에서는 다음과 같은 형태로 접근해서 사용할 수 있다.
pageScope : page 객체에 저장된 속성의 <속성, 값> 매핑을 저장한 객체
requestScope : request 객체에 저장된 속성의 <속성, 값> 매핑을 저장한 객체
sessionScope : session 객체에 저장된 속성의 <속성, 값> 매핑을 저장한 객체
applicationScope : application 객체에 저장된 속성의 <속성, 값> 매핑을 저장한 객체
JSP와 EL의 내장 객체 비교 내장 객체 설명
page 어트리뷰트(어트리뷰트) - pageContext(JSP 내장 객체 ) - pageScope(표현 언어의 내장 객체 )
request 어트리뷰트(어트리뷰트) - request(JSP 내장 객체 ) - requestScope(표현 언어의 내장 객체 )
session 어트리뷰트(어트리뷰트) - session(JSP 내장 객체 ) - sessionScope(표현 언어의 내장 객체 )
application 어트리뷰트(어트리뷰트) - application(JSP 내장 객체 ) - applicationScope(표현 언어의 내장 객체 )
예전에 jsp 수업을 했을 때, pageContext, request, session, application에 대해 알아본적이 있는데
2022.09.24 - [3층 - 개발의 장/JSP] - JSP - pageContext, request, session, application forwaed(2022-09-24)
JSP - pageContext, request, session, application forwaed(2022-09-24)
1. 서론 pageContext, request, session, application forward의 법칙에 대해 알아보도록 하자. 2. 본론 일단 들어가기 전에 pageContext, request, session, application 이 4가지 객체는 뒤에 .setAttribute(Str..
sukw9512.tistory.com
EL을 통해 scope를 사용하여 출력이 가능하다.
ex7_A.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!-- http://localhost:8085/jspExam/el/ex7_A.jsp -->
<%
pageContext.setAttribute("data", "pageContext"); //>>이 페이지 안에서만 효력있음.
request.setAttribute("data", "request"); //>>새로운 request가 발생할 경우 기존꺼는 사용불가
session.setAttribute("data", "session");
application.setAttribute("data", "application");
%>
범위 지정 없음 : ${data} <br>
pageContext : ${pageScope.data }<br>
request : ${requestScope.data }<br>
session : ${sessionScope.data }<br>
application : ${applicationScope.data }<br>
<a href="ex7_B.jsp">이동</a>
ex7_B.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!-- http://localhost:8085/jspExam/el/ex7_B.jsp -->
범위 지정 없음 : ${data} <br>
pageContext : ${pageScope.data }<br>
request : ${requestScope.data }<br>
session : ${sessionScope.data }<br>
application : ${applicationScope.data }<br>
3. 결론
프로젝트를 진행하면서 코드를 어떻게 사용해야할지 모르겠는 부분을 찾아볼 때 구글 검색을 자주하는데
검색하면서 ${}가 대체 무엇인지 궁금했었다. 대개 '에이젝스'나 '제이쿼리' 라는 툴을 사용할 때 자주 나오는 형태라
그냥 그 때 사용하는 코드인갑다. 생각하고 있었는데 이게 그거였구나....
'3층 1구역 - 개발의 장 > JSP' 카테고리의 다른 글
JSP - JSTL <c:url> (2022-10-12) (0) | 2022.10.12 |
---|---|
JSP - JSTL <c:out>, <c:set>, <c:if>, <c:forEach>, <c:choose> - <c:when>(2022.10.12) (0) | 2022.10.12 |
JSP - 간단한 게시판 구현하기(完) - 게시물 삭제 (2022-09-29) (0) | 2022.09.30 |
JSP - 간단한 게시판 구현하기(7) - 게시물 수정 (2022-09-29) (0) | 2022.09.30 |
JSP - 간단한 게시판 구현하기(6) - 게시물 작성하기 및 첨부파일 (2022-09-29) (1) | 2022.09.30 |