ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Spring] 페이징 Controller
    BACK-END/Spring 2020. 10. 15. 11:20

    | BoardController.java

    //페이징 기능 추가
    	@RequestMapping("/boardList.do")
    	public ModelAndView board_select(HttpServletRequest request, Model model) {
    		String pnum;
    		int pageNUM, pagecount;
    		int start, end;
    		int startpage, endpage;
    		int temp;
    		String skey="", sval="";
    		String returnpage="";
    		
    		//[시작페이지21]~[26선택]~[30]
    		pnum=request.getParameter("pageNum"); //<a href="boardList.do?pageNum=${i}">
    		if(pnum==""||pnum==null) { 
    			pnum="1"; //처음 index에서 boardList로 갈때, 한건 삭제 후, 신규 등록 후에는 1페이지로 가도록 설정 이거 안하면 nullpointException 된다
    		}
    		
    		//[시작페이지21]~[26선택]~[30]
    		pageNUM = Integer.parseInt(pnum); //26 
    		
    		int GGtotal = dao.boardCount(); //전체 레코드 수
    		int Gtotal  = dao.boardCountSearch(skey,sval); //조회 레코드 갯수 중요해서 두번 기술함 한번만 기술해도 됌
    		int Stotal  = dao.boardCountSearch(skey,sval);
    		
    		//행번호 251~260
    		start=(pageNUM-1)*10+1; // 행번호 251  (26-1)*10-1 = 251행
    		end  =pageNUM*10;		// 행번호 260  26*10 = 260행
    		
    		if(Stotal%10==0) {pagecount=Stotal/10;}
    		else {pagecount=(Stotal/10)+1;}//총 레코드 갯수가 317이니까 총 페이지수는 32페이지
    		
    		//[시작페이지21]~[26선택]~[30]
    		temp      = (pageNUM-1)%10; //5
    		startpage = pageNUM-temp;   //26-5 = 21 시작페이지
    		endpage   = startpage+9;	//21+9 = 30 끝페이지
    		if(endpage>pagecount) {endpage=pagecount;} //if(40>32페이지수)
    		
    		List<BoardDTO> LG = dao.boardSelect(start,end);
    		
    		ModelAndView mav = new ModelAndView();
    		mav.addObject("GGtotal", GGtotal);//전체갯수
    		mav.addObject("Gtotal", Gtotal);//조회갯수
    		mav.addObject("Stotal", Stotal);
    		mav.addObject("pageNUM", pageNUM);
    		mav.addObject("LG", LG);
    		mav.setViewName("boardList");
    		return mav; 
    	}//end

     

    | BoardList.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"  pageEncoding="UTF-8"%>
    
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
    
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>[boardList.jsp]</title>
       <style type="text/css">
        *{font-size: 12pt; font-weight: bold; }
        a{text-decoration:none;font-size: 12pt; font-weight: bold;   color:blue ;}
        a:hover{font-size: 12pt; font-weight: bold; text-decoration:underline; color:green ;  }
      </style>
    
    </head>
    <body>
     <font color=blue>[boardList.jsp]</font> <br>
        
      <table width="600"  border=1   cellspacing="0" >
      	 <tr align="right" height=50>
      	 	<td colspan="6"> 전체레코드갯수: ${Gtotal} &nbsp;  </td>
      	 </tr>
      
         <tr bgcolor=yellow height=50>
          <td>번호</td> <td>이름</td> 
          <td>제목</td> <td>성별</td> <td>취미</td>  <td>이미지</td> 
         </tr>
         
         <c:forEach var="dto" items="${LG}">
         <tr height=20>
        	<td> ${dto.rn} </td>
        	<td> ${dto.name} </td>
        	<td> 
        		<a href='boardDetail.do?idx=${dto.hobby_idx}'>${dto.title}</a>
        		<c:if test="${dto.rcnt>0}"> 
        			<font style="color:red;font-size:14pt">[${dto.rcnt}]</font> 
        		</c:if>
        	</td>
        	<td> ${dto.gender} </td>
        	<td> ${dto.hobby} </td>
        	<td>
        	 <img src ='${pageContext.request.contextPath}/resources/upload/${dto.img_file_name}' width=150 height=50 border=0> 
        	</td>     
         </tr> 
       </c:forEach>  
       
       
         
        <tr align="center">
      	 <td colspan="6">
      	  <!-- 이전 -->
      	  <c:if test="${startpage>10}"> 
      	   <a href="boardList.do?pageNum=${startpage-10}">[이전]</a>
      	  </c:if>
      	  
      	  <c:forEach var="i" begin="${startpage}" end="${endpage}" step="1">
      	  	<c:choose>
      	  		<c:when test="${i==pageNUM}"> 
      	  		  <font style='color:red;font-size:20pt'>[${i}]</font> 
      	  		</c:when>
      	  		<c:otherwise>
      	  		 <a href="boardList.do?pageNum=${i}${returnpage}">[${i}]</a>
      	  		</c:otherwise>
      	  	</c:choose>
      	  </c:forEach>
      	 
      	  <!-- 다음 -->
      	  <c:if test="${endpage<pagecount}"> 
      	   <a href="boardList.do?pageNum=${startpage+10}">[다음]</a>
      	  </c:if> 
         </td>
       </tr>
       
       
       <tr align="center">
      	 <td colspan="6">
      	  <form name="myform">
      	  	  검색 :     
      	  	 <select name="keyfield" onchange="clearText();">  
      	  	 	<option value="">-----선택하세요----- </option>
      	  	 	<option value="name"   <c:if test="${skey eq 'name'}">selected</c:if> > 하비이름필드 </option>
      	  	 	<option value="title"  <c:if test="${skey eq 'title'}">selected</c:if> > 하비제목필드 </option>
      	  	 	<option value="content" <c:if test="${skey eq 'content'}">selected</c:if> > 하비내용필드 </option>
      	  	 	<option value=""> 전체출력 </option>
      	  	 </select>
      	  	 <input type="text" name="keyword" value="${sval}" size=10>
      	  	 <input type="submit" value="검색">
      	  </form>
      	</td>
       </tr>     
    </table>
    
     <p>
     	<a href="index.jsp">[index.jsp]</a>
        <a href="boardWrite.do">[게시판등록]</a>
        <a href="boardList.do">[전체출력]</a> 
    </body>
    </html>
    
    
    
    
    

     

     

    | BoardDAO.java

    public List<BoardDTO>  boardSelect(int start, int end) { 
    		BoardDTO dto = new BoardDTO();
    		dto.setStart(start);
    		dto.setEnd(end);
    		List<BoardDTO> list = temp.selectList("board.selectAll", dto) ;
    		return list;
    	}//end

     

     

    | BoardDTO.java

    package net.hb.crud;
    
    import org.springframework.web.multipart.MultipartFile; //새로추가
    
    public class BoardDTO {
    	private int sabun;
    	private String name;
    	private String title;
    	private String content;
    	private String gender;
    	private int pay;
    	private int rn;
    	private java.util.Date  wdate;
    	private int hit;
    	private String email;
    	
    	private int mid;
    
    	private  int hobby_idx; //추가
    	private  String hobby; //추가
    	private  String img_file_name ; //추가
    	private  MultipartFile upload_f ;  //추가 <input type=file name=uplaod_f
    
    	
    	public int getMid() {
    		return mid;
    	}
    	public void setMid(int mid) {
    		this.mid = mid;
    	}
    	public int getHobby_idx() { return hobby_idx;}
    	public void setHobby_idx(int hobby_idx) {this.hobby_idx = hobby_idx;}
    	public String getHobby() {return hobby;}
    	public void setHobby(String hobby) {this.hobby = hobby;}
    	public String getImg_file_name() {return img_file_name;}
    	public void setImg_file_name(String img_file_name) {this.img_file_name = img_file_name;	}
    	public MultipartFile getUpload_f() {return upload_f;}
    	public void setUpload_f(MultipartFile upload_f) {this.upload_f = upload_f;	}
    
    
    	public int getSabun() {return sabun;}
    	public void setSabun(int sabun) {this.sabun = sabun;}
    	public java.util.Date getWdate() {return wdate;	}
    	public void setWdate(java.util.Date wdate) {this.wdate = wdate;	}
    	public int getHit() {return hit;}
    	public void setHit(int hit) {this.hit = hit;}
    	public String getEmail() {return email;}
    	public void setEmail(String email) {this.email = email;}
    
    	public int getPay() {return pay;}
    	public void setPay(int pay) {this.pay = pay;}
    	public int getRn() {return rn;}
    	public void setRn(int rn) {this.rn = rn;}
    
    	public String getName() {return name;}
    	public void setName(String name) {this.name = name;	}
    	public String getTitle() {return title;}
    	public void setTitle(String title) {this.title = title;}
    	public String getContent() {return content;	}
    	public void setContent(String content) {this.content = content;}
    	public String getGender() {	return gender;	}
    	public void setGender(String gender) {	this.gender = gender;}
    
    
    	//페이징,검색
    	private int start, end;  
    	private String skey, sval;
    	private int  rcnt;
    
    	public int getStart() {return start;}
    	public void setStart(int start) {this.start = start;}
    	public int getEnd() {return end;	}
    	public void setEnd(int end) {	this.end = end;	}
    	public String getSkey() {	return skey;	}
    	public void setSkey(String skey) {	this.skey = skey;	}
    	public String getSval() {return sval;	}
    	public void setSval(String sval) {this.sval = sval;	}
    	public int getRcnt() {return rcnt;	}
    	public void setRcnt(int rcnt) {this.rcnt = rcnt;} 
    }//class END
    

     

     

    | Board.xml

    <select id="selectAll" resultType="net.hb.crud.BoardDTO" parameterType="net.hb.crud.BoardDTO">
    	   	select * from (select  rownum rn, h.* ,(
    		select count(*) from hobby_reply r where r.hobby_idx=h.hobby_idx
    		) as rcnt from hobby h
    		) where rn between #{dto.start} and #{dto.end}
    </select>

     

    댓글

Today
Designed by Danbee Park.