본문 바로가기

개발&컴퓨터/개발강좌

스프링 프레임워크 기본 강좌 (12) - 스프링MVC (고전적인 JSP 코딩)

반응형

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에 매핑된 함수임)

 

// notice.jsp

<%@ 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같은 경우는 함께 제공되지 않기 때문에 따로 라이브러리를 추가해야 함.

 

 

반응형