티스토리 뷰
출처 : http://blog.naver.com/musasin84?Redirect=Log&logNo=60207026776
JSP 게시판 업그레이드 - Spring 연동 3 (구현)
전 포스팅은 Spring MVC가 어떻게 흘러가는 지 대충 정리하였다. 이번에는 기존 게시판 로직을 Spring으로 구현해볼 것이다.
기존에 개발된 MyBatis를 접목시키고, Spring Controller를 새로 만든다.
패키지 생성
위 그림과 같이 기존 DAO를 쓰고, spring 패키지내에 Controller를 추가했다. 그리고 JSP 파일은 기존 서블릿으로 만든 게시판과 같은 걸 사용했다. Spring 프레임워크를 사용했지만 JSP는 바뀌는게 없기때문이다.
BoardMyBatisDAO.java 어노테이션 추가
어노테이션을 추가하게되면 Spring내에서 이 클래스를 bean으로 사용되어진다. 전 포스팅글에서 dispatcher-servlet.xml에서 이 DAO 패키지를 스캔할 수 있게 설정했다. 이 bean으로 등록된 클래스는 Spring bean들과 공유되어 사용할 수 있게 된다.
dispatcher-servlet.xml
<context:component-scan base-package="spring, dao" />
|
어노테이션 추가는 간단하다. 일단 기존에 BoardMyBatisDAO.java는 다 구현해놓았기 때문에 아래와 같이 @Repository 만 작성하면 된다.
BoardMyBatisDAO.java
@Repository("boardMyBatisDAO") public class BoardMyBatisDAO implements BoardDAOImpl { ....
|
BoardListController.java 구현
기존 BoardListServlet.java 파일과 큰 로직상의 차이는 없다. 어노테이션 3개가 추가되고, BoardModel 클래스에 파라미터값을 받아오는 표현, 그리고 Model에 JSP에서 사용될 객체들을 담는 부분이다.
// Controller 어노테이션 추가 @Controller("boardListController") public class BoardListController { // BoardDAOImpl 인터페이스에 @Repository로 지정된 BoardMyBatisDAO 주입 @Resource(name="boardMyBatisDAO") private BoardDAOImpl boardDAO; // 요청 URL // 요청 파라미터들이 BoardModel 클래스의 멤버변수에 자동으로 채워진다. // BoardModel 클래스의 멤버변수들과 파라미터 변수명이 일치해야 한다. @RequestMapping("/board/boardList") public String boardList(HttpServletRequest request, BoardModel boardModel, Model model) throws Exception { // 파라미터 String pageNum = boardModel.getPageNum(); String searchType = boardModel.getSearchType(); String searchText = boardModel.getSearchText(); String searchTextUTF8 = new String(searchText.getBytes("ISO-8859-1"), "UTF-8"); boardModel.setSearchText(searchTextUTF8); // 총수 int totalCount = this.boardDAO.selectCount(boardModel); // 목록조회 List<BoardModel> boardList = this.boardDAO.selectList(boardModel); // Model에 추가된 객체들은 JSP 내에서 사용되어진다. // Servlet에서의 request.setAttribute("", ); 이거와 동일하다. model.addAttribute("totalCount", totalCount); model.addAttribute("pageNavigator", new PageNavigator().getPageNavigator( totalCount, boardModel.getListCount(), boardModel.getPagePerBlock(), Integer.parseInt(pageNum), searchType, searchTextUTF8)); model.addAttribute("boardList", boardList); model.addAttribute("boardModel", boardModel); // ViewName으로 이 ViewName과 WEB-INF/jsps/ 밑으로 일치하는 JSP를 매핑. return "/board/boardList"; } }
|
이러한 패턴으로 CRUD가 구현된다. 스트럿츠2, 일반 Servlets으로 예제를 따라왔다면 다른 부분의 Spring Controller 개발은 어려움이 없다.
위의 상황을 대충 그림으로 표현하자면
아직 Spring을 완벽하게 이해하지 못해 그림의 표현이 너무 투박하다. ㅠ Struts2, SpringMVC도 결국 Servlets 기반과 유사한 패턴으로 흘러간다!
Struts2와 다르게 Spring은 더 많은 기능들을 제공해준다. 다양한 퍼즐조각처럼 끼워맞출 수 있어서 많이 사용중인 프레임워크이다. 현재 전자정부프레임워크에서도 채택되어 사용되어지고 있고, 웹이 아닌 응용 프로그램에서도 접목 시킬 수 있는 다재다능한 놈(?)이다.
Soruce Github : https://github.com/stoneis/stone
'program' 카테고리의 다른 글
[35] JSTL core : 조건,반복 태그 <c:if> <c:choose> <c:forEach> <c:forTokens> (0) | 2014.09.04 |
---|---|
eclipse 메모리 및 옵션 설정 (0) | 2014.08.31 |
엑셀 오른쪽부터 문자열 검색하기 (reversed find) (0) | 2014.08.26 |
스프링 mybati 연동 정리 (0) | 2014.08.25 |
[Spring MVC + Maven] Project 생성하기 (0) | 2014.08.23 |