|  |  |
|
이클립스와 웹 페이지
본 절에서는 접근할 데이터의 UI를 만들 것이다. 애플리케이션을 위해선 JSP 모델 2 아키텍처를 사용할 것이다. 비즈니스 로직을 처리할 서블릿을 먼저 만들고 이를 JSP로 보내 출력을 렌더링할 것이다.
서블릿 만들기
이클립스를 사용해 서블릿을 만들 것이다. Java EE 퍼스펙티브로 돌아가 야구 프로젝트를 마우스 오른쪽 단추로 클릭하고 New > Servlet을 선택한다.
그림 44. 새 서블릿
Create Servlet 대화상자가 나타날 것이다. 서블릿을 위해 Java package와 Class
name을 넣고 Next를 클릭한다.
그림 45. 서블릿 만들기
여기선 편집할 것이 없지만 서블릿에 맞는 URL을 적어놓기 바란다. 이는 서블릿에 접근해야 하는 상대적 URL이다. 이클립스는 이 서블릿 매핑을 web.xml 파일에서 자동으로 설정할 것이다. 그냥 맡기면 된다. 적어놓고 Finish를 클릭한다.
그림 46. 서블릿 정보
Servlet 클래스에서 자바 퍼시스턴스 API를 사용하여 전 선수들의 목록을 갖고 이를 JSP에 보낸다. 서블릿 코드는 Listing 10에서 확인하자.
Listing 10. PlayerServlet 코드
package org.developerworks.baseball.web;
import java.io.IOException;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.developerworks.baseball.Player;
/**
* Servlet implementation class for Servlet: PlayersServlet
*
*/
public class PlayersServlet extends javax.servlet.http.HttpServlet
implements javax.servlet.Servlet {
static final long serialVersionUID = 1L;
private EntityManagerFactory factory;
private EntityManager em;
/* (non-Java-doc)
* @see javax.servlet.http.HttpServlet#HttpServlet()
*/
public PlayersServlet() {
super();
factory = Persistence.createEntityManagerFactory("baseball");
em = factory.createEntityManager();
}
/* (non-Java-doc)
* @see javax.servlet.http.HttpServlet#doGet(HttpServletRequest request,
HttpServletResponse response)
*/
@SuppressWarnings("unchecked")
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
|-------10--------20--------30--------40--------50--------60--------70--------80--------9|
|-------- XML error: The previous line is longer than the max of 90 characters ---------|
List<Player> players =
em.createQuery("select p from Player p").getResultList();
request.setAttribute("players", players);
request.getRequestDispatcher("/players.jsp").forward(request, response);
}
/* (non-Java-doc)
* @see javax.servlet.http.HttpServlet#doPost(HttpServletRequest request,
HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
|-------10--------20--------30--------40--------50--------60--------70--------80--------9|
|-------- XML error: The previous line is longer than the max of 90 characters ---------|
this.doGet(request, response);
}
}
|
서블릿을 위한 생성자에서 자바 퍼시스턴스 API를 사용하여 "야구" 퍼시스턴스 유닛을 참조하는 EntityManager 인스턴스를 만든다는 것에 주목하자. 이는 Listing 9처럼 persistence.xml에서 온다.
뷰를 위해 JSP 만들기
이클립스에서 JSP를 만들기는 쉽다. 야구 프로젝트를 마우스 오른쪽 단추로 클릭하고 New > JSP를 선택하면 된다.
그림 47. 새 JSP
야구 선수를 나열하는 것으로 시작하자. 이를 위한 코드는 Listing 11에 있다.
Listing 11. players.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Baseball Players</title>
</head>
<body>
<table>
<thead>
<tr>
<td>First Name</td>
<td>Last Name</td>
</tr>
</thead>
<c:forEach items="${players}" var="player">
<tr>
<td>${player.firstName}</td>
<td>${player.lastName}</td>
</tr>
</c:forEach>
</table>
</body>
</html>
|
|  |
|