본문 바로가기
SPRING

Spring Controller 종류2 (MultiactionController)

by 정윤재 2010. 3. 31.


한개의 컨트롤러로 여러개의 일을 하는 컨트롤러다

어떤 경우에 쓰는지 예를 들자면

안내 - ARS로 안내
       - 동영상으로 안내
       - 안내 받을 곳을 안내

게시판 - 공지사항
          - FAQ
          -Q&A

이런식으로 대항목 밑에 여러 항목들이 있을때

안내 안의 내용이 한개의 컨트롤러에서 분기되어 나가고

게시판 안의 내용이 한개의 컨트롤러에서 분기되어 나가게 되면

의미상에서도 그렇고 상당히 보기도 편하게 될 것이다.

그러면 이 컨트롤러는 어떻게 사용하는지 살펴보자

내가 사용하는 개발 환경을 기준으로 설명하겠다

일단 개요는

jsp 파일 (mode 라는 name의 파라미터를 넘김) => dispatcher-servelet.xml(*.do 설정)

=> applicationContext.xml (컨트롤러의 클래스와 메소드와 매칭될 mode 설정)

=> controller 클래스

이렇게 흘러간다.

일단 mode 파라미터의 value 와 컨트롤러의 메소드 이름은 같게 설정하는 것이

기본 개념이다.

1. JSP

<input type="hidden" name="mode" value="list">
이렇게 설정함

2. dispatcher-servlet.xml

<prop key="/join.do">joinMultiActionController</prop>
이런식으로 URL 과 매칭 시킴

3. applicationContext.xml

3-1. 메소드 이름과 mode 매칭 시킬 설정
 <bean id="joinMethodNameResolver" class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver">
  <property name="paramName">
   <value>mode</value>
  </property>
  <property name="defaultMethodName">
   <value>list</value>
  </property>
 </bean>

보시면 아시겠지만 파라미터는 mode 라는 이름을 쓴다는 것이고

기본 설정은(파라미터에 값이 없을때 설정) list 로 한다는 내용이다.

3-2. 컨트롤러 설정

 <bean id="joinMultiActionController" class="com.mbiz.ad.controller.JoinController">
  <property name="methodNameResolver" ref="joinMethodNameResolver" />
  <property name="joinService" ref="joinService" />
  <property name="viewName" value="ad/join/join" />
 </bean>

methodNameResolver 에 파라미터 관련 설정을 꼿아주고 viewName 은

view 페이지를 꼿아주면 된다.

4. 컨트롤러 클래스(mode 를 list 와 mail 로 설정하고 메소드도 만들었다)

package com.mbiz.ad.controller;

import java.util.List;

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

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

import com.mbiz.ad.service.JoinService;
import com.mbiz.board.service.BoardService;
import com.mbiz.core.dto.Board;
import com.mbiz.core.utils.AdUtil;

public class JoinController  extends MultiActionController{
 private String viewName;
 
 private JoinService joinService;

 
 public void setJoinService(JoinService joinService) {
  this.joinService = joinService;
 }
 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)
  */
 /**
  * 게시물 리스트
  * @param request
  * @param response
  * @return
  * @throws Exception
  */
 public ModelAndView list(HttpServletRequest request,
   HttpServletResponse response) throws Exception {

  ModelAndView mnv = new ModelAndView();
  

  String area   = request.getParameter("area");
  
  mnv.addObject("area",area);
  


  mnv.setViewName(viewName);

  return mnv;
 }
 /* (non-Javadoc)
  * @see org.springframework.web.servlet.mvc.AbstractController#handleRequestInternal(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
  */
 /**
  * 메일보내기
  * @param request
  * @param response
  * @return
  * @throws Exception
  */
 public ModelAndView mail(HttpServletRequest request,
   HttpServletResponse response) throws Exception {

  ModelAndView mnv = new ModelAndView();
  
  
  String Req_username  = AdUtil.ch_Null(AdUtil.toKor(request.getParameter("username")),"");
  String Req_co_name   = AdUtil.ch_Null(AdUtil.toKor(request.getParameter("co_name")),"");
  String Req_buzi_no_1 = AdUtil.ch_Null(AdUtil.toKor(request.getParameter("buzi_no_1")),"");
  String Req_buzi_no_2 = AdUtil.ch_Null(AdUtil.toKor(request.getParameter("buzi_no_2")),"");
  String Req_buzi_no_3 = AdUtil.ch_Null(AdUtil.toKor(request.getParameter("buzi_no_3")),""); 
  String Req_telno_1  = AdUtil.ch_Null(AdUtil.toKor(request.getParameter("telno_1")),"");
  String Req_telno_2  = AdUtil.ch_Null(AdUtil.toKor(request.getParameter("telno_2")),"");
  String Req_telno_3  = AdUtil.ch_Null(AdUtil.toKor(request.getParameter("telno_3")),""); 
  String Req_hpno_1  = AdUtil.ch_Null(AdUtil.toKor(request.getParameter("hpno_1")),"");
  String Req_hpno_2  = AdUtil.ch_Null(AdUtil.toKor(request.getParameter("hpno_2")),"");
  String Req_hpno_3  = AdUtil.ch_Null(AdUtil.toKor(request.getParameter("hpno_3")),"");  
  String Req_co_kind   = AdUtil.ch_Null(AdUtil.toKor(request.getParameter("co_kind")),"");
  
  
  boolean result = joinService.sendMail(Req_username, Req_co_name, Req_buzi_no_1, Req_buzi_no_2, Req_buzi_no_3, Req_telno_1, Req_telno_2, Req_telno_3, Req_hpno_1, Req_hpno_2, Req_hpno_3, Req_co_kind);
  
  String area   =  "join2";
  mnv.addObject("area", area);
  setViewName("join_mail_ok");
  if(result){
   mnv.addObject("message","가입신청 메일을 관리자에게 발송했습니다.");
   
   mnv.setViewName(viewName);
  }else{
   mnv.addObject("message","메일 발송 에러입니다.");
   mnv.setViewName(viewName);
  }

  

  return mnv;
 }
}

 


댓글