donaricano-btn

Model오브젝트와 Session스코프


- 여러 화면에서 하나의 오브젝트를 유지 한다면?


1. @SessionAttribute

- 스프링MVC에서는 애노테이션을 이용하여 Session스코프에 저장할 오브젝트를 지정함


- Session 스코프에서 관리할 ModelAttribute 오브젝트의 이름 지정


2. HttpSessionRequiredException

- @ModelAttribute 애노테이션이 설정된 메소드가 실행되었을 시, 그 오브젝트가 Session스코프에 없으면 HttpSessionRequiredException발생한다

1) 해법

- 메소드가 실행되기전에 반드시 Model 오브젝트에 해당하는 오브젝트를 추가해주어야함

 

- 메소드가 실행된 다음에 반드시 ModelAttribute 오브젝트를 인수로하는 메소드가 호출되어야함


3. Session스코프의 오브젝트를 삭제하는법

 

- SessionStatus 타입의 인수를 정의한다

- 삭제되는 오브젝트는 이메소드가 정의된 클래스의 @SessionAttribute 애노테이션으로 이름이 지정된 ModelAttribute 오브젝이뿐이다

블로그 이미지

리딩리드

,
donaricano-btn

입력값다루기 @ModelAttribute


- SpringMVC에는 여러 요청 파라미터를 하나의 오브젝트로 만듬


1. 화면에서 받아온 값을 오브젝트에 맵핑


- 화면에서 이 세값을 전송할 때는 각각 Customer 오브젝트의 프로퍼티 이름에 맞게 요청 파라미터의 키를 name, address...로 한다

1) Controller 설정

 

- 인수로 Customer 타입의변수를 정의하기만 하면된다

- Customer 오브젝트는 자동으로 Model 오브젝트안에 저장되어 ModelAttribute 오브젝트가됨

- ModelAttribute("customer") 오브젝트가됨

2) ModelAttribute 오브젝트 이름 설정

- 만약 다른이름으로 하고싶다면

 

블로그 이미지

리딩리드

,
donaricano-btn

클래스 레벨의 @RequestMapping 


- 클래스 레벨에서도 @RequestMapping 설정이 가능하다

- 클래스 설정시 메소드에 설정한 URL은 모두 클래스의 서브 URL이 된다


블로그 이미지

리딩리드

,
donaricano-btn

@RequestMapping 애노테이션과 URL 템플릿


- REST 에서는 URI로 웹상의 리소스를 특정한다

- URI 템플릿 형식으로 URL을 지정하려면 URL에서 변하는 부분을 {변수명}으로 지정


1. Example


- URL로서 /user/{userId}가 지정되어 있으므로 URL에 /user/{사용자 ID} 형식으로 들어오면 getUserById 메소드가 실행된다

- @PathVariable int userId 로 설정해도 동일하다

- 복수로 지정가능하다

 

2. 특수 케이스

1) userId가 int형일때 /user/abc 요청을 보낸다면?

- 메소드에 매핑되지 않으며 404 error 발생

2) userId가 문자열이고 소문자만 받아들이고 싶다면?

- 스프링MVC의 URI 템플릿 기능에는 정규표현으로 변수를 제한하는 기능이 있다

- {변수명}:{정규표현}

 

3) 변수는 /(슬래시)사이에 하나만 둔다?

- 자유롭게 지정가능하다

 

4) 지정할 수 없는 URL

- 세미콜론(;) 지정 할 수없다

- 스프링이 ; 뒤에 url은 삭제한다

- /user/id=123;pass=456-> /user/id=123 



블로그 이미지

리딩리드

,