티스토리 뷰

출처 : 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

 

 

stone-master.a00

 

stone-master.a01

 

stone-master.alz

 

 

 

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함