[MVC 3-2] EL 미사용·사용 예제

임승현·2023년 1월 20일
0

MVC

목록 보기
4/27

🐧EL 미사용·사용 예제

※ xyz.itwill.el 패키지 생성 → Car.java 클래스 생성

📃Car.java

package xyz.itwill.el;
//
public class Car {
	private String modelName;
	private String carColor;
	//
	public Car() {
		// TODO Auto-generated constructor stub
	}
	public Car(String modelName, String carColor) {
		super();
		this.modelName = modelName;
		this.carColor = carColor;
	}
	public String getModelName() {
		return modelName;
	}
	public void setModelName(String modelName) {
		this.modelName = modelName;
	}
	public String getCarColor() {
		return carColor;
	}
	public void setCarColor(String carColor) {
		this.carColor = carColor;
	}
}

※ webapp/el 폴더에 basic_string.jsp 생성

📃basic_string.jsp

<%@page import="xyz.itwill.el.Car"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
	//pageCotext 내장객체에 Car 객체를 속성값으로 저장
	pageContext.setAttribute("car", new Car("싼타페","하얀색"));
%>    
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>MVC</title>
</head>
<body>
	<h1>EL(Expression Language)</h1>
	<hr>
	<h2>EL 미사용</h2>
	<%
		//pageContext 내장객체에 저장된 속성값을 Car 객체로 반환받아 저장
		Car car=(Car)pageContext.getAttribute("car");
		//전달받은 속성명에 대한 속성값이 없는 경우 [null] 반환
		// => 참조변수에 [null]이 저장된 상태에서 메소드를 호출하면 NullPointerException 발생
		//Car car=(Car)pageContext.getAttribute("pageCar");
		//
		//객체의 필드값을 반환받아 저장
		String modelName=car.getModelName();
		String carColor=car.getCarColor();
	%>
	<p>자동차 = <%=car %></p>
	<p>자동차 모델명 = <%=modelName %></p>
	<p>자동차 색상 = <%=carColor %></p>
	<hr>
	<h2>EL 미사용</h2>
	<p>자동차 = ${car }</p>
	<%-- EL 표현식으로 제공받은 객체의 메소드 호출 가능 --%>
	<%-- <p>자동차 모델명 = ${car.getModelName() }</p> --%>
	<%-- 스코프 속성값이 객체인 경우 ${속성명.필드명} 형식의 표현식을 사용하여 객체의 
	필드값을 제공받아 출력 가능 - EL 표현식으로 필드명을 사용하면 Getter 메소드 자동 호출 --%>
	<%-- => Getter 메소드 작성 규칙에 맞지 않게 선언된 경우 또는 Getter 메소드가 없는 경우 에러 발생 --%> 
	<p>자동차 모델명 = ${car.modelName }</p> 
	<p>자동차 색상 = ${car.carColor }</p>
	<%-- --%>
	<%-- EL 표현식의 속성명으로 제공되는 속성값이 없는 경우 EL 미실행 - NullPointerException 미발생 --%>
	<p>자동차 모델명 = ${pageCar.modelName }</p> 
</body>
</html>

0개의 댓글