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

임승현·2023년 1월 20일
0

MVC

목록 보기
6/27

🐧EL 미사용·사용 예제

※ xyz.itwill.el → Member.java 클래스 생성

📃Member.java

package xyz.itwill.el;
//
public class Member {
	private String name;
	private Car car;
	//
	public Member() {
		// TODO Auto-generated constructor stub
	}
	public Member(String name, Car car) {
		super();
		this.name = name;
		this.car = car;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Car getCar() {
		return car;
	}
	public void setCar(Car car) {
		this.car = car;
	}
}

※ webapp/el → member.jsp 생성
반드시 member.jsp로 실행해야함

📃member.jsp

<%@page import="xyz.itwill.el.Member"%>
<%@page import="xyz.itwill.el.Car"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%-- Member 객체를 생성하여 Request Scope 속성값으로 저장하고 다른 웹프로그램(JSP)로 포워드 이동하는 JSP 문서 - 요청을 처리하는 웹프로그램(Model) --%>
<%
	Member member=new Member("홍길동", new Car("싼타페", "하얀색"));
	//
	//request 내장객체에 Member 객체를 속성값으로 저장 - Request Scope
	//Request Scope : 스코프 속성값을 저장한 웹프로그램과 스레드가 이동된 웹프로그램에서만
	//속성값을 객체로 반환받아 사용 가능
	request.setAttribute("member", member);
	//
	//포워드 이동 : 현재 웹프로그램의 명령을 실행하는 스레드를 다른 웹프로그램으로 이동시켜 명령을 실행하도록 제공하는 기능
	//→ 스레드가 이동되는 웹프로그램에서는 현재 웹프로그램의 request 객체와 response 객체를 전달받아 사용
	request.getRequestDispatcher("member_non_el.jsp").forward(request, response);
	//
	//request.getRequestDispatcher("member_el.jsp").forward(request, response);
%>

※ webapp/el → member_non_el 생성

📃member_non_el

<%@page import="xyz.itwill.el.Member"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%-- 요청페이지(member.jsp)의 Request Scope 속성값을 객체로 반환받아 클라이언트에게 전달하는 JSP 문서 --%>
<%-- → 요청페이지(member.jsp)에 대한 실행 결과를 제공받아 응답 처리하는 웹프로그램(View) --%>
<%-- → 응답페이지(member_non_el.jsp)를 요청한 경우 Request Scope 속성값이 없으므로 NullPointerException 발생 --%>
<%
	//Request Scope 속성값을 객체로 반환받아 저장
	Member member=(Member)request.getAttribute("member");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>MVC</title>
</head>
<body>
	<h1>EL 미사용</h1>
	<hr>
	<%-- <p>회원 = <%=member %></p> --%>
	<p>회원의 이름 = <%=member.getName() %></p>
	<%-- <p>회원의 자동차 = <%=member.getCar() %></p> --%>
	<p>회원의 자동차 모델명 = <%=member.getCar().getModelName() %></p> 
	<p>회원의 자동차 색상 = <%=member.getCar().getCarColor() %></p> 
</body>
</html>

※ webapp/el → member_el 생성

📃member_el

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%-- 요청페이지(member.jsp)의 Request Scope 속성값을 객체로 반환받아 클라이언트에게 전달하는 JSP 문서 --%>
<%-- → 요청페이지(member.jsp)에 대한 실행 결과를 제공받아 응답 처리하는 웹프로그램(View) --%>
<%-- → 응답페이지(member_el.jsp)를 요청한 경우에도 EL이 미실행될뿐 NullPointerException 미발생 --%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>MVC</title>
</head>
<body>
	<h1>EL 사용</h1>
	<hr>
	<%-- <p>회원 = ${member }</p> --%>
	<p>회원의 이름 = ${member.name }</p>
	<%-- <p>회원의 자동차 = ${member.car}</p> --%>
	<p>회원의 자동차 모델명 = ${member.car.modelName}</p>
	<p>회원의 자동차 색상 = ${member.car.carColor}</p>
	<hr>
	<%-- EL 표현식에서 . 연산자 대신 [] 연산자를 이용하여 필드명(맵키)으로 필드값(맵값)을 제공받아 출력 --%>
	<%-- → [] 연산자에 필드명(맵키) 사용시 반드시 ""으로 표현 --%> 
	<p>회원의 이름 = ${member["name"] }</p>
	<p>회원의 자동차 모델명 = ${member["car"]["modelName"]}</p>
	<p>회원의 자동차 색상 = ${member["car"]["carColor"]}</p>
</body>
</html>

0개의 댓글