김갱환
맨땅에 코딩
김갱환
전체 방문자
오늘
어제
  • 분류 전체보기 (239)
    • ⁂ 맨땅에 코딩 (11)
      • : Story (3)
      • : MiniProject 'MyWeb' (1)
      • : Final Project (5)
      • : Josa-Moa 한국어 조사 처리 프로젝트 (1)
    • —————Frontend——————————————.. (0)
    • ⁂ HTML (10)
      • : 기본 익히기 (10)
    • ⁂ CSS (15)
      • : 기본 익히기 (15)
    • ⁂ Java Script (32)
      • : 기본 익히기 (28)
      • : 자바스크립트 라이브러리 (1)
      • : 연습 문제 (3)
    • ⁂ jQuery (11)
      • : 기본 익히기 (11)
    • ⁂ Bootstrap (3)
      • : 기본 익히기 (3)
    • ⁂ TailWind CSS (1)
    • ⁂ AJAX (5)
      • : 기본 익히기 (5)
    • ⁂ Vue.js (3)
      • : 기본 익히기 (3)
    • —————DB : Data Base————————.. (0)
    • ⁂ Oracle DB (27)
      • : 기본 익히기 (24)
      • : 연습 문제 (3)
    • ⁂ MyBatis Framework (15)
      • : 기본 익히기 (15)
    • —————Backend———————————————.. (0)
    • ⁂ Java (62)
      • : 기본 익히기 (42)
      • : JDBC - Java DataBase Conn.. (4)
      • : Crawling (2)
      • : 독학으로 공부하기(과거) (11)
      • : 연습문제 (3)
    • ——————Web————————————————— (0)
    • ⁂ JSP (28)
      • : 기본 익히기 (28)
    • ⁂ Spring FrameWork (15)
      • : Legacy Project (1)
      • : 기본 익히기(Boot 기반) (14)
    • ——————————————————————— (0)
    • ⁂ Error Note (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 코딩
  • 연산자 #기본연산자 #코딩 #자바 #독학 #자바공부 #자바연산자
  • 풀스택
  • web.xml수정
  • 개발자
  • 프론트앤드
  • 자바공부
  • 코딩공부 #코딩 #자바 #자바독학 #자바공부 #개발자 #프론트앤드 #백앤드 #풀스택
  • 코딩 #코딩공부 #상수 #리터럴 #형변환 #개발자 #자바 #자바공부 #자바독학
  • http에러메세지
  • ErrorPage
  • 객체지향프로그래밍
  • 코딩공부 #자바공부
  • 백앤드
  • httperror
  • HTML공부
  • 비트연산자 #코딩공부 #자바공부 #코딩 #자바 #프로그래밍 #개발자
  • 코딩공부
  • 자바
  • 코딩 #코딩공부 #프론트앤드 #백앤드 #풀스택개발자

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
김갱환

맨땅에 코딩

⁂ JSP/: 기본 익히기

[JSP] #11-3 EL(Expression Language) - 내장 객체

2022. 10. 26. 13:18

1. EL 파라미터

 

 JSP 페이지에서 내장 객체를 지원한다.

 내장 객체란, 내부적으로 변수 선언과 초기화 작업이 자동으로 되는 객체로서 개발자는 내장 객체를 사용할 때 참조변수의 이름을 기억하고 있다가 참조변수로 바로 접근하여 사용할 수 있다.

 

 EL에서도 JSP처럼 내장 객체를 지원하므로 필요한 객체는 내장 객체를 참조변수 이름으로 곧바로 사용할 수 있다.

 EL에서 지원하는 내장객체는 다음과 같다.

내장객체  설명
pageContext  JSP 내장 객체 pageContext와 같습니다.
pageScope  pageContext에 등록된 데이터의 이름과 값을 저장하고 있는 map객체
requestScope  HttpServletRequest에 등록된 데이터의 이름과 값을 저장하고 있는 map객체
sessionScope  HttpSession에 등록된 데이터의 이름과 값을 저장하고 있는 map객체
applicationScope  ServletContext에 등록된 데이터의 이름과 값을 저장하고 있는 map 객체
param  QueryString의 이름과 값을 저장하고 있는 map객체
paramValues  같은 이름으로 전달된 질의 문자열의 이름과 값들을 저정하고 있는 map 객체
header  요청정보 헤더의 정보를 이름과 값으로 저장하고 있는 map객체
headerValues  요청정보 헤더의 정보들을 이름과 값들을 저장하고 있는 map객체
cookie  요청을 보낸 클라이언트의 쿠기 이름과 값을 저장하고 있는 map객체
initParam  웹 애플리케이션에 저장한 초기 파라미터의 이름과 값을 저장하고 있는 map 객체

 

 우린 이 모든 것들을 다 사용하진 못하고 주로 사용되는 param 내부객체부터 사용해보려 한다.

 

 

2. param

 우리가 어느 폼에서 id와 pw를 받아와서 불러오려 한다.

 이 때 param은 받아온 어느 이름을 가진 데이터의 값을 저장하고 있는 객체이다.

 이것을 우리는 jsp에서 request.getParameter("")로 가져왔었다.

 

 여기서 param이라는 글자가 보이지 않는가?

 파라미터의 약자이다.

1) JSP방식<br>
아이디 : <%=request.getParameter("id")%><br>
비번 : <%=request.getParameter("pw")%><br>
<hr>
2) EL방식<br>
아이디 : ${param.id}<br>
비번 : ${param.pw}<br>

 

 

3. 내장 객체(Collection)

 우리가 JSP에서 내장 객체로 사용되었던 Scope 범위가 있다.

pageContext.setAttribute("kor", 100);	// 현재 페이지에서만 유효
request.setAttribute("eng", 200);		// 전역변수(부모와 자식 페이지에서만 유효)
session.setAttribute("mat", 300);		// 전역변수(모든 페이지에서 유효, 개인 사용자, 시간)
application.setAttribute("aver", 400);	// 전역변수(모든 페이지에서 유효, 모든 사용자)

 

 이 안에 저장된 값을 불러올 때 EL에서 사용되는 내장객체도 있다.

 JSP와 크게 차이점은 없기 때문에 그렇게 햇갈리진 않을 듯 하다.

 

1-1) JSP 문법

1) JSP<br>
kor : <%=pageContext.getAttribute("kor")%><br>
eng : <%=request.getAttribute("eng")%><br>
mat : <%=session.getAttribute("mat")%><br>
aver : <%=application.getAttribute("aver")%><br>

 

 2-1) EL 문법

2) EL<br>
kor : ${pageScope.kor}<br>
eng : ${requestScope.eng}<br>
mat : ${sessionScope.mat}<br>
aver : ${applicationScope.aver}<br>

 

 2-2) 내장 객체명 생략

 그런데 여기서 EL문법을 더 간소화 시킬 수도 있다!!

kor : ${kor}<br>
eng : ${eng}<br>
mat : ${mat}<br>
aver : ${aver}<br>

!!! 된다 !!!

 이게 어떻게 된 일일까?

 EL에서는 page -> request -> session -> applicaion 순으로 자동 검색을 한다.

 그래서 내장객체의 범위를 따로 쓰지 않아도 된다.

 

 2-3) 내장 객체명 동일할 때

 그렇다면 만약 다른 내장객체의 같은 이름의 값이 있으면 어떻게 될까?

<%
	pageContext.setAttribute("num", 500);	// 현재 페이지에서만 유효
	request.setAttribute("num", 600);		// 전역변수(부모와 자식 페이지에서만 유효)
	session.setAttribute("num", 700);		// 전역변수(모든 페이지에서 유효, 개인 사용자, 시간)
	application.setAttribute("num", 800);
%>
	<!-- 내장객체명이 생략되면 자동으로 작은 영역순으로 찾게 된다 -->
	num : ${num}<br> <!-- 500 -->

 위의 코드에서 num을 출력시키면 500이 나온다.

 작은 영역순으로 찾기 때문이다.

 

 2-3) 없는 내장 객체명을 불러올 때

<!-- 각 Scope의 내장 변수가 없는 경우 -->
JSP : <%=request.getAttribute("uname")%> <!-- null -->
<br>
EL : @${requestScope.uname}@ <!-- "" -->

 

 uname이란 것을 선언해주지 않았다.

 이 경우에 아래와 같은 결과가 출력된다.

 

 request 객체는 값이 없으면 null 이 잡히지만,

 EL은 값이 없다면 "", 즉 empty 상태로 값을 출력시킨다.

 

 이 차이점을 잘 알아두면 좋다!

 

 3) JSP와 EL로 값을 공유하는 방법

 JSP와 EL은 같은 페이지 내에서는 서로 값을 공유할 수 없다.

	<h3>* JSP와 EL의 값 공유 *</h3>
<%
	// JSP와 EL은 현재 페이지에서는 서로 값을 공유할 수 없다
	String uname="아이티윌";
%>
	이름(JSP) : <%=uname%><br>
	이름(EL) : ${uname}

 

 이 값들을 공유하고 싶다면 pageScope를 활용하면 된다.

<%
	// 현재 페이지에서는 JSP와 EL이 서로 값을 공유하기 위해서는 pageScope를 활용한다
	pageContext.setAttribute("uid", "KOREA");
%>
	아이디(JSP) : <%=pageContext.getAttribute("uid")%><br>
	아이디(EL) : ${pageScope.uid}<br>
	아이디(EL) : ${uid}

저작자표시 비영리 동일조건 (새창열림)

'⁂ JSP > : 기본 익히기' 카테고리의 다른 글

[JSP] #11-5 JSTL 제어문  (0) 2022.10.26
[JSP] #11-4 JSTL(JSP Standard Tag Library, JSP전용태그)  (0) 2022.10.26
[JSP] #11-3 EL(Expression Language) - 기본 문법  (0) 2022.10.26
[JSP] #11-2 Http 에러페이지 만들고 띄우기 / web.xml 파일 수정하기  (0) 2022.10.26
[JSP] #11-1 MVC 모델 2를 알아보자 > EL/JSTL의 초석!  (0) 2022.10.26
    '⁂ JSP/: 기본 익히기' 카테고리의 다른 글
    • [JSP] #11-5 JSTL 제어문
    • [JSP] #11-4 JSTL(JSP Standard Tag Library, JSP전용태그)
    • [JSP] #11-3 EL(Expression Language) - 기본 문법
    • [JSP] #11-2 Http 에러페이지 만들고 띄우기 / web.xml 파일 수정하기
    김갱환
    김갱환
    코딩의 코자도 모르는 이의 공부 기록장

    티스토리툴바