❗스프링 프로젝트 생성
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/.."로 들어오는 명령은 가로채지 마라, 이미지 경로는 여기로 넣어줌
@Controller
content/contentView로 이동할 때 content 폴더 안에 있는 contentView.jsp 페이지가 리턴되고
<Model 클래스를 이용한 데이터 전달>
model 객체에 id값을 담아 이동하게 된다.
Model 객체를 파라미터로 받음, Model 객체에 데이터를 담음
contentView.jsp
컨트롤러에서 전달받은 Model 객체의 속성을 이용함
ModelAndview 클래스를 이용한 데이터 전달
1) ModelAndView 객체 생성 2) Model 객체에 데이터를 담음 3) 뷰이름 설정
@RequestParam 어노테이션
Id로 전달받은 값을 String id에 저장하고, String id 값을 model 객체에 담아 전달
2.개선 방법 : 다소 코드 양이 적다.
@PathVariable
@RequestMapping에서 Get방식과 Post 방식
Get방식으로 form에서 데이터 전달 받음
form에서 전달받은 데이터를 HttpRequest로 데이터를 받아와서 Model 객체에 담아 view 페이지로 리턴
전달하는 방식과 전달받는 방식이 같아야 전송 가능 (GET, POST)
POST 방식으로 전달 + ModelAndView 바로 생성해서 값 전달
커맨드 객체 사용해서 데이터 전달, 이름 더 간단하게 지정
StudentInformation -> studentInfo
ModelAttribute에서 지정한 커맨드 객체 이름으로 값 불러오기
url 주소로 리턴