Java & Spring으로 시작하는 웹 프로그래밍

.html 파일의 form 태그에서 무언가를 입력하고 전송할 때, 넘겨받은 .jsp 파일에서는 이 데이터를 어떻게 받아야 할까요?

여기도 물론 EL을 사용하시면 됩니다.

${param.name}이나 ${param.phone} 처럼 사용하시면 되는데. 만약 이게 배열이라면 어떻게 해야할까요? GET 파라미터로 ?sns=facebook&sns=kakaotalk&sns=instagram 같은 경우 말입니다.

그때는 paramValues 객체를 이용하시면 됩니다.

예를들어 ${paramValues.sns} 라고 정의하면 sns의 배열객체의 타입과 주소값이 나옵니다.

데이터에 접근하려면 ${paramValues.sns[0]} 으로 순차적으로 접근하시면 됩니다.

@RequestMapping( value = "/register/save", method = RequestMethod.POST) 을 사용하면 GET방식으로 회원가입을 못하게 하는 기능을 적용하는데 이걸 짧게 하려면 @PostMapping("register/save") 를 하면 된다.

PostMapping은 스프링 4.3버전 이상부터 사용 가능하다.

servlet xml 파일을 보면 beans를 비롯해서 첫부분에 여러가지 스키마를 정의한 링크가 있는데, 이 중에서 하나의 접두사를 생략하고 기본값으로 사용할 수 있다.

mvc 접두사를 생략하면 mvc:annotaion-driven을 annotaion-driven만 써도 자동으로 mvc 접두사를 붙여준다.

https://blog.kakaocdn.net/dn/bKRim6/btrSZ0mjhyw/hPkDTMxmLUTzmYJ941nK3k/img.png

위 코드는 mvc를 생략했기 때문에 mvc:annotaion-driven 처럼 생략할 수 있는 태그에 빨간줄을 그어준다.

mvc:view-controller path="/register/add" view-name="registerForm"/ 와 같이 뷰 컨트롤러를 적용할 수 있는데 이걸 적용하면 get메서드 요청만 사용할 수 있고 POST 요청은 사용할 수 없게 된다

@GetMapping과 @PostMapping

@RequestMapping의 method=RequestMethod.() 부분을 method=RequestMethod.GET과 method=RequestMethod.POST로 설정하면 매핑 주소가 같아도 메서드가 다르기 때문에 충돌이 나지 않는다.

만약 매핑될 URL의 공통 부분을 @RequestMapping으로 클래스에 적용한다면 이 부분을 생략할 수 있다.

예를 들면 매핑 주소가 /join/add 와 /join/delete 두 가지가 있다고 하면, @RequestMapping("/join")을 클래스단에 적용하면 /join 주소가 자동으로 매핑되기 때문에 각 메서드에는 @GetMapping("/add")나 @PostMapping("/delete") 만 설정해도 된다. 상기했듯 Get과 Post는 다르게 적용되기 때문에 @GetMapping("/add")와 @PostMapping("/add")를 동시에 선언해도 충돌이 나지 않는다.

@RequestMapping의 URL패턴

URL패턴의 매핑 종류는 대표적으로 3가지가 있다.