들어가기 전에
jsp에서 표현식을 이용해 값을 출력할 때 변수의 값이 null이면 화면에 null이 출력되었습니다.
이 경우 null인지를 check한 후 null이면 아무것도 없는 문자열을 출력해야 하는 등 불편한 과정을 거쳐야 합니다.
EL을 사용하면 좀 더 편리하게 변수를 JSP에서 사용할 수 있습니다.
그럼 EL에 대해 알아보도록 하겠습니다.
학습 목표
- EL을 이해한다.
- EL을 사용할 수 있다.
핵심 개념
학습하기
실습코드
el01.jsp
Scope별 표현 언어의 사용
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
pageContext.setAttribute("p1", "page scope value");
request.setAttribute("r1", "request scope value");
session.setAttribute("s1", "session scope value");
application.setAttribute("a1", "application scope value");
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
pageContext.getAttribute("p1") : ${pageScope.p1 }<br>
request.getAttribute("r1") : ${requestScope.r1 }<br>
session.getAttribute("s1") : ${sessionScope.s1 }<br>
application.getAttribute("a1") : ${applicationScope.a1 }<br>
<br><br>
pageContext.getAttribute("p1") : ${p1 }<br>
request.getAttribute("r1") : ${r1 }<br>
session.getAttribute("s1") : ${s1 }<br>
application.getAttribute("a1") : ${a1 }<br>
</body>
</html>
comment
24.04.04.
2022.03.18
20220221
210713
21.05.11
변수의 이름이 겹친다면 scope 범위를 명확하게 지정
변수의 이름이 겹치지 않는다면 ${a1} , ${p1} 이런식으로 표현해도 인식한다.
만약 값이 중복된다면 작은 범위인 pageContext부터 찾는다.
EL태그에서 값의 이름이 중복될 떄는 작은 범위의 scope인 pageContext부터 찾기 시작함
표현언어 EL(Expression Language)
값을 표현하는데 사용되는 스크립트 언어. >> JSP의 문법을 보완하는 역할
${표현식}
객체 접근 규칙
${<표현1>,<표현2>}
둘중1개가 null이면 null반환, 정수가 아닐경우 오류가 발생.
표현언어 비활성화 - 기본값은 false다.
<%@ page isELIgnored = "true" %>
2019.12.30
댓글을 입력하세요.
생각해보기에서 표현식이라고 써있는건 jsp를 말하는건가요?
m 정의를 하지 않았는데도 값이 false로 나오는 이유는 뭘까요??
표현식을 잘 쓰면 좋은데 이것을 java 파일로 열었을 때 코드가 생각보다 길더라구요. 괜히 회사에서 JSP를 짤 줄 아는 사람을 구하는지 그리고 예전버전을 쓰는것에 대해서 다시 생각해볼 수 있던 기회였던것 같습니다.
감사합니다.
좋은 강의 감사합니다!
한가지 궁금한게, 강의도중 자바구문을 EL구문과 비교하는 부분에서
페이지스코프에서는 PageContext의 getAttribute 메서드를 사용하는 반면에
Request, Session, Application은 뒤에 Context를 붙이지 않더군요. getter, setter 메서드를 사용하더라구요.
근데 찾아보니 위의 세 스코프에서도 RequestContext같은 객체가 존재하는데 이런 차이는 왜 생긴걸까요
코딩을 못하는 사람들을 위한 코딩이라는 건감?.... 왜 전 코딩 배운 사람인데 이게 더 어려워 보이는 걸까요?
EL문법을 사용하면서 ${k+5} 와 같은 문자열을 그대로 출력하는 방법은 없나요?
좋은 강의 감사합니다. 세번째 영상 2분 40초 가량부터 화면이 반짝거립니다.