'AbstractWizardFormController'에 해당되는 글 1건

  1. 2008/10/09 [누워서 하는 스프링 4] 컨트롤러의 종류 -1
용도에 따른 Controller 클래스 분류
단순처리: Controller / AbstractController
별도 기능을 제공하지 않는 컨트롤러, 요청 파라미터 처리 등의 작업을 직접 구현해 주어야 한다.

파라미터 매핑: AbstractCommandController
요청 파라미터를 객체에 저장해주며, 파라미터 값 검증 기능을 제공한다.

입력 폼 처리: SimpleFormController
폼을 출력하고 폼에 입력한 데이터를 처리할 때 사용된다.

다중 페이지 입력 폼 처리: AbstractWizardFormController
여러 페이지에 걸쳐서 데이터를 입력하는 경우, 입력 폼의 흐름을 제어하고 입력한 데이터를 처리할 때 사용된다.

정적 뷰 매핑: ParameterizableViewController / UrlFileNameViewController
컨트롤러에서 어떤 기능도 수행하지 않고, 단순히 클라이언트의 요청을 뷰로 전달할때 사용한다.

다중 액션: MultiActionController
연관되거나 비슷한 로직을 수행하는 다수의 기능을 하나의 컨트롤러에서 구현할 때 사용한다.


AbstractController 를 이용한 컨트롤러 구현
public class SomeController extends AbstractController{
 @Override
 protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response) throws Exception {
  ModelAndView mav = new ModelAndView();
  mav.setViewName("some");
//  mav.addObject(...); 
  
  return mav;
 }
}


AbstractCommandController 를 이용한 파라미터 처리
요청 파라미터를 특정한 객체에 담고 싶을 때 사용된다. AbstractCommentController  는 지정한 커맨드 클래스의 객체를
생성한 뒤, 커맨드 객체의 프로퍼티 이름과 일치하는 이름을 갖는 파라미터 값을 프로퍼티로 설정한다.

dispatcher-servlet.xml

<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  <property name="prefix" value="/WEB-INF/view/"></property>
  <property name="suffix" value=".jsp"></property>
 </bean> 
<bean name="/list.do" class="net.utsman.spring.controller.ListController"/>


ListController.java

public class ListController extends AbstractCommandController {
 public ListController() {
  // TODO Auto-generated constructor stub
  setCommandClass(ListCommand.class);
  setCommandName("listCommand");
 }
 
 @Override
 protected ModelAndView handle(HttpServletRequest request,
   HttpServletResponse response, Object command, BindException errors)
   throws Exception {
  ListCommand listCommand = (ListCommand)command;
  
  ModelAndView mav = new ModelAndView();
  mav.setViewName("list");
  mav.addObject("listCommand", listCommand);
  
  return mav;
 }
}

ListCommand.java

public class ListCommand {
 private String bbsId;
 private int pageNo;
 private String keyword;
 public String getBbsId() {
  return bbsId;
 }
 public void setBbsId(String bbsId) {
  this.bbsId = bbsId;
 }
 public int getPageNo() {
  return pageNo;
 }
 public void setPageNo(int pageNo) {
  this.pageNo = pageNo;
 }
 public String getKeyword() {
  return keyword;
 }
 public void setKeyword(String keyword) {
  this.keyword = keyword;
 } 
}

list.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"%>
bbsId[${listCommand.bbsId }]<br/>
pageNo[${listCommand.pageNo }]<br/>
keyword[${listCommand.keyword }]<br/>

http://localhost:9090/springmvc/list.do?bbsId=utsman&pageNo=2&keyword=hi 와 같이 호출한다고 하면,
지정한 ListCommand  클래스에 파라미터가 매핑되어서 출력되는 결과를 볼 수 있다.


포스팅에 사용된 예제 소스 보기[서브 버전]
http://zeehastory.googlecode.com/svn/trunk/springmvc

참고 문헌 (공부를 목적으로 책의 내용과 거의 동일하게 옮김을 밝힙니다.)
http://static.springframework.org/spring/docs/2.5.x/reference/introduction.html
최범균의 Spring 2.5 프로그래밍
Posted by utsman 트랙백 0 : 댓글 0