728x90
반응형
활용한 이유
홈페이지 개발 중 메인페이지에 최근 게시물들을 불러오는 부분이 있다.
MainController.java에서 게시판별로 게시물을 조회하여
model.addAttribute("noticeList", noticeList); // 공지사항
model.addAttribute("galleryList", galleryList); // 갤러리
이런식으로 값을 넘겨줘야만 index.jsp에서 해당 변수를 사용할 수 있었다.
메인페이지에 표시할 게시판의 변동이 없다면 상관이 없는데..
CMS 특성상 새로운 게시판 추가/삭제가 자유로워 만약 "뉴스"라는 게시판이 신설되고
클라이언트가 이를 메인페이지에 추가해달라고 한다면 개발자는 java소스를 수정해서 컴파일하고 배포해야한다.
환경에 따라 서버를 재기동해야하기 때문에 수정사항이 바로 반영되는 jsp단에서만 수정할 수 있다면 편리할것이다.
그래서 TLD를 추가하고 이를 활용해 게시글 데이터를 가져오도록 할 것이다.
TLD파일 추가
<?xml version="1.0" encoding="UTF-8"?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
version="2.0">
<tlib-version>1.1</tlib-version>
<short-name>doc</short-name>
<uri>/WEB-INF/META-INF/doc.tld</uri>
<function>
<name>getRecentDocList</name>
<function-class>mypackage.home.common.util.DocUtil</function-class>
<function-signature>java.util.List getRecentDocList(java.lang.Integer)</function-signature>
</function>
</taglib>
- 위치 : src/main/webapp/WEB-INF/META-INF/doc.tld
- JSP 2.0 이상인 경우 WEB-INF하위에 작성하면 자동 인식됨
- JSP버전 확인법 : <%= JspFactory.getDefaultFactory().getEngineInfo().getSpecificationVersion() %>
- short-name은 doc
- function name은 getRecentDocList
- 함수명은 getRecentDocList이며, 리턴 자료형은 List, 파라미터의 자료형은 Integer
- 파라미터가 여러 개라면 getRecentDocList(java.lang.String, java.lang.Integer)와 같이 지정
DocUtil.java 생성
@Component
public class DocUtil {
//
// 보안상 생략.
// 사용할 서비스가 있다면 inject
//
public static List<DocVO> getRecentDocList(Integer bbsSeq) {
List<DocVO> resultDocList = null;
//
// 보안상 생략
//
return resultDocList;
}
}
index.jsp에서 사용
<%@ taglib prefix="doc" uri="/WEB-INF/META-INF/doc.tld" %>
<c:set var="bbsSeq" value="106"/>
<c:set var="docList" value="${doc:getRecentDocList(bbsSeq)}"/>
<c:forEach var="bean" items="${docList}" varStatus="i">
<c:out value="${bean.field1}"/> - <c:out value="${bean.field2}"/>
</c:forEach>
- doc.tld에서 지정한 대로 ${doc:getRecentDocList(bbsSeq)}와 같이 사용
- 리턴값을 docList 변수에 담음
- docList를 forEach돌려 출력(자료형에 따라 알맞게 사용)
728x90
반응형
'IT > JAVA' 카테고리의 다른 글
Javascript JSTL String 변수에 개행문자 있을 때(Uncaught SyntaxError: Invalid or unexpected token) (0) | 2023.08.28 |
---|---|
[취약점/보안] spring 전자정부 프레임워크(egov) 취약점 조치 모음 (0) | 2023.08.10 |
MySQL connection timeout 방지 (0) | 2023.08.09 |
톰캣 배포 방법 - WinSCP 를 사용하여 웹앱 war 배포하기 (0) | 2023.08.03 |