스프링

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

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>

 

 

 

 

 

spring

 

about author

PHRASE

Level 60  머나먼나라

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

댓글 ( 4)

댓글 남기기

작성