5. 뷰 컴포넌트 만들기
MemberListServlet 클래스로부터 받은 회원 목록 데이터를 가지고 화면을 생성하는 JSP를 web05 프로젝트에서 webapp폴더 아래에 member 폴더를 만들고 MemberList.jsp를 생성한다.
<%@page import="spms.vo.Member"%>
<%@page import="java.util.ArrayList"%>
<%@page
language="java"
contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!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=UTF-8">
<title>회원 목록</title>
</head>
<body>
<h1>회원목록</h1>
<p><a href='add'>신규 회원</a></p>
<%
ArrayList<Member> members = (ArrayList<Member>)request.getAttribute("members");
for(Member member : members) {
%>
<%=member.getNo()%>,
<a href='update?no=<%=member.getNo()%>'><%=member.getName()%></a>,
<%=member.getEmail()%>,
<%=member.getCreatedDate()%>
<a href='delete?no=<%=member.getNo()%>'>[삭제]</a><br>
<%} %>
</body>
</html>
page 지시자의 import 속성은 JSP 엔진이 서블릿 소스 MemberList_jsp.java를 생성할 때 다음과 같이 import 코드를 만든다.
C:\javaide\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\work\Catalina\localhost\web05\org\apache\jsp\member/MemberList_jsp.java
import spms.vo.Member;
import java.util.ArrayList;
JSP 페이지에 자바 코드를 넣고자 스크립트릿 태그를 사용하여 MemberListServlet 클래스가 넘겨준 회원 목록 데이터를 꺼내고자 getAttribute()를 호출하였다.
<%
ArrayList<Member> members = (ArrayList<Member>)request.getAttribute("members");
for(Member member : members) {
%>
<%} %>
request는 JSP 내장 객체라 불리며, _jspService() 메서드의 매개변수로 선언된 HttpServletRequest 객체다. 따라서 request는 변수 선언 없이 바로 사용할 수 있다.
request로부터 회원 목록을 꺼내고 나서 반복문을 사용하여 회원 정보를 출력한다. 출력 형식은 다음과 같다.
번호,
<a href='update?no=번호'>이름</a>,
이메일,
등록일,
<a href='delete?no=번호'>[삭제]</a><br>
위 형식으로 출력하기 위해 작성한 코드다.
<%=member.getNo()%>,
<a href='update?no=<%=member.getNo()%>'><%=member.getName()%></a>,
<%=member.getEmail()%>,
<%=member.getCreatedDate()%>
<a href='delete?no=<%=member.getNo()%>'>[삭제]</a><br>
번호와 이름, 이메일, 등록일을 출력하기 위해 JSP 표현식 <%= %>을 사용했다.
6. 회원 목록 테스트
MemberListServlet 클래스로부터 출력 부분을 분리하여 MemberList.jsp로 이관하였다. 정상적으로 동작하는지 테스트한다. 톰캣 서버를 시작하고 http://localhost:9999/web05/member/list를 웹 브라우저로 테스트한다(그림 1).
이전과 같이 정상적으로 실행 된다. MemberList.jsp에서 만든 화면의 소스를 살펴본다. 웹 브라우저(크롬 기준)에서 우클릭하여 컨텍스트 메뉴를 띄워 '페이지 소스 보기'를 클릭하거나 Ctrl + U를 누른다(그림 2).
MemberList.jsp에서 출력한 형식 그대로 HTML이 생성되었음을 확인할 수 있다.
이렇게 서블릿에서 출력 작업을 분리하여 JSP에 위임하는 구조로 만들면 출력문을 작성하기도 쉽고, 소스 코드를 유지 보수하기도 편리하다. 이처럼 하나의 객체에게 많은 역할을 맡기기 보다 그 역할을 쪼개어 여러 객체에게 위임하는 것이 객체지향 프로그래밍을 잘 짜는 방법이다.
참고도서 : https://freelec.co.kr/book/1674/
[열혈강의] 자바 웹 개발 워크북
[열혈강의] 자바 웹 개발 워크북
freelec.co.kr
'교재 실습 > 자바 웹 개발 워크북' 카테고리의 다른 글
44. 포워딩과 인클루딩 (2) (0) | 2022.06.14 |
---|---|
43. 포워딩과 인클루딩 (1) (0) | 2022.06.13 |
41. 서블릿에서 뷰 분리하기 (2) (0) | 2022.06.11 |
40. 서블릿에서 뷰 분리하기 (1) (0) | 2022.06.09 |
39. JSP의 주요 구성 요소 (3) (0) | 2022.02.05 |
댓글