본문 바로가기

웹 프로그래밍/JSP

[EL] 자바빈즈, 맵을 활용한 EL

자바 빈즈 활용

package kr.ac.kopo.board;

/*
	자바빈즈 클래스 규칙
	
	1. package 존재
	2. class의 접근제한자 public
	3. 모든 멤버변수 private
	4. 디폴트 생성자가 선언되어 있어야 함. 
	5. getter/ setter 메소드가 선언 돼 있어야 함
 
 */

public class BoardVO {
	private int no;
	private String title;
	private int viewCnt;
	
	public BoardVO() {
	}

	public int getNo() {
		return no;
	}

	public void setNo(int no) {
		this.no = no;
	}

	public String getTitle() {
		return title;
	}

	public void setTitle(String title) {
		this.title = title;
	}

	public int getViewCnt() {
		return viewCnt;
	}

	public void setViewCnt(int viewCnt) {
		this.viewCnt = viewCnt;
	}
	

}
<%@page import="kr.ac.kopo.board.BoardVO"%>
<%@page import="kr.ac.kopo.board.*"%> <%-- 와일드 카드 사용하여 해당 패키지 모두 임포트 --%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>


<%-- 아래의 내용이 바디 태그 내에 있어도 상관없다. --%>
<%

	BoardVO b = new BoardVO();

	b.setNo(10);
	b.setTitle("hello");
	
	// 공유영역에 해당 변수를 추가하자 
	
	// pageContext 영역에 객체 등록
	// 이름 : board 값 : 생성된 BoardVO 객체
	pageContext.setAttribute("board", b);
	
%>




<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%--
	${board.no} ==> 자바빈즈 혹은 맵이 될 수 있다.
 --%>

	no : <%= b.getNo() %><br>
	
<%-- EL로 자바 객체를 표현하려면, 우선 공유영역에 해당 변수를 등록해야 한다. 저 위에서 공유영역에 등록하는 코드를 추가하자. --%>

<%-- 우선 공유영역에 등록된 객체를 자바표현식으로 나타내보자. --%>
	no : <%= pageContext.getAttribute("board") %><br> <%-- 이건 객체의 주소값이 나온다. --%>
	no : <%= ((BoardVO) pageContext.getAttribute("board")).getNo() %><br>
	
	title : <%= b.getTitle() %><br>
	title : <%= ((BoardVO)pageContext.getAttribute("board")).getTitle() %><br>
	
<%-- EL 방식으로 공유영역에 등록된 객체를 표현해보자. 자바표현식보다 훨씬 간편하다. --%>
	el no : ${ board.no }<br>
	el title : ${ board.title } <br>
    <%-- el aaa : ${ board.aaa }  ====> aaa라는 게터가 없기 때문에 500에러가 난다. --%> 

</body>
</html>

 

맵 활용

<%@page import="java.util.HashMap"%>
<%@page import="java.util.Map"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    
<%
	Map<String, String> b = new HashMap<>();

	b.put("no", "10");
	b.put("title", "hello");

	pageContext.setAttribute("board", b);
	


%>  
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	no : <%= b.get("no") %><br>
	title : <%= b.get("title") %><br>
	
	<%-- 공유영역에 등록하고 EL로 표현해보자. --%>
	el no : ${ board.no }<br>
	el title : ${ board.title }<br>
    el aaa : ${ board.aaa } <%-- 결과는==> empty %>
	
</body>
</html>