스프링 프로젝트 만들기 3일차(select문 resultType, session,dto 등등)
DB와 연결하기 위해선?
1. 필요한 라이브러리 추가
2. DB관련 설정 추가
3. 인터페이스,xml 필요
페이지 간 이동 : spring 에서는 페이지 이동조차 컨트롤러에 요청을 해야 한다.
스프링은 뷰에서 뷰로 이동하는걸 못한다.(jsp에서는 됐었지)
모든 제어권을 스프링이 가져감 (제어역행!!) 그래서 controller한테 맏겨야 된다.
select문 resultType
- select 문은 결과값이 존재하므로 resultType을 지정 해 준다.
- db에서 id 데이터타입이 varchar 즉 자바에선 문자열
- resultType: 내가 가져오는 타입이 이거다
- resultType은 하나만 적을 수 있다
Session
- 로그인을 할 때는 반드시 세션 처리가 있어야함 (왜 세션에 저장하는지는 세션과 쿠키 배울 때 알았졍)
- 스프링에서 session은 내장객체가 아님 (jsp에서는 내장객체)
- 세션은 request에서 가져온다 / 혹은 Httpsession 으로 Session만 인자값으로 부를 수 있다.
- (controller 메서드에 request를 인자값으로 부르는 이유는 세션도 쓰고,파라메터 값도 가지고오고 할거니까)
- 왜 request야? : response는 데이터를 담을 수 없다 / 페이지를 던지는 역할 / Request는 요청한 Client의 정보를 담고있는 객체
Controller 클래스에서 요청하는 법
1. 메서드 호출
2. 요청자체를 보낸다 (redirect)
redirect는 데이터를 실어 보낼 수 없다. 그래서 msg변수에 담아 보낼 내용은 없이 요청을 보내고 필요하면 list메서드에서 쓰면됨
DTO
로그인 성공을 하면 메인페이지에서 회원리스트를 보이게 할거임
그런데 데이터를 한번에 가져오려면 클래스에 담아서 가져와야함 -> DTO :데이터를 한번에 담고있는 클래스
또 리스트가 많아서 배열형태로 가져올거임!
- resultType은 하나만 적을 수 있음 (String,String,int,String) 이렇게 안됨
- 가져오는 데이터의 컬럼이 1개 이상일 경우 DTO를 사용한다.
- 사용할 DTO는 풀 경로를 명시해야 한다
- 크기를 지정해주지 않아도 되는 arraylist 로 memberDTO 타입의 배열(list)에 담는다.
- model 객체 쓸 때 값으로 배열형태 들어가는구나! Object 에서 볼수있음
- main페이지에서 c태그 foreach로 하나씩 꺼내줄거임
/delete
왜 main으로 안보내고 list로 보낼까? main은 원래 하얀페이지!
list가 보이는건 list요청을 받아서 하는거야.
delete하고 list로 돌아가야징!
<html>
button태그에서나 input태그 타입이 button일 때 onclick 속성은 현재페이지에서 이동하는 경우 사용한다.
<button type="button" onclick="location.href="#">버튼</button>
<table></table>
Td를 tr안에 감싸줘야 한줄에 나옴
Table thead/ tbody 나눠주면 편함
<thead>
<tr>
<th>ID</th><th>이름</th><th>삭제</th><th>상세보기</th>
</tr>
</thead>
<에러>
405 : Method 방식 안맞으면 405뜸! (jsp파일에 작성한 method방식과 controller에 requestmapping이 일치하지 않을 때 )
Warn 경고는 너무 신경쓰지말기