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


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

    번호 제목 글쓴이 날짜 조회 수
    공지 (확인전) [2021.03.12] Eclipse에서 Spring Boot로 JSP사용하기(Gradle) 황제낙엽 2023.12.23 0
    공지 [작성중/인프런] 스프링부트 시큐리티 & JWT 강의 황제낙엽 2023.12.20 6
    43 스프링의 구조별 기능 설명 황제낙엽 2007.06.26 42
    42 실습 STEP2 - 기초편 (데이터 베이스 접속) file 황제낙엽 2007.06.21 21
    41 java.util.MissingResourceException: Can't find bundle for base name xxx, locale ko_KR 황제낙엽 2007.06.21 2362
    40 자바지기 스프링 프레임웍 아티클 황제낙엽 2007.06.04 54
    39 AOP(Aspect Oriented Programming) 황제낙엽 2007.06.03 39
    38 Spring MVC 어플리케이션 개발 <12> 간단한 조회 구현 방안 비교 황제낙엽 2007.05.27 31
    37 Spring MVC 어플리케이션 개발 <11> 간단한 조회 구현 방안 비교 황제낙엽 2007.05.27 164
    36 Spring MVC 어플리케이션 개발 <10> 도메인 객체 수정시 변경 사항 황제낙엽 2007.05.27 10
    » Spring MVC 어플리케이션 개발 <9> JSP 화면 작성 황제낙엽 2007.05.27 28
    34 Spring MVC 어플리케이션 개발 <8> Spring기반 iBatis DAO 작성 황제낙엽 2007.05.27 51
    33 Spring MVC 어플리케이션 개발 <7> Spring과 iBatis 연동을 위한 준비 황제낙엽 2007.05.26 17
    32 Spring MVC 어플리케이션 개발 <5> MVC 컨트롤러 작성 황제낙엽 2007.05.26 22
    31 Spring MVC 어플리케이션 개발 <4> 화면 요구 작성 황제낙엽 2007.05.26 19
    30 Spring MVC 어플리케이션 개발 <3> Web Application Context 파일 작성 황제낙엽 2007.05.26 125
    29 Spring MVC 어플리케이션 개발 <2> Spring MVC 구동을 위한 web.xml 작성 황제낙엽 2007.05.26 32
    28 Spring MVC 어플리케이션 개발 <1> 프로젝트 디렉토리 생성 황제낙엽 2007.05.26 51
    27 Struts에서 Spring으로의 이주 가이드 - Spring (java/j2ee Application Framework) 황제낙엽 2006.02.27 29
    26 실습 STEP1 - 기초편 (Hello Spring 출력) file 황제낙엽 2007.04.27 18
    25 Bean 생명주기 관리 황제낙엽 2007.03.23 24
    24 Spring프레임워크 소개문서 (3) 황제낙엽 2007.03.22 35