본문 바로가기
코리아 IT아카데미/spring~~~

ddazua | 12강 Spring MVC 응용

by Sharon kim 2022. 1. 21.

view 폴더에 student 폴더 만들고 student.jsp만들기

스프링에 있는 태그라이브러리를 사용하겠다.

위의 form과 아래의 input은 같은 의미

스프링 태그 이용시 열고 닫기 모양 확인
come.myway.tok 오른쪽마우스 new> class에서 패키지명 추가해서 새 패키지 생성 

컨트롤러 클래스 생성

requestMapping()은 student.jsp 페이지 자체를 호출하기위해 하는 것

student.jsp의 form의 action은 학생을 등록할 때 쓰는 url

run on sever 실행
url 바꿔써도 에러 

이유 : student.jsp의 id,name,age의 객체를, 모델을 사용할 건데 student.jsp로 넘겨주지 않아서

-> 모델 객체를 만들어야 함

getter, setter만들기

컨트롤러.jsp에서 run on sever 실행

똑같음
ModelAndView(어떤 값으로 갈지, 어떤 이름으로 갈지, 사용할 모델의 객체);

run on sever 실행

나옴
클릭하면 action의 주소로 이동

입력받은 url(http://~)을 처리할 컨트롤러 맵핑이 필요함

설정 전 action 수정

톰캣 눌러서 하단의 Modules를 보면 path가 자동으로 붙음 싫으면 삭제

 

상태정보 화면을 보여줄 jsp 추가

노란 부분 : 값을 넣어주는 부분
/tok 은 톰캣에서 설정되어 있어서 안쓰고 post 방식이라 post

모델이라는 것은 내가 리턴된 페이지에 값을 담을 때 사용하는 것

 

학생정보 페이지로 부터 값 받기

id, name, age를 만든게 student 객체니까
그래서 student , 모델어트리뷰트라는 어노테이션을 달아줌

모델어트리뷰트 : name은 name으로 age는 age로...값을 자동으로 맵핑시켜라

# Annotation이란?
- @를 이용한 주석, 자바코드에 주석을 달아 특별한 의미를 부여한 것
  (참고로 클래스, 메소드, 변수 등 모든 요소에 선언이 가능)
- 메타데이터(실제데이터가 아닌 Data를 위한 데이터) 라고도 불리고 JDK5부터 등장
컴파일러가 특정 오류를 억제하도록 지시하는 것과 같이 프로그램 코드의 일부가 아닌 
  프로그램에 관한 데이터를 제공, 코드에 정보를 추가하는 정형화된 방법.
ex) @Repository, @Service, @Controller, @Autowired, @Resource

입력시

student 객체에서 값을 받고 student 객체는 다시 모델 어트리뷰트로 넣어줌

result.jsp에 student라는 이름으로 전달이 됨

톰캣 다시 구동
한글 깨짐
이유: .do라고 붙은 파일에만 한글 인코딩을 하겠다고 설정했기 때문에
.do 붙여서 수정

<흐름 정리>

스프링 form태그를 사용해서 코딩,

저장을 클릭하면 action(tok/add/student.do)이 호출되고

studnetcontrollor.java에 /add/student.do가 호출되면서

호출 요청에서 같이 id, age, name이 들어있는 모델애트리뷰트 student(게터,세터있는)가

{모델 애트리뷰트의 student.java안의 변수값은 student.jsp 안의 input의 name과 동일해야함}

student.jsp와 자동 맵핑이 되면서 student 라는 이름으로 모델에 다시 담아서 

result.jsp페이지로 보냄

나중 방법1, 2, 3 중 회사에서 요구하는 방식으로 하면 됨