※ 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>