currentPage : 현재 이 페이지가 몇번째 페이지?
pageSize : 페이지 사이즈, 10개를 보여줄거냐 50개를 보여줄건지 확인
startRow : 그럼 DB는 몇번째 데이터부터 찾으면 되는지
endRow : 그럼 DB는 몇번째 데이터까지 찾으면 되는지
ListResult : DB에서 가져온 리스트 결과를 담아줄 변수
totalCount : 페이징 인덱스를 매기기 위해 실제 데이터는 몇개?
소스참조) ListResult.java
int startRow = (currentPage-1)*pageSize; //현재 페이지는 0부터 시작하는데 cp가 1부터 시작하면 DB에서 ROWNUM값(0~)을 받아올수가 없기때문에 -1를 한 채로 시작하는 ROW값을 바꿔준다.
int endRow = currentPage*pageSize;
처리된 데이터들을 Paging객체에 담아줄 수 있는 메서드를 생성한다.
DB의 리스트 결과값은 resultList에 담기고, 총 데이터 갯수는 totalCount에 담긴다.
public ListResult getListResult(int currentPage, int pageSize) { System.out.println(""); ArrayList<board_address> list = dao.list(currentPage, pageSize); long totalCount = dao.getTotalCount(); return new ListResult(currentPage, totalCount, pageSize, list); }
소스참조) boardService.java
귀성열차표 구할때 몇만명이 서버에 접속하면 과부하걸리듯이 한번 response하면 연결이 끊기게 되어있음.
특정 유저의 방을 만드는 것이 session이라는 공간(방,스코프)가 만들어짐 . session방에 아이디를 만들어서 1번째 요청에의해서 발생한 쿠키(JSID)라고 하는 것을 넘겨줌. 이걸 2번쨰요청할때 쿠키를 가지고 요청함.(session을 찾아갈수 있게 됨)
쿠키는 클라이언트가 가지고 있음
1.메모리 쿠키 -브라우저가 살아있을 동안만 유지되어짐 (JSLD는 메모리쿠키에 저장됌, 이유는 클라이언트인척하는 해커가 PSID를 가지고 해킹할수 있는 확률이 있기때문에-보안상 취약해짐 )
- 파일 쿠키 - 하드디스크
쿠키가 살아있는 동안 - > 요청을 지속적으로 하기 위해 보통 20분정도 세션 시간을 정해 그동안에 요청이 안오면 사라짐(브라우저가 닫는순간 / 보안상 이유)//참고 JSID : JSESSION ID
-> session이 없으면, 로그인, 장바구니 기능을 구현할 수 없음. ( 클라이언트 특정이 어렵기때문에 )
둘다 번호를 넣는 것이라고 생각할 수 있지만..
Sequence는 Create를 만들고 데이터로서의 기능(테이블에 insert 가능)을 갖지만
Rownum은 데이터로의 기능은 없다고 생각하고, 목록의 개수가 몇개인지 볼수 있는 것이라고 보면 된다고 생각한다.(테이블에 insert 불가능)-> 진짜db갯수(업뎃되면 바뀜)
페이지사이즈의 내용이 사라지면 그 전 페이지로 가줘라
현재 페이지사이즈의 값이 다르면
1페이지로 가라고.(맨앞)
세션 변수값이 object 로 바뀌기 때문에
원래형을 찾아줘야함.(listResult..?)
s-> string 타입
o-> object 타입
->고급 el사용
참조) list.jsp
listResult 값이 비어있으면
<c:if test = ${empty listResult.list}>
</c:if>
그아래 내용을 실행해줘라.
비어있지않으면 반복문 실행.
c:foreach items="${}"
각각의 메소드를 1개씩 호출해라
return///////////////////////new Member