한개의 컨트롤러로 여러개의 일을 하는 컨트롤러다
어떤 경우에 쓰는지 예를 들자면
안내 - 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;
}
}
'SPRING' 카테고리의 다른 글
[ SPRING ] eclipse에서 Spring boot 프로젝트 만들기 (0) | 2021.09.27 |
---|---|
Spring 스케쥴러 (Quartz) (0) | 2010.04.07 |
Spring FrameWork 에서 Log4J 설정 (0) | 2010.04.01 |
Spring Controller 종류3 (AbstractController) (0) | 2010.04.01 |
Spring Controller 종류 (ParameterizableViewController) (0) | 2010.03.30 |
댓글