sitelink1 | |
---|---|
sitelink2 | |
sitelink3 | |
extra_vars6 |
http://blog.empas.com/ahnyounghoe/13205535

9. JSP 화면 작성
JSTL을 사용하여 화면을 작성해보죠. Spring MVC 어플리케이션 개발 <4> 화면 요구 작성에서 작성했던 jsp 코드를 기반으로 해보죠.

아래는 일단 전체코드입니다. 주요 내용만 살펴보죠.
<jsp:directive.page contentType="text/html; charset=UTF-8"/>
<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jstl/fmt_rt" prefix="fmt" %>
<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jstl/fmt_rt" prefix="fmt" %>
<html>
<head></head>
<body>
<table border="1">
<c:forEach items="${articleList}" var="articleLink">
<tr><td rowspan="4">별점</td>
<td>
<a href="${articleLink.link}" target="blank">
${articleLink.title}</a></td></tr>
<tr><td><a href="viewUserCtrb.do?user=${articleLink.registrator.id}" target="blank">
${articleLink.registrator.id}</a>
(<fmt:formatDate value="${articleLink.regiDate}" type="date" pattern="yyyy/MM/dd" />)</td></tr>
<tr><td>${articleLink.description}</td></tr>
<tr><td>의견 수/카테고리</td></tr>
</c:forEach>
</table>
</body>
</html>
<head></head>
<body>
<table border="1">
<c:forEach items="${articleList}" var="articleLink">
<tr><td rowspan="4">별점</td>
<td>
<a href="${articleLink.link}" target="blank">
${articleLink.title}</a></td></tr>
<tr><td><a href="viewUserCtrb.do?user=${articleLink.registrator.id}" target="blank">
${articleLink.registrator.id}</a>
(<fmt:formatDate value="${articleLink.regiDate}" type="date" pattern="yyyy/MM/dd" />)</td></tr>
<tr><td>${articleLink.description}</td></tr>
<tr><td>의견 수/카테고리</td></tr>
</c:forEach>
</table>
</body>
</html>
jstl을 쓰기 위해서 taglib 지시문을 넣어야 합니다.
테이블 안에 TR/TD는 articleList(컨트롤러가 반환해준 모델의 이름)에 들어 있는 객체 개수만큼 반복해야 합니다. JSTL Core의 forEach 태그를 사용합니다. items에는 모델의 이름을 var에는 모델에서 반환되는 객체의 변수 이름으로 사용할 것을 지정합니다.
아티클 제목에 링크를 걸어주도록 출력을 합니다.
위에 보이는 그림에서 올린이(시간) 부분인데요. 아직 정의하지 않았지만 잠적정으로 사용자가 기여한 내용을 보기 위한 요청이름을 viewUserCtrb.do로 링크를 걸어줬구요. 해당 사용자가 누구인지 매개변수로 id를 주었죠. 링크를 거는 텍스트는 역시 사용자 id입니다. 그리고 보니, 사용자 id는 문자열로 해야 하는데 정수로 했네요. 관련 내용을 수정 하겠습니다만, 앞의 글은 수정하지 않습니다.
그리고 JSTL Format 태그 중에 formatDate를 써서 '2006/03/27' 형태로 날짜를 출력합니다.
설명이 나올 영역입니다.
제가 여기에 articleList라고 오타를 넣었더니 비상식적인 예외가 나오더군요. JSP는 디버깅이 어렵기 때문에 번거롭더라도 테스팅을 강화해야 하는 영역이라고 볼 수도 있습니다. 기회가 된다면(?) Toby님의 JSP UnitTest의 내용을 참고로 테스팅을 추가해보면 좋을 것 같습니다. Cactus는 실제로 수행하기엔 너무 번거로와서 Mock 기반 테스팅이 실용적일 것 같습니다.
이제 JSTL 사용을 위해서 아래 라이브러리를 추가해야 합니다. 모두 spring zip의 lib에 있습니다. 괄호 안은 spring zip의 lib 아래 폴더 명. jstl.jar (j2ee) standard.jar (jakarta-taglibs)

테스트 데이터를 입력하고 본 결과 화면입니다.