12. 스프링 프레임워크 기본 강좌 (12) - 스프링MVC (고전적인 JSP 코딩)
* 스프링 MVC 샘플 코드를 보기 이전에 고전적인 JSP 코딩 방식을 보도록 하겠습니다.
// NoticeController.java (1단계 DB 제어 클래스를 통한 DB데이터 가져오기)
package controllers.customer;
public class NoticeController implements Controller { // 스프링이 제공 (Controller)
@Override
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response)
throws Exception {
String _page = request.getParameter("pg");
String _field = request.getParameter("f");
String _query = request.getParameter("q");
int page = 0;
String field = "TITLE";
String query = "%%"
if(_page == null && _page.equals("")) page = Integer.parseInt(_page);
if(_field == null && _field.equals("")) field = _field;
if(_query == null && _query.equals("")) query = _query;
NoticeDao dao = new NoticeDao();
List<Notice> list = dao.getNotices(page, field, query); // 페이지번호, 검색항목, 검색어
ModelAndView mv = new ModelAndView("notice.jsp");
mv.addObject("listData", list);
return mv;
}
}
실행 호출 : notice.tst?pg={param.pg}&f={param.f}&q={param.q}
- 코드 설명 -
* NoticeDao 클래스는 DB 커넥션 개체를 생성하고, DB와 연결하며, 쿼리를 통해 데이터를 가져오는 작업을 처리하여 주는 클래스.
* AOP개념이라고 볼 수 있는데 NoticeDao 를 통해서 DB 개체 생성, 접속, 쿼리 실행, 종료 등에 대한 처리를 위임한 클래스 개체를 만들어 사용.
* Controller Interface 구현
* Controller의 handleRequest 함수 구현 (XML에 매핑된 함수임)
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> // core library
<table>
<tbody>
<c:forEach var="n" items="${listData}">
<tr>
<td class="seq">${n.seq}</td> // n.getSeq();
<td class="title"><a href="noticeDetail.tst?seq=${n.seq}">${n.title}</td>
<td class="writer">${n.writer}</td>
<td class="writer">${n.regDate}</td>
<td class="writer">${n.hit}</td>
</tr>
</c:forEach>
</tbody>
</table>
* 참고로 JSP페이지에 스크립트릿, 표현식, HTML 등의 코드가 섞이게 되면 가독성이 떨어지게 되는데, 보다 가독성을 높이기 위한 언어 및 태그를 표현언어(EL, Expression Language) / JSTL 코드를 사용.
* ${n.seq} 는 실제 n.getSeq() 함수를 호출하는 것이며, 이 setter 함수는 이미 정의되어 있어야 함.
* EL은 $와 {}를 사용하여 값을 표현
참고 : JSTL – JSP Standard Tag Library
- jsp 페이지에 스크립트릿과 표현식, html 코드등이 뒤섞이면 가독성이 낮아지게 되는데, 이때 태그 형태인 el과 jstl이나 커스텀태그를 사용하면 스크립트릿을 사용하는 것보다 가독성을 높일 수 있음. 표현언어(el)같은 경우는 톰캣 라이브러리에 기본적으로 포함되어 배포되기 때문에 별도로 라이브러리를 추가해주지 않아도 되지만, jstl같은 경우는 함께 제공되지 않기 때문에 따로 라이브러리를 추가해야 함.
'개발&컴퓨터 > 개발강좌' 카테고리의 다른 글
스프링 프레임워크 기본 강좌 (14) - AOP with Annotation (1) | 2015.04.29 |
---|---|
스프링 프레임워크 기본 강좌 (13) - 스프링MVC (AOP with XML) (0) | 2015.04.27 |
스프링 프레임워크 기본 강좌 (11) - 스프링MVC (Model2) (0) | 2015.04.24 |
스프링 프레임워크 기본 강좌 (10) - 빈 후처리기(Bean Post Processor) (0) | 2015.04.23 |
스프링 프레임워크 기본 강좌 (9) - 포인트컷, 조인포인트 (0) | 2015.04.20 |