성장 일기/쌍용교육센터 / / 2023. 5. 9. 13:49

0509/Controller에서 View로 데이터 전송

쌍용교육센터에서 공부한 내용을 정리하며 기록하는 글이고 주관적인 생각이 들어갈 수 있습니다.
잘못된 내용이나 피드백 및 생각 공유는 언제든 환영입니다.
댓글로 남겨주시면 확인 후 수정하겠습니다.
내용에 대한 소스 코드는 https://github.com/2jaehoon/sangyongSpring에 올려두었습니다.

 

view JSP의 구분

  - WEB-INF/views 폴더의 하위 폴더를 만들어 서비스 수행
   ( view를 업무별로 구분하여 작성할 수 있다.)

  - DD를 수정 (모든 응답 URL이 변경 - 권장하지 않음)

<beans:property name="prefix" value="/WEB-INF/views/경로명/" />
@RequestMapping("0/경로명/a.do")
  public String method(){
  
  return "view명"; 
  }

 

  - return JSP명 앞에 이동 경로 붙임

@RequestMapping("/경로명/a.do")
    public String method(){

       return "경로명/view명"; //경로명이 prefix뒤에 붙는다.
    }

 

 

Controller에서 View로 데이터 전송

  - HttpServletRequest 사용, Model 사용, ModelAndView 사용

 

* HttpServletRequest 사용

  - 요청 처리 method의 매개 변수로 HttpServletRequest( scope 객체 )를 선언하고,

    setAttribute("이름", 값) 를 사용하여 View로 전달

  - JSP에서  request(내장객체)의 getAttribute("이름")을 사용하여 처리된 결과를 받는다.

* Model 사용
 - 데이터와 view페이지명을 분리할 수 있다.
 - org.springframework.ui.Model interface를 사용.
 - 요청처리 method에서 매개변수로 선언하면 DispatcherServlet에서 Model의 구현클래스를 
   arguments 로 입력해준다.

// 1. 요청처리 method에서 매개 변수로 Model 선언
public String method(Model model){
   
// 2. 입력받은 모델 객체에 업무처리 결과를 할당한다.
model.addAttribute("이름" ,값 );

}
<!-- 3.JSP에서는 request내장객체로 전달받는다. -->
<%= (Casting)request.getAttribute("이름") %> <!-- 스크립트릿 사용 -->
${ requestScope.이름 } <!-- el 사용 -->


* ModelAndView 사용

  - 데이터와 뷰를 묶어서 하나로 관리할 수 있다.
  - @ExceptionHandler를 사용하여 예외 처리할 때는 반드시 사용
  - 개발자가 요청 처리 method안에서 객체를 생성하여 사용한다.
  - 요청 처리 method의 반환형이 ModelAndView 객체가 되어야 한다. 

// 1. 반환형을 ModelAndView 설정
public ModelAndView method(){

// 2.ModelAndView 생성
ModelAndView mav=new ModelAndView();
// 3.View 명 설정
mav.setViewName("뷰명");// 뷰명 => ViewResolver, redierct: forward:
// 4. 데이터를 설정
mav.addObject("이름", 값);
// 5.ModelAndView 반환
return mav;
}
<!-- JSP에서 request 내장 객체로 값을 얻을 수 있다. -->
<%= request.getAttribute("이름") %> <!-- 스크립트릿 사용 -->
 ${ requestScope.이름 } <!-- el 사용 -->
<!-- 
Controller에서 HttpServletRequest에 값을 넣든,
Model에 값을 넣든 동일하게 사용할 수 있다.
-->


redirect

  - Controller에서 JSP로 이동할 때 WEB-INF/views 폴더에 존재하는 JSP와

    webapp에 존재하는 HTML, JSP 로 이동할 수 있다.
  - ViewResolver를 거치지 않고 응답된다. ( prefix와 suffix가 사용되지 않은 이동 )
  -.do, .jsp, .html의 요청이 가능

  - 페이지명을 반환할 때 "redirect:이동할페이지명"  의 형식으로 사용한다.

 

forward

* do에서 do를 직접(연결) 요청

  - ViewResolver 사용하지 않고 요청

public String method(){
    return "forward:요청할do URI";
  }



'성장 일기 > 쌍용교육센터' 카테고리의 다른 글

0511/AJAX  (0) 2023.05.15
0510/include, session, cookie, fileUpLoad  (0) 2023.05.10
0508/Spring MVC  (0) 2023.05.08
0504/Spring 흐름  (0) 2023.05.04
0502/MVC 패턴  (0) 2023.05.02
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유