스프링

컨트롤러 의 페이지 처리와 같다. 

view 에서  list 번호를 주고 마지막 데이터의 번호를 ajax 로 컨트롤로에 넘겨주면

컨트롤러 에서 해당 리스트의 데이터를 반환해 주면 된다.

 

컨트롤러

 

@Controller
@RequestMapping(value="/gallery/view")
public class GalleryController {

	
	private static final String JSP_PAGE ="/view/gallery";
	
	private Logger logger=LoggerFactory.getLogger(GalleryController.class);
	
	@Inject
	private GalleryService service;
	
	private static String UPLOAD_PATH="resources/gallery/";
	
	@RequestMapping(value="/list.do", method=RequestMethod.GET)
	public String galleryPage(PageAndSearch pas ,Model model){	
		try {
		
			//페이지 나누기 관련 처리
			if(pas.getCurPage()==null){pas.setCurPage(1);}
			
			int count =service.galleryCount();
			Pager.PAGE_SCALE=21;
			Pager pager =new Pager(count, pas.getCurPage());
			int start =pager.getPageBegin();
			int end =pager.getPageEnd();
			
			
			List<GalleryDTO> galleryList =service.galleryList(start, end);
			
			for(GalleryDTO dto :galleryList){
				String filePath =dto.getFilePath();
				String front=filePath.substring(0, 12);
				String fileEnd=filePath.substring(14);
				dto.setFilePath(front+fileEnd);
				
			}
			model.addAttribute("pager", pager);
			model.addAttribute("galleryList",	galleryList );
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		return JSP_PAGE+"/gallery";
	}

	
	@RequestMapping(value="/morelist")
	public String moreList(@RequestParam("lastID") Integer lastID, Model model) throws Exception{
		
		logger.info(" 받아온 값은 lastID 값 :  " + lastID);
		
		int start=lastID;
		int end=lastID+21;
		List<GalleryDTO> galleryList =service.galleryList(start, end);
		
		for(GalleryDTO dto :galleryList){
			String filePath =dto.getFilePath();
			String front=filePath.substring(0, 12);
			String fileEnd=filePath.substring(14);
			dto.setFilePath(front+fileEnd);
			
		}
		
		model.addAttribute("galleryList",	galleryList );
		model.addAttribute("lastID", end+1);
		
		return JSP_PAGE+"/moreList";
	}
	
	
	
	
}

 

mapper


	<select id="galleryList" resultType="com.macaronics.www.user.model.dto.GalleryDTO">
				select * from
		 (
		 select rownum as rn , A.* FROM (
		    select rownum, 	IDX, FILENAME, FILETYPES, FILEPATH from TBL_GALLERY
		     where idx > 0 order by idx desc
			) A
		  ) where rn BETWEEN #{start}  and #{end}
	</select>

 

gallery.jsp

            <!-- Start gallery -->
            <div class="aa-gallery-content">
              
              <!-- Start gallery image -->
              <div class="aa-gallery-body">
			
		
			<c:forEach items="${galleryList }" var="row" varStatus="status" >
			 <!-- start single gallery image -->
                <div class="aa-single-gallery" id="${status.index+1}">                  
                  <div class="aa-single-gallery-item">
                    <div class="aa-single-gallery-img">
                      <a href="#">
                      <img src="/resources/gallery${row.filePath }" 
                      alt="img" style="max-width:341px; max-height: 180px;
                      border:2 solid #CDCDCD;padding:2px;
                       "></a>
                    </div>
                    <div class="aa-single-gallery-info">
                      <a href="#"><span class="fa fa-search"></span></a>
                    </div>  
                    <div class="portfolio-detail">
	                    <a href="#" class="modal-close-btn"><span class="fa fa-times"></span></a>
	                    <img src="/resources/gallery${row.filePath }" alt="img-2" />
	                    <h2>Mobile Application</h2>
	                    <p>Macarnoics SHOP</p>
	                    <a href="#" class="view-project-btn">${row.fileName}</a>
	                </div>               
                  </div>
                </div>
                
  			</c:forEach>
              
              </div>
              
              	<div id="lastPostsLoader"></div>
              
            </div>

status.indext 는 0부터 시작되어서 +1 을 해 주었다.

 

javaScript

화면이 로드 되자 마자  윈도우 스크롤을 높이를 정해준다. 

lastPostFunc 함수  를 호출 한다.

 

이미지를 가져오는 동안 로딩 중임을 표시한다.

 $('div#lastPostsLoader').html('<img src="/resources/view/img/gallery/fancybox_loading@2x.gif">');

 

jsp 에서 id 값에 번호를 준다음 list 에서  jquery 로 마지막 데이터의 번호를 

가져온다.

$(".aa-single-gallery:last").attr("id")

 

이것을 ajax  로 데이터를 가져와서 뿌려 주면 된다.


function lastPostFunc() 
{ 
    $('div#lastPostsLoader').html('<img src="/resources/view/img/gallery/fancybox_loading@2x.gif">');

	 $.get("/gallery/view/morelist?lastID=" + $(".aa-single-gallery:last").attr("id"),     
		 
			function(data){
		 
			 
		        if (data != "") {
		        	
		        	$(".aa-single-gallery:last").after(data);            
		        }
		        
		        $('div#lastPostsLoader').empty();
    });
}; 


$(window).scroll(function(){
    if  ($(window).scrollTop() == $(document).height() - $(window).height()){
       lastPostFunc();
    }
});

 

ajax 로 컨트롤 호출시 반환 값으로 morelist.jsp 페이지로 리턴해서 데이터를 가져와서

뿌려 주는 방식을 취했다.

lastID  값도 계산하여  model 에 저장 하였다.

JSON 을 이용하려면 Handler.bar 로 사용 해라.

 

	@RequestMapping(value="/morelist")
	public String moreList(@RequestParam("lastID") Integer lastID, Model model) throws Exception{
		
		logger.info(" 받아온 값은 lastID 값 :  " + lastID);
		
		int start=lastID;
		int end=lastID+21;
		List<GalleryDTO> galleryList =service.galleryList(start, end);
		
		for(GalleryDTO dto :galleryList){
			String filePath =dto.getFilePath();
			String front=filePath.substring(0, 12);
			String fileEnd=filePath.substring(14);
			dto.setFilePath(front+fileEnd);
			
		}
		
		model.addAttribute("galleryList",	galleryList );
		model.addAttribute("lastID", end+1);
		
		return JSP_PAGE+"/moreList";
	}
	

 

moreList.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>


			<c:forEach items="${galleryList }" var="row" varStatus="status" >
			 <!-- start single gallery image -->
                <div class="aa-single-gallery" id="${lastID +(status.index+1)}">                  
                  <div class="aa-single-gallery-item">
                    <div class="aa-single-gallery-img">
                      <a href="#"><img src="/resources/gallery${row.filePath }" 
                      alt="img" style="max-width:341px; max-height: 180px;
                      border:2 solid #CDCDCD;padding:2px;
                       "></a>
                    </div>
                    <div class="aa-single-gallery-info">
                      <a href="#"><span class="fa fa-search"></span></a>
                    </div>  
                    <div class="portfolio-detail">
	                    <a href="#" class="modal-close-btn"><span class="fa fa-times"></span></a>
	                    <img src="/resources/gallery${row.filePath }" alt="img-2" />
	                    <h2>PHOTOFOLIO of JUHO CHOI</h2>
	                    <p>Macarnoics SHOP</p>
	                    <a href="#" class="view-project-btn">${row.fileName}</a>
	                </div>               
                  </div>
                </div>
                
  			</c:forEach>

 

 

 

 

 

 

about author

PHRASE

Level 60  머나먼나라

어버이는 어버이로서 존중한다. 그래서 당연히 조상을 존중하는 것이다. 조상을 존중하는 일은 멀리 있는 것이 아니다. 마치 어버이를 섬기는 마음 같이 자연히 우러나오는 마음인 것이다. -예기

댓글 ( 4)

댓글 남기기

작성