취미로 음악을 하는 개발자

[Spring] Controller 객체 구현 (1) 본문

공대인/Spring[Boot]

[Spring] Controller 객체 구현 (1)

영월특별시 2019. 5. 28. 15:43
728x90



- 클래스에 RequestMapping 어노테이션 명시를 해주면 그 값은 공통된 데이터로 취급하여 각 메소드에 정의되어 있는 속성에 더해준 요청을 받게 된다.




위의 두 소스는 결국 같은 코드이지만 첫 번째 코드처럼 memJoinRequestMapping 값으로 '/member'를 추가할 때 그 개수가 많으면 상당히 시간이 오래걸리게 되므로, 두 번째 코드처럼 클래스에 RequestMapping을 해주면 자동으로 처리하게 된다.



- 아래는 컨트롤러에서 Login 부분을 담당하는 메소드login.html의 body부분인 코드이다.


memLogin 메소드는 파라미터 이름이 'memId'와 'memPw'의 값을 받아오는데 login.html를 통해 사용자가 입력한 IDPW의 값을 가져오게 된다.

하지만 이것을 어노테이션을 사용하는 방법으로도 바꿀 수 있다.





memLogin 파라미터 안에 @RequestParam이라는 어노테이션을 사용함으로써 메소드 안에 있는 변수를 생략할 수 있게 된다.

'memPw'같은 경우에는 'required'라는 속성을 추가해줬는데 이 파라미터를 받지 못하면 에러를 발생시킬지 말지 결정해준다

false는 데이터를 받지 못해도 에러를 발생하지 않는 것이고 'memId'와 다르게 2개 이상의 속성이 주어질 경우에는 속성 이름과 그 값을 다 적어줘야한다.


다른 속성으로 defaultValue가 있는데 이것은 값이 넘어오지 않을 때 지정된 값으로 치환해준다. 하지만 자바스크립트에서 값이 있는지 확인하고 전달되기 때문에 잘 사용되지 않는다.



// Command 객체


결과를 먼저 보면 위의 코드를 아래 코드로 바꿀 수 있다. 대박쓰..


필드 값들이 각각 setter메소드를 가지고 있는 클래스를 커맨드 객체라고 부르는 것 같다.

커맨드 객체를 사용하는 이유는 먼저 코드의 양이 상당히 줄어들고 View에서도 이 객체의 값을 바로 사용할 수 있다.



는 기존의 request를 사용했을 때의 코드이고, 아래커맨드 객체를 사용했을 때 직접 접근할 수 있는 것을 보여준다.

커맨드 객체를 사용할 수 있는 이유는 스프링 컨테이너 안에서 스프링그러한 기능들을 지원하기 때문이다.





Comments