[Spring Framework] MVC 패턴 기본!

seong-ye·2022년 2월 24일
0

Java

목록 보기
5/6

📚Spring MVC pattern의 구조

❗스프링 프로젝트 생성

2개 이상 쓰기(3번째 나오는 폴더 명이 이 프로젝트의 context명이 됨)


  • 주소는 자동으로 /WEB-INF/views/.. .jsp

  • 스프링 MVC 구조

    1) 뷰 (.jsp)
    2) 컨트롤러 : Dispatcher에서 전달된 요청을 처리
    3) servlet-context.xml : 스프링 컨테이너 설정 파일
    4) web.xml : DispatcherServlet 서블릿 매핑, 스프링 설정 파일 위치 정의
    5) DispatcherServlet : 클라이언트의 요청을 최초 받아 컨트롤러에게 전달


이미지 파일 -> resource 폴더

페이지 스캔 -> @Controller 발견 후 Controller로 사용

이미지 넣을 땐 resources 폴더에 복사
이미지 경로는 "/컨텍스트명/resources/파일이름.확장자"

  • 실행순서


모든 명령은 dispatcher가 가로채지만 "/resources/.."로 들어오는 명령은 가로채지 마라, 이미지 경로는 여기로 넣어줌

  • 컨트롤러 클래스 제작
    최초 클라이언트로부터 요청이 들어왔을 때, 컨트롤러로 진입하게 됨
    그리고 컨트롤러는 요청에 대한 작업을 한 후 뷰쪽으로 데이터를 전달
  • 컨트롤러 제작 순서
  1. @Controller를 이용한 클래스 생성
  2. @RequestMapping 을 이용한 요청 경로 지정
  3. 요청 처리 메소드 구현
  4. 뷰 이름 리턴

  • web.xml에서 한글설정(utf-8)
  • controller 생성

@Controller

content/contentView로 이동할 때 content 폴더 안에 있는 contentView.jsp 페이지가 리턴되고

<Model 클래스를 이용한 데이터 전달>
model 객체에 id값을 담아 이동하게 된다.
Model 객체를 파라미터로 받음, Model 객체에 데이터를 담음

contentView.jsp
컨트롤러에서 전달받은 Model 객체의 속성을 이용함


ModelAndview 클래스를 이용한 데이터 전달
1) ModelAndView 객체 생성 2) Model 객체에 데이터를 담음 3) 뷰이름 설정


  • 클래스에 @RequestMapping 적용

    클래스에 RequestMapping : /View
    = 조합된 요청 경로 : /board/view

  • HttpServletRequest 클래스
    HttpServletRequest 클래스를 이용해서 데이터를 전송하는 방법
    HttpservletRequest에 데이터를 담아서 전송, model 객체 이용해서 다시 데이터 받아와서 view로 전송


    id, pw 값 전달, getParameter로 id, pw값 전달받음
    (직접 url에 입력해 전달해봄)

@RequestParam 어노테이션

Id로 전달받은 값을 String id에 저장하고, String id 값을 model 객체에 담아 전달


  • 데이터 커맨드 객체
    1.기존 방법 : 다소 코드 양이 많다

2.개선 방법 : 다소 코드 양이 적다.


@PathVariable


@RequestMapping에서 Get방식과 Post 방식

Get방식으로 form에서 데이터 전달 받음

form에서 전달받은 데이터를 HttpRequest로 데이터를 받아와서 Model 객체에 담아 view 페이지로 리턴

전달하는 방식과 전달받는 방식이 같아야 전송 가능 (GET, POST)

POST 방식으로 전달 + ModelAndView 바로 생성해서 값 전달

커맨드 객체 사용해서 데이터 전달, 이름 더 간단하게 지정
StudentInformation -> studentInfo





ModelAttribute에서 지정한 커맨드 객체 이름으로 값 불러오기


  • 리다이렉트(redirect : 키워드)
    다른 페이지로 이동할 때 사용

    id가 abc이면 studentOk 페이지 리턴, 아니면 studentNg 페이지 리턴

url 주소로 리턴

0개의 댓글