반응형

#47강 EL(Expression Language)

- View를 위한 데이터 추출 표현식 EL

- 기존에 저장소에서 값을 꺼내오기 위해 그리고 출력하기 위해 복잡한 코드를 사용했는데, EL을 사용함으로서 복잡함이 개선.

// 기존 코드
<%=request.getAttribute("result") %>입니다. 

// EL을 사용하여 저장소에서 값을 가져오는 코드
${result}입니다.

 

- ArrayList, 배열 등 조금 더 복잡한 값을 꺼내오기 위해 EL 사용 시

package com.newlecture.web;

import java.io.IOException;

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("/spag")
public class Spag extends HttpServlet {
	@Override
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		int num = 0;
		String num_ = request.getParameter("n");
		if(num_ != null && !num_.equals(""))
			num = Integer.parseInt(num_);

		String result;
		
		if(num % 2 != 0) 
			result = "홀수";
		else 
			result = "짝수";
		
		request.setAttribute("result", result);
		
		String[] names = {"newlec", "dragon"};
		
		request.setAttribute("names", names);
		
		//redirect(현재 작업내역과 전혀 상관없이 새로운 요청 하도록 하는 것)
		//forward(현재 작업내역 이어갈 수 있도록 공유)
		//forward 관계에서 사용할 수 있는 저장소는 request
		RequestDispatcher dispatcher = request.getRequestDispatcher("spag.jsp");
		dispatcher.forward(request, response);
	}
}
<%@ 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>
	<%=request.getAttribute("result") %>입니다. 
	${result}입니다.<br>
	${names[0]}
	${names[1]}
</body>
</html>

 

- Map 등 조금 더 복잡한 값을 꺼내오기 위해 EL 사용 시

package com.newlecture.web;

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("/spag")
public class Spag extends HttpServlet {
	@Override
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		int num = 0;
		String num_ = request.getParameter("n");
		if(num_ != null && !num_.equals(""))
			num = Integer.parseInt(num_);

		String result;
		
		if(num % 2 != 0) 
			result = "홀수";
		else 
			result = "짝수";
		
		// 기존
		request.setAttribute("result", result);
		
		// 배열 등 사용 시		
		String[] names = {"newlec", "dragon"};
		
		request.setAttribute("names", names);
		
		// Map<키, 값> 사용 시
		Map<String, Object> notice = new HashMap<String, Object>();
		notice.put("id", 1);
		notice.put("title", "EL은 좋아요.");
		
		request.setAttribute("notice", notice);
		
		//redirect(현재 작업내역과 전혀 상관없이 새로운 요청 하도록 하는 것)
		//forward(현재 작업내역 이어갈 수 있도록 공유)
		//forward 관계에서 사용할 수 있는 저장소는 request
		RequestDispatcher dispatcher = request.getRequestDispatcher("spag.jsp");
		dispatcher.forward(request, response);
	}
}
<%@ 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>
	<%=request.getAttribute("result") %>입니다. 
	${result}입니다.<br>
	${names[0]}
	${names[1]}<br>
	${notice.title}
	
</body>
</html>

출력 결과(기존, EL사용)

반응형

+ Recent posts