MVC패턴1

정태규·2022년 11월 1일
1

MVC 패턴

  • model+view+controller

사용자가 요청이 들어오면 DispatcherServlet이 입력을 처리한후, Model을 해당 controller에게 넘겨준다. controller가 처리한 결과를 다시 Model에 저장, Dispatcherservelt은 그 결과를 view한테 전달한다.
view는 작업결과를 읽어서 응답을 만들어내어서 클라이언트에 전달.

@RequestMapping("/getYoil")
public String main(int year,int month,int day, Model model){
	//1.유효성 검사
    if(!isvalid(year, month, day))
    	return "yoilError"; // 유효하지 않으면, /WEB-INF/views/yoilError.jsp로 이동
        
    //2.처리
    char Yoil = getYoil(year,month,day);
    
    //3.Model에 작업 결과 저장
    model.addAttribute("year", year);
    model.addAttribute("month", month);
    model.addAttribute("day", day);
    model.addAttribute("yoil", yoil);
    
    //4.작업 결과를 보여줄 view의 이름을 변환
    return "yoil"; //WEB-INF/views/yoil.jsp
}

view를 분리하면 상황에 따라 보고싶은 view를 분리할 수 있어서 편리하다.(관심사 분리)

controller method의 반환타입

[String] view 이름 반환

@RequestMapping("/getView")
public String main(int a, int b, int c){

.....

return "strView"; // /WEB-INF/views/strView.jsp
}

return 타입이 String인 이유는 view(strView)가 String이기 때문이다. return 해주는 값이 view이다.

[void] 맵핑된 url의 끝단어가 뷰 이름

@RequestMapping("/getView")
public void main(int a, int b, int c){
......
}

void 메서드의 경우에는 RequestMapping에서 선언된 getView가 뷰이름이다.

[ModelAndView] Model과 뷰 이름을 반환

public ModelAndView main(int a,intb,int c){
//1. ModelAndView 생성
ModelAndView mv = new ModelAndView();

//2. 처리
int result = 3;

//3 ModelAndView에 작업한 결과를 저장
mv.addObject("a",a); // 인수에서 가져온 값을 처리해서 mv에 넣어준다.
mv.addObject("b",b);

//4.작업 결과물 보여줄 View의 이름을 지정
mv.setViewName("MAV");

//5.ModelAndView반환
return mv;
}

model과 view를 동시에 저장하는 객체를 만드는 방법, 잘 안쓴다.

0개의 댓글