728x90
게시판
top.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<header>
<!-- 로그인 유무 표시값 세션에서 가져와서 => 있으면 로그인이 됨, 없으면 로그인이 되지 않음 -->
<!-- 로그인 되지 않았을 때 나타내야할 정보(login, join) -->
<c:if test="${empty sessionScope.id }">
<div id="login"><a href="${pageContext.request.contextPath}/member/login">login</a> | <a href="${pageContext.request.contextPath}/member/insert">join</a></div>
</c:if>
<!-- 로그인 되었을 때 나타나야할 정보(logout, update) -->
<c:if test="${!empty sessionScope.id }">
<div id="login">${sessionScope.id}님 | <a href="${pageContext.request.contextPath}/member/logout">logout</a> | <a href="${pageContext.request.contextPath}/member/update">update</a></div>
</c:if>
<div class="clear"></div>
<!-- 로고들어가는 곳 -->
<div id="logo"><img src="${pageContext.request.contextPath}/resources/images/logo.gif" width="265" height="62" alt="Fun Web"></div>
<!-- 로고들어가는 곳 -->
<nav id="top_menu">
<ul>
<li><a href="${pageContext.request.contextPath}/member/main">HOME</a></li>
<li><a href="../company/welcome.html">COMPANY</a></li>
<li><a href="#">SOLUTIONS</a></li>
<li><a href="${pageContext.request.contextPath}/board/list">CUSTOMER CENTER</a></li>
<li><a href="#">CONTACT US</a></li>
</ul>
</nav>
</header>
package com.itwillbs.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping("/board/*")
public class BoardController {
@GetMapping("/list")
public String list() {
System.out.println("BoardController list()");
// 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" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</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>
<tr><td>15</td><td class="left">Vivanus viveer portitor commodo.</td>
<td>Host Admin</td><td>2012.11.06</td><td>15</td></tr>
<tr><td>14</td><td class="left">Vivanus viveer portitor commodo.</td>
<td>Host Admin</td><td>2012.11.06</td><td>15</td></tr>
<tr><td>13</td><td class="left">Vivanus viveer portitor commodo.</td>
<td>Host Admin</td><td>2012.11.06</td><td>15</td></tr>
<tr><td>12</td><td class="left">Vivanus viveer portitor commodo.</td>
<td>Host Admin</td><td>2012.11.06</td><td>15</td></tr>
<tr><td>11</td><td class="left">Vivanus viveer portitor commodo.</td>
<td>Host Admin</td><td>2012.11.06</td><td>15</td></tr>
<tr><td>10</td><td class="left">Vivanus viveer portitor commodo.</td>
<td>Host Admin</td><td>2012.11.06</td><td>15</td></tr>
<tr><td>9</td><td class="left">Vivanus viveer portitor commodo.</td>
<td>Host Admin</td><td>2012.11.06</td><td>15</td></tr>
<tr><td>8</td><td class="left">Vivanus viveer portitor commodo.</td>
<td>Host Admin</td><td>2012.11.06</td><td>15</td></tr>
<tr><td>7</td><td class="left">Vivanus viveer portitor commodo.</td>
<td>Host Admin</td><td>2012.11.06</td><td>15</td></tr>
<tr><td>6</td><td class="left">Vivanus viveer portitor commodo.</td>
<td>Host Admin</td><td>2012.11.06</td><td>15</td></tr>
<tr><td>5</td><td class="left">Vivanus viveer portitor commodo.</td>
<td>Host Admin</td><td>2012.11.06</td><td>15</td></tr>
<tr><td>4</td><td class="left">Vivanus viveer portitor commodo.</td>
<td>Host Admin</td><td>2012.11.06</td><td>15</td></tr>
<tr><td>3</td><td class="left">Vivanus viveer portitor commodo.</td>
<td>Host Admin</td><td>2012.11.06</td><td>15</td></tr>
<tr><td>2</td><td class="left">Vivanus viveer portitor commodo.</td>
<td>Host Admin</td><td>2012.11.06</td><td>15</td></tr>
<tr><td>1</td><td class="left">Vivanus viveer portitor commodo.</td>
<td>Host Admin</td><td>2012.11.06</td><td>15</td></tr>
</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>
write.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</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>Write Notice</h1>
<form action="${pageContext.request.contextPath}/board/writePro" method="post">
<table id="notice">
<!-- 글쓴이 : 로그인 값 -->
<tr><td>글쓴이</td><td><input type="text" name="name" value="${sessionScope.id}" readonly></td></tr>
<!-- input name, value에 값을 넣어줘야 서버로 넘어감 -->
<tr><td>글제목</td><td><input type="text" name="subject" required></td></tr>
<tr><td>글내용</td><td><textarea name="content" rows="10" cols="20"></textarea></td></tr>
</table>
<div id="table_search">
<!-- location 자바스크립트 내장 객체 => 웹 브라우저 주소줄을 객체로 정의
location 내장객체 멤버 변수 => href 변수 : 웹 브라우저 주소줄 내용을 저장하고 있는 변수
=> href 변수 내용이 변경되어지면 웹 브라우저 주소도 변경
location.href='${pageContext.request.contextPath}/board/write -->
<input type="submit" value="글쓰기" class="btn">
<input type="button" value="글목록" class="btn" onclick="location.href='${pageContext.request.contextPath}/board/list'">
</div>
</form>
<div class="clear"></div>
</article>
<!-- 게시판 -->
<!-- 본문들어가는 곳 -->
<div class="clear"></div>
<!-- 푸터들어가는 곳 -->
<jsp:include page="../inc/bottom.jsp" />
<!-- 푸터들어가는 곳 -->
</div>
</body>
</html>
package com.itwillbs.controller;
import javax.inject.Inject;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import com.itwillbs.domain.BoardDTO;
import com.itwillbs.service.BoardService;
@Controller
@RequestMapping("/board/*")
public class BoardController {
// BoardService 만들고 객체 생성 => 자동으로 객체생성 주입
@Inject
private BoardService boardService;
@GetMapping("/list")
public String list() {
System.out.println("BoardController list()");
// center/notice.jsp 주소변경없이 이동
return "center/notice";
}
// get 방식 /board/write 주소 매핑
// center/write.jsp 주소변경없이 이동
@GetMapping("/write")
public String write() {
System.out.println("BoardController write()");
return "center/write";
}
// post방식 /board/wrtiePro 주소 매핑
// BoardDTO boardDTO 전달받으면 자동으로 request에 담긴 파라미터 값이 저장
// insertBoard(boardDTO) 메소드 호출
// /board/list 글 목록으로 주소 변경하면서 이동
@PostMapping("/writePro")
public String writePro(BoardDTO boardDTO) {
System.out.println("BoardController writePro()");
System.out.println(boardDTO);
boardService.insertBoard(boardDTO);
return "redirect:/board/list";
}
}
package com.itwillbs.service;
import java.sql.Time;
import java.sql.Timestamp;
import javax.inject.Inject;
import org.springframework.stereotype.Service;
import com.itwillbs.dao.BoardDAO;
import com.itwillbs.domain.BoardDTO;
@Service
public class BoardService {
//BoardDAO 객체생성 주입
@Inject
private BoardDAO boardDAO;
public void insertBoard(BoardDTO boardDTO) {
System.out.println("BoardService insertBoard()");
//boardDTO에 담긴 값 : name=park1, subject=제목, content=내용
//num, readcount, date를 처리 => boardDTO 저장
//num
boardDTO.setNum(boardDAO.getMaxNum()+1);
//readcount
boardDTO.setReadcount(0);
//date
boardDTO.setDate(new Timestamp(System.currentTimeMillis()));
boardDAO.insertBoard(boardDTO);
}
}
package com.itwillbs.dao;
import javax.inject.Inject;
import org.apache.ibatis.session.SqlSession;
import org.springframework.stereotype.Repository;
import com.itwillbs.domain.BoardDTO;
@Repository
public class BoardDAO {
//마이바티스(SqlSession) 객체생성 주입
@Inject
private SqlSession sqlSession;
private static final String namespace = "com.itwillbs.mappers.boardMapper";
public void insertBoard(BoardDTO boardDTO) {
System.out.println("BoardDAO insertBoard()");
System.out.println("BoardDTO : " + boardDTO);
sqlSession.insert(namespace+".insertBoard",boardDTO);
}
public int getMaxNum() {
System.out.println("BoardDAO getMaxNum()");
return sqlSession.selectOne(namespace+".getMaxNum");
}
}
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.itwillbs.mappers.boardMapper">
<insert id="insertBoard">
insert into board(num, name, subject, content, readcount, date)
values (#{num},#{name}, #{subject}, #{content}, #{readcount}, #{date})
</insert>
<select id="getMaxNum" resultType="java.lang.Integer">
select max(num) from board
</select>
</mapper>
글 잘라서 가져오기(페이지 처리)
package com.itwillbs.controller;
import java.util.List;
import javax.inject.Inject;
import javax.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import com.itwillbs.domain.BoardDTO;
import com.itwillbs.domain.PageDTO;
import com.itwillbs.service.BoardService;
@Controller
@RequestMapping("/board/*")
public class BoardController {
// BoardService 만들고 객체 생성 => 자동으로 객체생성 주입
@Inject
private BoardService boardService;
@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);
model.addAttribute("boardList", boardList);
// center/notice.jsp 주소변경없이 이동
return "center/notice";
}
// get 방식 /board/write 주소 매핑
// center/write.jsp 주소변경없이 이동
@GetMapping("/write")
public String write() {
System.out.println("BoardController write()");
return "center/write";
}
// post방식 /board/wrtiePro 주소 매핑
// BoardDTO boardDTO 전달받으면 자동으로 request에 담긴 파라미터 값이 저장
// insertBoard(boardDTO) 메소드 호출
// /board/list 글 목록으로 주소 변경하면서 이동
@PostMapping("/writePro")
public String writePro(BoardDTO boardDTO) {
System.out.println("BoardController writePro()");
System.out.println(boardDTO);
boardService.insertBoard(boardDTO);
return "redirect:/board/list";
}
}
package com.itwillbs.service;
import java.sql.Time;
import java.sql.Timestamp;
import java.util.List;
import javax.inject.Inject;
import org.springframework.stereotype.Service;
import com.itwillbs.dao.BoardDAO;
import com.itwillbs.domain.BoardDTO;
import com.itwillbs.domain.PageDTO;
@Service
public class BoardService {
//BoardDAO 객체생성 주입
@Inject
private BoardDAO boardDAO;
public void insertBoard(BoardDTO boardDTO) {
System.out.println("BoardService insertBoard()");
//boardDTO에 담긴 값 : name=park1, subject=제목, content=내용
//num, readcount, date를 처리 => boardDTO 저장
//num
boardDTO.setNum(boardDAO.getMaxNum()+1);
//readcount
boardDTO.setReadcount(0);
//date
boardDTO.setDate(new Timestamp(System.currentTimeMillis()));
boardDAO.insertBoard(boardDTO);
}
public List<BoardDTO> getBoardList(PageDTO pageDTO) {
System.out.println("BoardService getBoardList()");
//시작하는 행 번호 구하기 (currentPage, pageSize를 이용해서)
int currentPage = pageDTO.getCurrentPage();
int pageSize = pageDTO.getPageSize();
int startRow = (currentPage - 1) * pageSize + 1;
//끝나는 행 번호 구하기
int endRow = startRow + pageSize - 1;
//pageDTO에 저장
//boardMapper => limit(한계까지 자르기) 시작행 - 1, 개수
pageDTO.setStartRow(startRow - 1);
pageDTO.setEndRow(endRow);
return boardDAO.getBoardList(pageDTO);
}
}
package com.itwillbs.dao;
import java.util.List;
import javax.inject.Inject;
import org.apache.ibatis.session.SqlSession;
import org.springframework.stereotype.Repository;
import com.itwillbs.domain.BoardDTO;
import com.itwillbs.domain.PageDTO;
@Repository
public class BoardDAO {
//마이바티스(SqlSession) 객체생성 주입
@Inject
private SqlSession sqlSession;
private static final String namespace = "com.itwillbs.mappers.boardMapper";
public void insertBoard(BoardDTO boardDTO) {
System.out.println("BoardDAO insertBoard()");
System.out.println("BoardDTO : " + boardDTO);
sqlSession.insert(namespace+".insertBoard",boardDTO);
}
public int getMaxNum() {
System.out.println("BoardDAO getMaxNum()");
return sqlSession.selectOne(namespace+".getMaxNum");
}
public List<BoardDTO> getBoardList(PageDTO pageDTO) {
System.out.println("BoardDAO getBoardList()");
System.out.println(pageDTO);
return sqlSession.selectList(namespace+".getBoardList", pageDTO);
}
}
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.itwillbs.mappers.boardMapper">
<insert id="insertBoard">
insert into board(num, name, subject, content, readcount, date)
values (#{num},#{name}, #{subject}, #{content}, #{readcount}, #{date})
</insert>
<select id="getMaxNum" resultType="java.lang.Integer">
select max(num) from board
</select>
<select id="getBoardList" resultType="com.itwillbs.domain.BoardDTO">
select * from board
order by num desc
limit #{startRow}, #{pageSize}
<!-- where 시작행 - 1, 개수 db에서 -1을 할 수 없기 때문에 BoardService에서 작업-->
</select>
</mapper>
package com.itwillbs.service;
import java.sql.Time;
import java.sql.Timestamp;
import java.util.List;
import javax.inject.Inject;
import org.springframework.stereotype.Service;
import com.itwillbs.dao.BoardDAO;
import com.itwillbs.domain.BoardDTO;
import com.itwillbs.domain.PageDTO;
@Service
public class BoardService {
//BoardDAO 객체생성 주입
@Inject
private BoardDAO boardDAO;
public void insertBoard(BoardDTO boardDTO) {
System.out.println("BoardService insertBoard()");
//boardDTO에 담긴 값 : name=park1, subject=제목, content=내용
//num, readcount, date를 처리 => boardDTO 저장
//num
boardDTO.setNum(boardDAO.getMaxNum()+1);
//readcount
boardDTO.setReadcount(0);
//date
boardDTO.setDate(new Timestamp(System.currentTimeMillis()));
boardDAO.insertBoard(boardDTO);
}
public List<BoardDTO> getBoardList(PageDTO pageDTO) {
System.out.println("BoardService getBoardList()");
//시작하는 행 번호 구하기 (currentPage, pageSize를 이용해서)
int currentPage = pageDTO.getCurrentPage();
int pageSize = pageDTO.getPageSize();
int startRow = (currentPage - 1) * pageSize + 1;
//끝나는 행 번호 구하기
int endRow = startRow + pageSize - 1;
//pageDTO에 저장
//boardMapper => limit(한계까지 자르기) 시작행 - 1, 개수
pageDTO.setStartRow(startRow - 1);
pageDTO.setEndRow(endRow);
return boardDAO.getBoardList(pageDTO);
}
}
728x90
'KDT > WEB' 카테고리의 다른 글
240215 WEB - 글 수정, 삭제, 파일 업로드 1 (0) | 2024.02.15 |
---|---|
240213 WEB(펀웹5) (0) | 2024.02.13 |
240206 WEB(펍웹3, GitHub) (0) | 2024.02.06 |
240205 WEB(펀웹2) (0) | 2024.02.05 |
240201 WEB(조회, 펀웹1) (0) | 2024.02.01 |