Model : 데이터 전달자
- 컨트롤러에서 생성된 데이터를 담아 view(jsp)에 전달함
메소드의 파라미터 타입이 model이다? Model타입 객체 생성하고 주입한다.
request.setAttribute()와 유사한 역할
@modelAttribute("value") ?
- 기본자료형은 뷰까지 전달이 안되므로, 파라미터 앞에 추가해준다.
@RedirectAttributes ?
- 일회성 데이터 전달
- resoponse.sendRedirect("/page?name=aaa&age=10") 와 동일용도임
스프링에서 데이터 송수신
- 요청에 대한 응답을 HTTP 형식 맞게 데이터를 송수신
- HTTP Response : 200. 400등 응답 코드, Body 내용을 인들어줘야됨
- 데이터를 받아 자동 구성 -> RespanseBody, ResponseEntity
HTTP (HyperText Transfer Protocol)
- 클라이언트- 서버 사이 요청, 응답을 처리하기 3한 규약.
HTTP요청 :
① Start Line: Method, URL, version, 서비에서 요청을 받는 첫줄.
② Headers : 요청에 대한 운영체제, 브라우저, 인증정보 등 부가적정보
③ Body : 요청에 관련된 json, html 등의 구체적 내용
HTTP응답 :
① status Line: HTTP 버전과 헤딩 요청에 대한 처리상태 숫자코드.
② Headers
③ Body
@ ResponseBody
- HTTP 규격에 맞는 응답을 만들어 줌
- 어노테이션 붙은 대상을 Response Body에 직렬화
- 컨트클러에 @RestController 가 붙으면 생략가능.
- HTP규격 구성요소중 헤더,status 대해 유연한 설정X
별도의 뷰 제공안함 데이터만 전송.
Httplederttppedy
포함하는 클래스
ResponseEntity 객체
- @ ResponseBody의 문제를 해결함
- HttpEntity 클레스를 상속받음
- 모두 담은 요소들을 개체로 만들어 반한 HttpStatus, HttpHeaders,HttpBody
- ReponseEntity<반환할 타입>
- 생성자 사용시 바디, 헤더, Status 순 입력
• 생성자보나 Builder pattem 이용
스프링 JDBC템플릿 메소드
- update(): 쿼리 연산 통해DB갱신 시켜줄때
- queryForObject() : select 실행시 하나의 객체 결과값이 나올 떄사용하는 메소드
- query() : 많은 결과값 (여러row) 처리
- queryForList() : 결과가 List형태
DAO클래스 insert처리시 두가지 메소드 차이
- getSqlMapClient :최종 트랜잭션 처리전까지는 완료처리x, 로컬트랜잭션 일괄처리기법
중간에 에러 발생시 롤백됨
여러건의 쿼리라면 효율적
- getSqlMapClientTemplate : 즉시실행, commit
JSTL 태그
<c:if> : else가 없음
속성 test는 조건
var 결과저장변수
scope 조건저장변수
<c:choose> 태그 내에 <c:when> 조건문(if), <c:otherwise> (else)
조건문 값 비교
- eq : ==
- ne : !=
- empty : null
- !empty : not null, not empty