[jsp] EL 문 / 값 받아오기 / 출력하기

seulki·2022년 10월 24일
0

jsp

목록 보기
47/51
post-thumbnail
post-custom-banner

🎈 EL 문

  • Expression Language
  • 값을 간결하고 간편하게 출력할 수 있도록 해주는 언어
  • <%= %>, out.print() 과 같은 자바코드를 더이상 사용하지 않고 좀더 간편하게 출력을 지원하기 위한 도구
  • 배열, 컬렉션, javaBean 프로퍼티에서도 사용된다.
  • page > request > session > application
    • 범위가 작은 page 부분부터 찾아나감
  • 내장 객체들을 가진다.
    • pageContext, pageScope, requestScope, sessionScope, applicationScope, param, paramValues


🎈 jsp 코드 부분에 에러 발생할 때 해결방법!

  • 마우스 우클릭 Properties

  • Project Facets -> Runtimes

  • 체크박스 선택 후 Apply -> Apply and Close!



🎈 EL 표현식

  • EL 구문은 ${...} 내에 표현식으로 표현한다.
  • key, value 값으로 저장해야한다.
  • ElTest.java
package com.koit.web.Servlet;

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/eltest")
public class ElTest extends HttpServlet{

	@Override
	protected void service(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException {
		//request 영역에 객체 저장
		arg0.setAttribute("result", "짝수");
		
		String[] names = {"abc", "def"};
		arg0.setAttribute("names", names);
		
		Map<String, Object> notice = new HashMap();
		notice.put("id", 1);
		notice.put("title", "el study");
		arg0.setAttribute("notice", notice);
		
		//경로에 있는 파일경로로 요청을 전달, 보낸다.
		RequestDispatcher dispatcher = arg0.getRequestDispatcher("/el/el_test.jsp");
		dispatcher.forward(arg0, arg1);
		
	}
}


  • el_test.jsp
<%@ 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 data = "hello";
		//pageContext : 현재 페이지 내에 저장
		pageContext.setAttribute("data", data);
	%>
	
	${data }</br>
	${10 + 20 }</br>
	${10 > 3 }</br>
	
<!-- 	Servlet에서 넘어온 result출력! -->
<!-- request영역에 저장된 값 가져옴 -->
	<%=request.getAttribute("result") %>입니다.</br>
	${result }입니다.</br>
	
	${names[0] }</br>
	${names[1] }</br>
	
<!-- 	// 변수명."key"값 -->
	${notice.id }<br>
	${notice.title }</br>
</body>
</html>

  • 현재 jsp파일에서 pageConText 로 페이지에 저장되어 있는 값은 "data"인데, "result"라는 이름으로 다른 값을 저장해보자

  • 이미 Servlet 자바 파일에서 "result"라는 키값으로 넘어온 값이 아래에 출력이 되어있다.

  • 하지만 페이지에도 result라는 키값이 저장된 후에는 어떤 값이 출력이 될까? -> 범위가 작은 page부터 값을 찾아 출력하게 된다.

  • 그러므로 요청에 저장되어 있던 result를 꺼낸 값은 "짝수입니다."이고,
    페이지에 저장된 result만 출력하면 pageResult가 출력되는 것이다.

  • 이 태그 코드를 EL문으로 변경할 수 있다.

profile
웹 개발자 공부 중
post-custom-banner

0개의 댓글