javascript, JQuery

ajax 페이징처리 (더보기)

cattaku 2020. 3. 3. 16:04

ajax를 활용한 간단한 더보기 페이징 구현입니다. 

Mysql에서 제공하는 샘플 DB를 활용해서 영화목록 리스트를 만들어봤습니다. 

VO를 따로 만들지 않고 service와 controller만으로 구현 했으며, 

쿼리에 Limit 를 써서 10개씩만 보여주게끔 만들었습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<%@ include file = "../include/header.jsp" %>
 
<body>
<div>
    <table id="addList" border="1">
        <thead>
            <tr>
                <th>No</th>
                <th>제  목</th>
                <th>내    용</th>
            </tr>
        </thead>
        <tbody id="listBody">
        </tbody>
    </table>  
</div>  
        <button id="addBtn" onclick="moreList();"><span>더보기</span></button>
</body>
</html>
 
<script>
moreList(); //함수 호출
 
function moreList() {
 
    var startNum = $("#listBody tr").length;  //마지막 리스트 번호를 알아내기 위해서 tr태그의 length를 구함.
    var addListHtml = "";  
    console.log("startNum", startNum); //콘솔로그로 startNum에 값이 들어오는지 확인
 
     $.ajax({
        url : "/study/getfilmList",
        type : "post",
        dataType : "json",
        data : {"startNum":startNum},
        
        success : function(data) {
            if(data.length < 10){
                $("#addBtn").remove();   // 더보기 버튼을 div 클래스로 줘야 할 수도 있음
            }else{
            var addListHtml ="";
            if(data.length > 0){
                
                for(var i=0; i<data.length;i++) {
                    var idx = Number(startNum)+Number(i)+1;   
                    // 글번호 : startNum 이  10단위로 증가되기 때문에 startNum +i (+1은 i는 0부터 시작하므로 )
                    addListHtml += "<tr>";
                    addListHtml += "<td>"+ idx + "</td>";
                    addListHtml += "<td>"+ data[i].title + "</td>";
                    addListHtml += "<td>"+ data[i].description + "</td>";
                    addListHtml += "</tr>";
                }
                $("#listBody").append(addListHtml);
            }
            }
        }
    });
 
}
</script>
 

<<< Service>>>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
@Service 
public class StudyServiceImpl {
 
@Autowired 
SqlSession sql; 
 
/* 영화 목록 */ 
public List<Map<String, Object>> filmList(int start) throws Exception { 
 
int cnt = 10
Map<String, Object> map = new HashMap<>(); 
map.put("start", start); 
map.put("cnt", cnt); 
 
    List<Map<String, Object>> list = sql.selectList("mapper.study.filmList", map); 
    return list; 
    }
}

 

<<< Controller >>>

1
2
3
4
5
6
7
8
9
10
 
@Controller
public class StudyController {
//영화리스트
    @RequestMapping("filmList")
    public String filmList(Model model) throws Exception {
 
        return "/study/filmList";
    }
}
r