list페이지에서 수정 버튼을 누르는 경우
onclick="location.href='update.do?mediagroupno=${dto.mediagroupno}'"
GET방식으로 mediagroupno를 가져오고, updateForm에 읽어온 데이터를 보여준다
@RequestMapping(value="mediagroup/update.do",method = RequestMethod.GET)
public ModelAndView updateForm(int mediagroupno) {
ModelAndView mav=new ModelAndView();
mav.setViewName("mediagroup/updateForm");
mav.addObject("dto", dao.read(mediagroupno));
return mav;
}
updateForm에서 수정 버튼을 누르는 경우
form에서 데이터를 처리하는 방식이 post
수정을 누르는 경우 update되도록 처리한다
@RequestMapping(value="mediagroup/update.do",method = RequestMethod.POST)
public ModelAndView updateProc(MediagroupDTO dto) {
ModelAndView mav=new ModelAndView();
int cnt= dao.update(dto);
if (cnt == 0) {
mav.setViewName("mediagroup/msgView");
String msg1 = "<p>미디어 그룹 수정 실패</p>";
String img="<img src='../images/pepe1.png' width='300px'>";
String link1= "<input type='button' value='다시시도' onclick='javascript:history.back()'>";
String link2= "<input type='button' value='그룹목록' onclick='location.href=\"list.do\"'>";
mav.addObject("msg1",msg1);
mav.addObject("img", img);
mav.addObject("link1", link1);
mav.addObject("link2", link2);
} else {
// 성공하면 리스트 페이지로 이동
// redirect 명령어로 호출해서 이동
mav.setViewName("redirect:/mediagroup/list.do");
}
return mav;
}
GET방식
public MediagroupDTO read(int mediagroupno) {
MediagroupDTO dto=null;
try {
sql=new StringBuilder();
sql.append(" select title,mediagroupno ");
sql.append(" from mediagroup ");
sql.append(" where mediagroupno= " + mediagroupno);
RowMapper<MediagroupDTO> rowMapper = new RowMapper<MediagroupDTO>() {
@Override
public MediagroupDTO mapRow(ResultSet rs, int rowNum) throws SQLException {
// RowMapper 선택한 행을 기준으로 담아준다
// 행의 갯수만큼 알아서 담아준다
MediagroupDTO dto = new MediagroupDTO();
// 한줄에 어떻게 담을것인지 설정
// mediagroupno, title
dto.setMediagroupno(rs.getInt("mediagroupno"));
dto.setTitle(rs.getString("title"));
return dto;
}
};
dto=jt.queryForObject(sql.toString(), rowMapper);
} catch (Exception e) {
System.out.println("불러오기 실패"+e);
}
return dto;
}
POST방식
public int update(MediagroupDTO dto) {
int cnt=0;
try {
sql=new StringBuilder();
sql.append(" update mediagroup ");
sql.append(" set title=? ");
sql.append(" where mediagroupno=? ");
cnt=jt.update(sql.toString(),dto.getTitle(),dto.getMediagroupno());
} catch (Exception e) {
System.out.println("미디어 수정 실패"+e);
}
return cnt;
}
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>updateForm</title>
<style>
* {
font-family: gulim;
font-size: 25px;
}
</style>
<link href="../css/style.css" rel="stylesheet" type="text/css">
</head>
<body>
<div class="title">미디어 그룹 수정</div>
<form name="frm" method="post" action="update.do">
<input type="hidden" name="mediagroupno" value="${dto.mediagroupno}">
<table class='table'>
<tr>
<th>미디어 그룹 제목</th>
<td><input type='text' name='title' size='50' value='${dto.title}'></td>
</tr>
</table>
<div class="bottom">
<input type="submit" value="수정">
<input type="button" value="목록" onclick="location.href='list.do'">
</div>
</form>
</body>
</html>


@RequestMapping("mediagroup/list.do")
public ModelAndView list(HttpServletRequest req) {
ModelAndView mav=new ModelAndView();
mav.setViewName("mediagroup/list");
int totalRowCount=dao.totalRowCount(); //총 글갯수
//페이징
int numPerPage = 5; // 한 페이지당 레코드 갯수
int pagePerBlock = 10; // 페이지 리스트
String pageNum=req.getParameter("pageNum");
if(pageNum==null){
pageNum="1";
}
int currentPage=Integer.parseInt(pageNum);
int startRow =(currentPage-1)*numPerPage+1;
int endRow =currentPage*numPerPage;
//페이지 수
double totcnt = (double)totalRowCount/numPerPage;
int totalPage = (int)Math.ceil(totcnt);
double d_page = (double)currentPage/pagePerBlock;
int Pages = (int)Math.ceil(d_page)-1;
int startPage = Pages*pagePerBlock;
int endPage = startPage+pagePerBlock+1;
List list=null;
if(totalRowCount>0){
list=dao.list2(startRow, endRow);
} else {
list=Collections.EMPTY_LIST;
}//if end
mav.addObject("pageNum", currentPage);
mav.addObject("count", totalRowCount);
mav.addObject("totalPage", totalPage);
mav.addObject("startPage", startPage);
mav.addObject("endPage", endPage);
mav.addObject("list", list);
return mav;
}//list() end
행의 갯수
public int totalRowCount() {
int cnt=0;
try {
sql=new StringBuilder();
sql.append(" SELECT COUNT(*) FROM mediagroup ");
cnt=jt.queryForObject(sql.toString(),Integer.class);
} catch (Exception e) {
System.out.println("전체 행 갯수"+e);
}
return cnt;
}
페이징
public List<MediagroupDTO> list2(int start,int end){
List<MediagroupDTO> list=null;
try {
sql=new StringBuilder();
sql.append(" select AA.* ");
sql.append(" FROM( ");
sql.append(" SELECT ROWNUM AS RNUM, BB.* ");
sql.append(" FROM( ");
sql.append(" SELECT mediagroupno, title ");
sql.append(" FROM mediagroup ");
sql.append(" ORDER BY mediagroupno DESC ");
sql.append(" )BB ");
sql.append(" )AA ");
sql.append(" WHERE AA.RNUM>="+ start+ "AND AA.RNUM<="+ end);
RowMapper<MediagroupDTO> rowMapper = new RowMapper<MediagroupDTO>() {
@Override
public MediagroupDTO mapRow(ResultSet rs, int rowNum) throws SQLException {
MediagroupDTO dto = new MediagroupDTO();
dto.setMediagroupno(rs.getInt("mediagroupno"));
dto.setTitle(rs.getString("title"));
return dto;
}
};
list=jt.query(sql.toString(), rowMapper);
} catch (Exception e) {
System.out.println("페이징 실패"+e);
}
return list;
}
<!-- 페이지 리스트 -->
<c:if test="${requestScope.count>0 }">
<c:set var="pageCount" value="${requestScope.totalPage}"/>
<c:set var="startPage" value="${requestScope.startPage}"/>
<c:set var="endPage" value="${requestScope.endPage}"/>
<div class="content">
<c:if test="${endPage>pageCount}">
<c:set var="endPage" value="${pageCount+1}"/>
</c:if>
<c:if test="${startPage>0}">
<a href="./list.do?pageNum=${startPage}">[이전]</a>
</c:if>
<c:forEach var="i" begin="${startPage+1}" end="${endPage-1}">
<c:choose>
<c:when test="${pageNum==i}"><span style="font-weight: bold">${i}</span></c:when>
<c:when test="${pageNum!=i}"><a href="./list.do?pageNum=${i}">[${i}]</a></c:when>
</c:choose>
</c:forEach>
<c:if test="${endPage<pageCount}">
<a href="./list.do?pageNum=${startPage+11}">[다음]</a>
</c:if>
</div>
</c:if>
