Spring board 처리

kangjuju·2023년 3월 20일
0

Spring

목록 보기
11/13

paging 처리

ListController.class

  • 해당 게시판 요청을 받는 매핑 메소드.
	private int tot; //전체 레코드 수
	private int plist = 10; //페이지당 행 수 
	private int pagesu; //전체 페이지수
    
@GetMapping("list")
	public String listProcess(Model model,@RequestParam("page")int page) {
		int spage = 0;
		try {
			spage = page;
		} catch (Exception e) {
			spage = 1;
		}
		if(page <= 0) spage = 1;
		//model.addAttribute("data",list); paging이 없는경우

		//paging 처리
		tot = daoImpl.totalCnt();	
		ArrayList<BoardDto> list = (ArrayList<BoardDto>)daoImpl.listAll();
		ArrayList<BoardDto> result = getListData(list,spage); 
		model.addAttribute("data",result);
		model.addAttribute("pagesu",getPageSu());
		model.addAttribute("page",spage);
		
		return "list";
	}
    	public int getPageSu() { //표시될 페이지 수 얻기
		pagesu = tot / plist;
		if(tot % plist > 0) pagesu += 1; //나머지 레코드 계산
		return pagesu;
	}
  • spage : 사용자가 선택한 게시글페이지. 기본값은 1페이지이고, 따로 선택한페이지가 있다면 그 값이 저장된다.

  • tot : 전체 레코드수. 이는 표시될 페이지 항목수를 계산하는데에 쓰인다.

  • getListData(list,spage) : 선택한 페이지에 대해서만 표시될 레코드들을 반환한다.


	//(전체레코드/선택 page index)
	public ArrayList<BoardDto> getListData(ArrayList<BoardDto> list,int page){
		ArrayList<BoardDto> result = new ArrayList<BoardDto>();
		int start = (page - 1) * plist; //0,10,20...
		//페이지에 보여질 레코드.
		//.size()가 10보다 클시 참이 되므로 plist가 저장. 
		//거짓일 경우 start(페이지 비례 10의배수)가 빠진 list.size가 저장
		int size = plist <= list.size() - start? plist : list.size() - start; 
		//결정된 레코드만큼만 DB레코드 get
		for (int i = 0; i < size; i++) {
			result.add(i,list.get(start+i));
			System.out.println("i:"+i+"/start+i:"+(start+i));
		}	
		return result;
	}
  1. 등록된 모든 레코드List와 선택한 페이지 page가 파라미터로 넘어온다.
  2. 반환용 result 리스트를 생성.
  3. int start : 몇번째 레코드부터 반환할지의 시작점을 계산한다.
    (선택한 페이지-1) * 페이지당 행 개수(10)
  4. int size : 페이지당 행 개수 <= 전체레코드수-시작점 을 비교했을때,
    거짓이면 list.size() - start;을 계산하여 나머지 레코드 개수를 size으로 저장하고,
    참이면 10을 저장한다.
  5. for문으로 결정된 레코드수 만큼만 인덱싱하여 result리스트에 담는다.
    result.add(i,list.get(start+i)); 으로 전체 레코드의 부분 시작점부터 size까지의 내용을 꺼내 저장한다

jstl fnc 이용하여 글 제목 자르기

<td>제목</td>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<!-- 제목이 길면 자름 -->
<c:set var="title" value="${data.title }"/>
<td>
	<input type="text" name="title" style="width: 99%" value="[Re]:${fn:substring(title,0,8)}..."/>
</td>

댓글 로직에 대해

https://velog.io/@jujuclub/230221JSP-%EC%87%BC%ED%95%91%EB%AA%B0-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8

0개의 댓글