일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- MVC
- Servlet
- JavaScript
- 타임리프
- Statement
- 스프링로그
- 스프링부트로그
- 자바스크립트
- Java
- 오라클
- 서블릿
- Session
- Heap
- 객체 주소
- Stack
- CachingOperationNameGenerator
- JDBC
- 자바
- 국비학원
- Thymeleaf
- scanner
- JSP
- 비전공
- preparedstatement
- db
- Spring
- List에 객체 같은 값
- SpringBoot
- 코딩
- 스프링
- Today
- Total
sin prisa pero sin pausa
[Spring] Controller에서 파라미터 값 가져오는 방법 본문
<로그인 jsp에서 POST 방식으로 name속성이 memberId, memberPw인 값을 받아온다고 할 때>
1. HttpServletRequest 객체를 매개변수로 받기(서블릿에서 했던 방법과 동일)
2. @RequestParam 어노테이션을 이용해 파라미터 전달 받기
- 요청에 담긴 파라미터 중 알맞은 값을 찾아 매개변수 값에 주입해준다.
대신 @RequestParam()안에 써진 파라미터 값은 무조건 넘어온 값 중 존재하는 값이어야 한다.
"요구된 파라미터를 못 찾겠어요~" 라고 400오류를 보여줌
단점이라면 무조건 있는 값만 불러오기 때문에 유연성이 없어진다.
만약 넘어오는 파라미터 값의 필수 존재 여부를 설정하고 싶다면 required 속성(기본값 true)을 사용하면 된다.
이렇게 되면 400에러가 아니라
요청은 넘어가지만 값이 null로 넘어가 int에 저장되지 못하기 때문에 500에러가 뜨게 된다.
해결방법으로는 null값이 들어갈 수 있는 String이나 Integer같은 Wrapper클래스로 감싸주면 되지만
defaultValue속성으로 최종 해결을 해보자
int 값이지만 defaultValue는 문자열로 작성해주자
(int 자료형에 맞게 형변환이 된다.)
3. @RequestParam 어노테이션 생략
조건 ) 넘어오는 파라미터 키 값과 매개변수 명이 일치할 시
와오... 스프링이란 신세계였구나...
하지만 우리가 개발하는 입장에서는 생략하는 게 너무너무 편하지만
어노테이션 코드를 생략하게 되는 경우에는 의미파악도 힘들고 가독성이 낮아질 수 있어
생략을 못하게 하는 곳도 있다고 하는데...
생략을 해서 쓰더라도 생략이 되어있다는 걸 항상 상기하면서 코드를 짜자.
4. @ModelAttribute 어노테이션을 이용해 파라미터 전달 받기
- 만약 받아와야 하는 파라미터가 10개가 넘어간다면...? 매개변수에 다 쓸 수 없다!
파라미터의 값이 특정 객체의 필드 명과 같으면 해당 객체를 생성해서 필드 값 세팅 후 반환해준다.
@MotelAttribute 를 이용하여 자동 생성되어 파라미터가 세팅된 객체를 "Command Object(커맨드 객체)"라고 한다.
(일치하지 않으면 반환하지 않는다.)
조건 1) 기본 생성자가 반드시 작성되어 있어야 한다.
조건 2) setter가 반드시 작성되어 있어야 한다.
조건 3) 넘어오는 파라미터 키 값과 필드명이 일치해야 한다.
5. @ModelAttribute 어노테이션 생략
@ModelAttribute 어노테이션 생략은 조건이 까다로운 이유도 있어서 많이 쓰인다고 한다.
어메이징 스프링...
'더 알아보고 싶은데?' 카테고리의 다른 글
[Spring] 1. 자바, 스프링으로 AOP 구현해보기 (0) | 2021.07.18 |
---|---|
[Spring] AOP(Aspect Oriented Programming)란? (0) | 2021.07.18 |
[Spring] IoC Container와 Bean (0) | 2021.07.16 |
[Spring] POJO(Plain Old Java Object) 기반 프레임워크 (0) | 2021.07.15 |
[Spring] Dependency Injection(DI) 와 IoC Container (0) | 2021.07.13 |