KDT/WEB

240213 WEB(펀웹5)

001cloudid 2024. 2. 13. 14:43
728x90

날짜 포멧 변경

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> <!-- => 날짜 모양 변경 태그 라이브러리 -->
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>center/notice.jsp</title>
<link href="${pageContext.request.contextPath}/resources/css/default.css" rel="stylesheet" type="text/css">
<link href="${pageContext.request.contextPath}/resources/css/subpage.css" rel="stylesheet" type="text/css">
<!--[if lt IE 9]>
<script src="http://ie7-js.googlecode.com/svn/version/2.1(beta4)/IE9.js" type="text/javascript"></script>
<script src="http://ie7-js.googlecode.com/svn/version/2.1(beta4)/ie7-squish.js" type="text/javascript"></script>
<script src="http://html5shim.googlecode.com/svn/trunk/html5.js" type="text/javascript"></script>
<![endif]-->
<!--[if IE 6]>
 <script src="../script/DD_belatedPNG_0.0.8a.js"></script>
 <script>
   /* EXAMPLE */
   DD_belatedPNG.fix('#wrap');
   DD_belatedPNG.fix('#main_img');   

 </script>
 <![endif]-->
</head>
<body>
<div id="wrap">
<!-- 헤더들어가는 곳 -->
<jsp:include page="../inc/top.jsp" />
<!-- 헤더들어가는 곳 -->

<!-- 본문들어가는 곳 -->
<!-- 메인이미지 -->
<div id="sub_img_center"></div>
<!-- 메인이미지 -->

<!-- 왼쪽메뉴 -->
<nav id="sub_menu">
<ul>
<li><a href="#">Notice</a></li>
<li><a href="#">Public News</a></li>
<li><a href="#">Driver Download</a></li>
<li><a href="#">Service Policy</a></li>
</ul>
</nav>
<!-- 왼쪽메뉴 -->

<!-- 게시판 -->
<article>
<h1>Notice</h1>
<table id="notice">
<tr><th class="tno">No.</th>
    <th class="ttitle">Title</th>
    <th class="twrite">Writer</th>
    <th class="tdate">Date</th>
    <th class="tread">Read</th></tr>
<c:forEach var="boardDTO" items="${boardList}">

<tr><td>${boardDTO.num}</td>
	<td class="left">${boardDTO.subject}</td>
    <td>${boardDTO.name}</td>
    
    <td><fmt:formatDate value="${boardDTO.date}" pattern="yyyy-MM-dd"/></td>
    <td>${boardDTO.readcount}</td></tr>

</c:forEach>

</table>

<!-- 로그인을 하지 않으면 글쓰기 버튼이 보이지 않게 설정 -->
<c:if test="${!empty sessionScope.id }">
<div id="table_search">
<!-- location 자바스크립트 내장 객체 => 웹 브라우저 주소줄을 객체로 정의
     location 내장객체 멤버 변수 => href 변수 : 웹 브라우저 주소줄 내용을 저장하고 있는 변수
						  => href 변수 내용이 변경되어지면 웹 브라우저 주소도 변경 
						  location.href='${pageContext.request.contextPath}/board/write -->
<input type="button" value="글쓰기" class="btn" onclick="location.href='${pageContext.request.contextPath}/board/write'">
</div>
</c:if>

<div id="table_search">
<input type="text" name="search" class="input_box">
<input type="button" value="search" class="btn">
</div>
<div class="clear"></div>
<div id="page_control">
<a href="#">Prev</a>
<a href="#">1</a><a href="#">2</a><a href="#">3</a>
<a href="#">4</a><a href="#">5</a><a href="#">6</a>
<a href="#">7</a><a href="#">8</a><a href="#">9</a>
<a href="#">10</a>
<a href="#">Next</a>
</div>
</article>
<!-- 게시판 -->
<!-- 본문들어가는 곳 -->
<div class="clear"></div>
<!-- 푸터들어가는 곳 -->
<jsp:include page="../inc/bottom.jsp" />
<!-- 푸터들어가는 곳 -->
</div>
</body>
</html>

 

//BoardController

	@GetMapping("/list")
	public String list(HttpServletRequest request, PageDTO pageDTO, Model model) {
		System.out.println("BoardController list()");
		
		// 한 화면에 보여줄 글의 개수 설정
		int pageSize = 15;
		// pageNum에 파라미터 값을 가져오기
		String pageNum = request.getParameter("pageNum"); //request에서 값을 받아옴
		// pageNum값이 없으면 1로 설정
		if(pageNum == null) {
			pageNum = "1";
		}
		
		//pageNum => 정수형 변경
		int currentPage = Integer.parseInt(pageNum);
		
		//pageDTO에 저장
		pageDTO.setPageSize(pageSize);
		pageDTO.setPageNum(pageNum);
		pageDTO.setCurrentPage(currentPage);
		
		List<BoardDTO> boardList = boardService.getBoardList(pageDTO);
		
		//페이징 작업
		//전체 글의 개수 구하기 int count = getBoardCount()
		int count = boardService.getBoardCount();
		//한 화면에 보여줄 페이지 개수 설정
		int pageBlock = 10;
		//한 화면에 보여줄 시작 페이지 구하기
		//1~10 => 1, 11~20 => 11,..
		int startPage = (currentPage-1)/pageBlock*pageBlock+1;
		//한 화면에 보여줄 끝 페이지 구하기
		int endPage = startPage + pageBlock -1;
		//전체 페이지 개수 구하기
		int pageCount = count / pageSize + (count%pageSize == 0 ? 0 : 1);
		if(endPage > pageCount) {
			endPage = pageCount; //끝 페이지, 전체 페이지 수를 비교해서 => 끝 페이지가 크면 전체 페이지 수로 끝 페이지 변경
		}
		
		
		//pageDTO 저장
		pageDTO.setCount(count); //[전체 글의 개수 ${pageDTO.count }]
		pageDTO.setPageBlock(pageBlock);
		pageDTO.setStartPage(startPage);
		pageDTO.setEndPage(endPage);
		pageDTO.setPageCount(pageCount);
		
		//model 저장
		model.addAttribute("pageDTO", pageDTO);
		
		model.addAttribute("boardList", boardList);
		
		// center/notice.jsp 주소변경없이 이동
		return "center/notice";
	}

 

notice.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> <!-- => 날짜 모양 변경 태그 라이브러리 -->
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>center/notice.jsp</title>
<link href="${pageContext.request.contextPath}/resources/css/default.css" rel="stylesheet" type="text/css">
<link href="${pageContext.request.contextPath}/resources/css/subpage.css" rel="stylesheet" type="text/css">
<!--[if lt IE 9]>
<script src="http://ie7-js.googlecode.com/svn/version/2.1(beta4)/IE9.js" type="text/javascript"></script>
<script src="http://ie7-js.googlecode.com/svn/version/2.1(beta4)/ie7-squish.js" type="text/javascript"></script>
<script src="http://html5shim.googlecode.com/svn/trunk/html5.js" type="text/javascript"></script>
<![endif]-->
<!--[if IE 6]>
 <script src="../script/DD_belatedPNG_0.0.8a.js"></script>
 <script>
   /* EXAMPLE */
   DD_belatedPNG.fix('#wrap');
   DD_belatedPNG.fix('#main_img');   

 </script>
 <![endif]-->
</head>
<body>
<div id="wrap">
<!-- 헤더들어가는 곳 -->
<jsp:include page="../inc/top.jsp" />
<!-- 헤더들어가는 곳 -->

<!-- 본문들어가는 곳 -->
<!-- 메인이미지 -->
<div id="sub_img_center"></div>
<!-- 메인이미지 -->

<!-- 왼쪽메뉴 -->
<nav id="sub_menu">
<ul>
<li><a href="#">Notice</a></li>
<li><a href="#">Public News</a></li>
<li><a href="#">Driver Download</a></li>
<li><a href="#">Service Policy</a></li>
</ul>
</nav>
<!-- 왼쪽메뉴 -->

<!-- 게시판 -->
<article>
<h1>Notice [전체 글의 개수 ${pageDTO.count }]</h1>
<table id="notice">
<tr><th class="tno">No.</th>
    <th class="ttitle">Title</th>
    <th class="twrite">Writer</th>
    <th class="tdate">Date</th>
    <th class="tread">Read</th></tr>
<c:forEach var="boardDTO" items="${boardList}">

<tr><td>${boardDTO.num}</td>
	<td class="left">${boardDTO.subject}</td>
    <td>${boardDTO.name}</td>
    
    <td><fmt:formatDate value="${boardDTO.date}" pattern="yyyy-MM-dd"/></td>
    <td>${boardDTO.readcount}</td></tr>

</c:forEach>

</table>

<!-- 로그인을 하지 않으면 글쓰기 버튼이 보이지 않게 설정 -->
<c:if test="${!empty sessionScope.id }">
<div id="table_search">
<!-- location 자바스크립트 내장 객체 => 웹 브라우저 주소줄을 객체로 정의
     location 내장객체 멤버 변수 => href 변수 : 웹 브라우저 주소줄 내용을 저장하고 있는 변수
						  => href 변수 내용이 변경되어지면 웹 브라우저 주소도 변경 
						  location.href='${pageContext.request.contextPath}/board/write -->
<input type="button" value="글쓰기" class="btn" onclick="location.href='${pageContext.request.contextPath}/board/write'">
</div>
</c:if>

<div id="table_search">
<input type="text" name="search" class="input_box">
<input type="button" value="search" class="btn">
</div>
<div class="clear"></div>
<div id="page_control">
<c:if test="${pageDTO.startPage > pageDTO.pageBlock }">
<a href="${pageContext.request.contextPath}/board/list?pageNum=${pageDTO.startPage - pageDTO.pageBlock}">Prev</a>
</c:if>

<c:forEach var="i" begin="${pageDTO.startPage }" end="${pageDTO.endPage }" step="1">
<a href="${pageContext.request.contextPath}/board/list?pageNum=${i}">${i}</a>
</c:forEach>

<c:if test="${pageDTO.endPage < pageDTO.pageCount}">
<a href="${pageContext.request.contextPath}/board/list?pageNum=${pageDTO.startPage + pageDTO.pageBlock}">Next</a>
</c:if>

</div>
</article>
<!-- 게시판 -->
<!-- 본문들어가는 곳 -->
<div class="clear"></div>
<!-- 푸터들어가는 곳 -->
<jsp:include page="../inc/bottom.jsp" />
<!-- 푸터들어가는 곳 -->
</div>
</body>
</html>

 

content.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>center/content.jsp</title>
<link href="${pageContext.request.contextPath}/resources/css/default.css" rel="stylesheet" type="text/css">
<link href="${pageContext.request.contextPath}/resources/css/subpage.css" rel="stylesheet" type="text/css">
<!--[if lt IE 9]>
<script src="http://ie7-js.googlecode.com/svn/version/2.1(beta4)/IE9.js" type="text/javascript"></script>
<script src="http://ie7-js.googlecode.com/svn/version/2.1(beta4)/ie7-squish.js" type="text/javascript"></script>
<script src="http://html5shim.googlecode.com/svn/trunk/html5.js" type="text/javascript"></script>
<![endif]-->
<!--[if IE 6]>
 <script src="../script/DD_belatedPNG_0.0.8a.js"></script>
 <script>
   /* EXAMPLE */
   DD_belatedPNG.fix('#wrap');
   DD_belatedPNG.fix('#main_img');   

 </script>
 <![endif]-->
</head>
<body>
<div id="wrap">
<!-- 헤더들어가는 곳 -->
<jsp:include page="../inc/top.jsp" />
<!-- 헤더들어가는 곳 -->

<!-- 본문들어가는 곳 -->
<!-- 메인이미지 -->
<div id="sub_img_center"></div>
<!-- 메인이미지 -->

<!-- 왼쪽메뉴 -->
<nav id="sub_menu">
<ul>
<li><a href="#">Notice</a></li>
<li><a href="#">Public News</a></li>
<li><a href="#">Driver Download</a></li>
<li><a href="#">Service Policy</a></li>
</ul>
</nav>
<!-- 왼쪽메뉴 -->

<!-- 게시판 -->
<article>
<h1>Content Notice</h1>
<table id="notice">
<tr><td>글번호</td><td>${boardDTO.num}</td></tr>
<tr><td>글쓴이</td><td>${boardDTO.name}</td></tr>
<tr><td>조회수</td><td>${boardDTO.readcount}</td></tr>
<tr><td>작성일</td><td>${boardDTO.date}</td></tr>
<tr><td>글제목</td><td>${boardDTO.subject}</td></tr>
<tr><td>글내용</td><td>${boardDTO.content}</td></tr>
</table>

<div id="table_search">
<input type="button" value="글목록" class="btn" onclick="location.href='${pageContext.request.contextPath}/board/list'">
</div>

<div class="clear"></div>
</article>
<!-- 게시판 -->
<!-- 본문들어가는 곳 -->
<div class="clear"></div>
<!-- 푸터들어가는 곳 -->
<jsp:include page="../inc/bottom.jsp" />
<!-- 푸터들어가는 곳 -->
</div>
</body>
</html>

 

//BoardController

	@GetMapping("/content")
	public String content(BoardDTO boardDTO, Model model) {
		System.out.println("BoardController content()");
		System.out.println(boardDTO);
		//boardDTO 리턴할형 = boardService.getBoard(boardDTO) 메소드 호출
		boardDTO = boardService.getBoard(boardDTO);
		
		//model 저장
		model.addAttribute("boardDTO", boardDTO);
		// board/content.jsp 글 목록으로 주소변경없이 이동
		return "/center/content";
	}

 

//BoardService

	public BoardDTO getBoard(BoardDTO boardDTO) {
		System.out.println("BoardService getBoard()");
			
		return boardDAO.getBoard(boardDTO);
	}

 

//BoardDTO

	public BoardDTO getBoard(BoardDTO boardDTO) {
		System.out.println("BoardDAO getBoard()");
		return sqlSession.selectOne(namespace+".getBoard", boardDTO);
	}

 

//boardMapper

	<select id="getBoard" resultType="com.itwillbs.domain.BoardDTO">
		select *
		from board
		where num = #{num}
	</select>

 

 

조회수 처리

//BoardController
	
    @GetMapping("/content")
	public String content(BoardDTO boardDTO, Model model) {
		System.out.println("BoardController content()");
		System.out.println(boardDTO);
		//boardDTO 리턴할형 = boardService.getBoard(boardDTO) 메소드 호출
		boardDTO = boardService.getBoard(boardDTO);
		//조회수 증가
		boardService.updateReadcount(boardDTO);
		
		
		//model 저장
		model.addAttribute("boardDTO", boardDTO);
		// board/content.jsp 글 목록으로 주소변경없이 이동
		return "/center/content";
	}

 

//BoardService

	public void updateReadcount(BoardDTO boardDTO) {
		System.out.println("BoardService updateReadcount()");
		
		int readcount = boardDTO.getReadcount()+1;
		boardDTO.setReadcount(readcount);
		boardDAO.updateReadcount(boardDTO);
	}

 

 

//BoardDAO

	public void updateReadcount(BoardDTO boardDTO) {
		System.out.println("BoardDAO updateReadcount()");
		sqlSession.update(namespace+".updateReadcount", boardDTO);
		
	}

 

//boardMapper

	<update id="updateReadcount">
	update board
	set readcount = #{readcount}
	where num = #{num}
	</update>

 

글 수정, 글 삭제

content.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>    
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>center/content.jsp</title>
<link href="${pageContext.request.contextPath}/resources/css/default.css" rel="stylesheet" type="text/css">
<link href="${pageContext.request.contextPath}/resources/css/subpage.css" rel="stylesheet" type="text/css">
<!--[if lt IE 9]>
<script src="http://ie7-js.googlecode.com/svn/version/2.1(beta4)/IE9.js" type="text/javascript"></script>
<script src="http://ie7-js.googlecode.com/svn/version/2.1(beta4)/ie7-squish.js" type="text/javascript"></script>
<script src="http://html5shim.googlecode.com/svn/trunk/html5.js" type="text/javascript"></script>
<![endif]-->
<!--[if IE 6]>
 <script src="../script/DD_belatedPNG_0.0.8a.js"></script>
 <script>
   /* EXAMPLE */
   DD_belatedPNG.fix('#wrap');
   DD_belatedPNG.fix('#main_img');   

 </script>
 <![endif]-->
</head>
<body>
<div id="wrap">
<!-- 헤더들어가는 곳 -->
<jsp:include page="../inc/top.jsp" />
<!-- 헤더들어가는 곳 -->

<!-- 본문들어가는 곳 -->
<!-- 메인이미지 -->
<div id="sub_img_center"></div>
<!-- 메인이미지 -->

<!-- 왼쪽메뉴 -->
<nav id="sub_menu">
<ul>
<li><a href="#">Notice</a></li>
<li><a href="#">Public News</a></li>
<li><a href="#">Driver Download</a></li>
<li><a href="#">Service Policy</a></li>
</ul>
</nav>
<!-- 왼쪽메뉴 -->

<!-- 게시판 -->
<article>
<h1>Content Notice</h1>
<table id="notice">
<tr><td>글번호</td><td>${boardDTO.num}</td></tr>
<tr><td>글쓴이</td><td>${boardDTO.name}</td></tr>
<tr><td>조회수</td><td>${boardDTO.readcount}</td></tr>
<tr><td>작성일</td><td>${boardDTO.date}</td></tr>
<tr><td>글제목</td><td>${boardDTO.subject}</td></tr>
<tr><td>글내용</td><td>${boardDTO.content}</td></tr>
</table>

<div id="table_search">
<c:if test="${! empty sessionScope.id }">
	<c:if test="${sessionScope.id eq boardDTO.name }">
		<input type="button" value="글수정" class="btn" onclick="location.href='${pageContext.request.contextPath}/board/update$num=${boardDTO.num}'">
		<input type="button" value="글삭제" class="btn" onclick="location.href='${pageContext.request.contextPath}/board/delete$num=${boardDTO.num}'">
	</c:if>
</c:if>

<input type="button" value="글목록" class="btn" onclick="location.href='${pageContext.request.contextPath}/board/list'">

</div>

<div class="clear"></div>
</article>
<!-- 게시판 -->
<!-- 본문들어가는 곳 -->
<div class="clear"></div>
<!-- 푸터들어가는 곳 -->
<jsp:include page="../inc/bottom.jsp" />
<!-- 푸터들어가는 곳 -->
</div>
</body>
</html>

 

728x90