백에서 페이징 처리

아기코딩단2·2022년 4월 15일
0

order by board_no desc limit 5; <= 이렇게하면 5개씩 나옴
order by board_no desc limit 5 offset 0;(0번쨰부터 가져와라)
order by board_no desc limit 5 offset 5;(5번째부터 가져와라)
order by board_no desc limit 10, 5;(10번째부터 5개로 가져와라)

DDOS 공격은 서버 공격 => 서버에 일을 많이 시키는 거임

입력 파라미터/ 값 검증, 결과값 가공(HTML, XML, JSON) <= Controller

List findAll(@Param("rowCount") int rowCount, @Param("offset") int offset); => Param 에 뒤에있는 Param에 해당하는 애가 가리키는 거임

주의!

  • 스레드 마다 SqlSession이 구분되어야 한다. 즉 클라이언트 간의 트랜잭션이 분리되어야 한다.
  • 따라서 스레드가 서비스 메서드를 호출하는 시점에서 SqlSession을 얻어 DAO를 준비해야 한다.

int pageNo = 1; // 1페이지에 5개
int pageSize = 5;
int totalPageSize = 0; // 무조건 1페이지는 나와야함

try { // pageSize 파라미터 값이 있다면 기본 값을 변경한다.
pageSize = Integer.parseInt(request.getParameter("pageSize"));
if (pageSize < 5 || pageSize > 100) { // pageSize 가 100만개 이러면 무시해버림
pageSize = 5;
}
} catch (Exception e) {}

// 게시글 전체 개수를 알아내서 페이지 개수를 계산한다.

int boardSize = boardService.size();
totalPageSize = boardSize / pageSize;
if ((boardSize % pageSize) > 0 ) {
totalPageSize++;
}
try { // pageNo 파라미터 값이 있다면 기본 값을 변경한다.
pageNo = Integer.parseInt(request.getParameter("pageNo"));
if (pageNo < 1 || pageNo > totalPageSize) {// pageNo 유효성 검증
pageNo = 1;
}
} catch (Exception e) {} // 문자열로 pageNo 를 보내더라도 무시하라는 뜻 계속해서 1페이지임

커넥션을 다 쓰고 있는 상태에서 기존의 커넥션 중에서 기존의 작업을 안끊고 나가는 커넥션이 있음 그거를 mariaDB에서 timeout 이 될 때까지 요청함 그래서 렉이 걸리는 거임 => 자원을 사용 후 꼭 닫아줘야함 / DB 같은 경우는 꼭 닫아줘야함

mariaDB에 커넥션 개수를 설정할 수 있음

profile
레거시 학살자

0개의 댓글