61. JSTL 사용하기 (6)
3. JSTL 활용 - 회원 목록 페이지에서 자바 코드 없애기
JSTL 태그를 활용하여 회원 목록 페이지를 변경한다. EL과 더불어 JSTL을 사용하면 JSP 페이지에서 자바 코드를 완전히 제거할 수 있다. JSP 페이지에서 자바 코드를 제거하는 이유는 2가지가 있다.
첫째, JSP 페이지에 자바 코드가 있으면 웹 디자이너와 웹 퍼블리셔와 함께 작업하기 어렵다.
둘째, JSP 페이지에 자바 코드를 넣지 않으면, 자연스럽게 JSP 페이지에 비즈니스 로직을 작성하지 않게 된다.
MVC 아키텍처의 핵심은 비즈니스 로직은 모델 객체에게, 화면은 JSP에게 맡기는 것이다.
회원 목록 화면을 출력하는 MemberList.jsp에서 page 지시자로 임포트 되어있는 Member 클래스와 ArrayList 클래스를 삭제한다. 또한, request 보관소에서 명함 목록을 꺼내는 <jsp:useBean> 액션 태그도 삭제한다.
<!-- <%@ 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>
<jsp:include page="/Header.jsp"/>
<h1>회원목록</h1>
<p><a href='add'>신규 회원</a></p>
<!-- <jsp:useBean id="members"
scope="request"
class="java.util.ArrayList"
type="java.util.ArrayList<spms.vo.Member>"/> -->
<%
//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>
<% } %>
<jsp:include page="/Tail.jsp"/>
</body>
</html>
<%@ page %> 지시자 다음에 taglib 지시자를 사용하여 JSTL 기본(Core) 태그 라이브러리를 선언한다.
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ 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">
MemberList.jsp의 반복문을 <c:forEach> JSTL 태그로 대체한다. 그리고 값을 출력하는 JSP 표현식 태그 '<%= %>'을 EL 표현식으로 대체한다.
<c:forEach var="member" items="${members}">
${member.no},
<a href='update?no=${member.no}'>${member.name}</a>,
${member.email},
${member.createdDate}
<a href='delete?no=${member.no}'>[삭제]</a><br>
</c:forEach>
이제 MemberList.jsp 파일에는 어떤 자바 코드도 존재하지 않는다. 소스가 훨씬 간결해졌다. 태그 위주로 되어 있어 웹 디자이너나 웹 퍼블리셔도 손쉽게 편집할 수 있으며, 특히 EL 표기는 매우 직관적이어서 태그를 다루는 수준이면 어렵지 않게 사용할 수 있다.
회원 목록 페이지를 다시 실행한다(그림 1).
회원 목록 화면은 그대로이다. 하지만, 내부 구조는 유지보수하기 쉽게 만들어져 있다. 이것이 JSTL과 EL을 사용하는 이유이다. 다음은 완성된 MemberList.jsp 소스이다.
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ 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=UTF-8">
<title>회원 목록</title>
</head>
<body>
<jsp:include page="/Header.jsp"/>
<h1>회원목록</h1>
<p><a href='add'>신규 회원</a></p>
<c:forEach var="member" items="${members}">
${member.no},
<a href='update?no=${member.no}'>${member.name}</a>,
${member.email},
${member.createdDate}
<a href='delete?no=${member.no}'>[삭제]</a><br>
</c:forEach>
<jsp:include page="/Tail.jsp"/>
</body>
</html>