본문 바로가기
SPRING

Spring Controller 종류3 (AbstractController)

by 정윤재 2010. 4. 1.


 한번에 여러가지 일을 하는 컨트롤러는  multication Controller 다

거의 대부분 이 컨트롤러를 사용하게 되지 않을까 싶다.

그런데 문제는 간단한 그리고 그냥 view 페이지로 링크만 거는게 아니라

약간의 가공을 해서 값을 보내야 하는 경우 abstractController 를 사용한다.

일단 내가 쓰는 설정대로

1. dispatcher-servlet.xml 에서 ~~.do 설정(서블릿 설정)

2. applicationContext.xml 에서 컨트롤러 class 지정

3. Controller class 작성

의 순서대로 나간다.

1. dispatcher-servlet.xml

url mapping 에서

<prop key="/service.do">serviceAbstractController</prop>

같이 설정함

2. applicationContext.xml

 <bean id="serviceAbstractController" class="com.mbiz.ad.controller.ServiceAbstractController">
  <property name="viewName" value="ad/service/service" />
 </bean>

별로 설정할게 없다. 기본적인 view 페이지만 설정했다.

3. controller 클래스

package com.mbiz.ad.controller;

import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractController;

import com.mbiz.core.dto.Board;

public class ServiceAbstractController extends AbstractController{
 private String viewName;
 public void setViewName(String viewName) {
  this.viewName = viewName;
 }
 
 /* (non-Javadoc)
  * @see org.springframework.web.servlet.mvc.AbstractController#handleRequestInternal(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
  */
 @Override
 protected ModelAndView handleRequestInternal(HttpServletRequest request,
   HttpServletResponse response) throws Exception {
  
  ModelAndView mnv = new ModelAndView();
  
  /////////////////////////////////////

 
  String area = request.getParameter("area");


  mnv.addObject("area", area);


  ////////////////////////////////////////
  mnv.setViewName(viewName);
  
  return mnv;
 }
}

위와 같이 request 를 가져와서 약간 가공후에 다시 mnv  에 넣어서

(request.setAttribute 와 같은 것이므로 ) view 페이지에서

request.getAttribute 로  mnv에 들어간 객체를 꺼내서 사용하면 되겠다.


댓글