전자정부프레임워크
[게시판만들기] 게시판목록 클릭 시 상세보기
도하루박
2024. 3. 6. 10:09
반응형
게시글 클릭 시 상세보기 페이지 만들기
1. select SQL 작성하기
BbsSQL.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="BbsDAO">
<select id="selectBbsList" resultType="bbsVO">
SELECT *
FROM BOARD
</select>
<insert id="insertBbs">
INSERT INTO board
(TITLE, CONTENT, REG_DATE, MOD_DATE)
VALUES(#{title}, #{content}, NOW(), NOW())
</insert>
<select id="selectBbs" resultType="bbsVO">
SELECT *
FROM BOARD
WHERE SEQ = #{seq}
</select>
</mapper>
<select id="selectBbs" resultType="bbsVO">
SELECT *
FROM BOARD
WHERE SEQ = #{seq}
</select>
2. select DAO, Service, SerivceImpl 작성하기
BbsDAO
package haru.com.bbs.service.impl;
import java.util.List;
import org.springframework.stereotype.Repository;
import egovframework.rte.psl.dataaccess.EgovAbstractMapper;
import haru.com.bbs.service.BbsVO;
@Repository("bbsDAO")
public class BbsDAO extends EgovAbstractMapper {
public List<?> selectList(BbsVO vo) throws Exception {
return selectList("selectBbsList", vo);
}
public void insertBbs(BbsVO vo) throws Exception {
insert("insertBbs", vo);
}
public BbsVO selectBbs(BbsVO vo) throws Exception {
return selectOne("selectBbs", vo);
}
}
public BbsVO selectBbs(BbsVO vo) throws Exception {
return selectOne("selectBbs", vo);
}
BbsService
package haru.com.bbs.service;
import java.util.List;
public interface BbsService {
List<?> selectList(BbsVO vo) throws Exception;
void insertBbs(BbsVO vo) throws Exception;
BbsVO selectBbs(BbsVO vo) throws Exception;
}
BbsVO selectBbs(BbsVO vo) throws Exception;
BbsServiceImpl
package haru.com.bbs.service.impl;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import haru.com.bbs.service.BbsService;
import haru.com.bbs.service.BbsVO;
@Service("bbsService")
public class BbsServiceImpl implements BbsService {
@Resource(name = "bbsDAO")
private BbsDAO bbsDAO;
public List<?> selectList(BbsVO vo) throws Exception {
return bbsDAO.selectList(vo);
}
@Override
public void insertBbs(BbsVO vo) throws Exception {
bbsDAO.insertBbs(vo);
}
@Override
public BbsVO selectBbs(BbsVO vo) throws Exception {
return bbsDAO.selectBbs(vo);
}
}
@Override
public BbsVO selectBbs(BbsVO vo) throws Exception {
return bbsDAO.selectBbs(vo);
}
BbsController
//게시글조회
@RequestMapping(value = "/selectBbs.do")
public String selectBbs(@RequestParam("seq") int seq, BbsVO vo, Model model) throws Exception {
vo.setSeq(seq);
vo = bbsService.selectBbs(vo);
model.addAttribute("bbsVO", vo);
return "/bbs/bbsInsert";
}
3. 목록에서 상세보기 이동페이지
게시글 목록에서 내용을 클릭 하면 해당글의 상세보기 페이지로 이동할 수 있게 하였다.
해당글의 pk 값인 seq값으로 게시글을 조회한다.
bbsList.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="ui" uri="http://egovframework.gov/ctl/ui"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<script type="text/javascript" >
function fn_view (seq) {
var f= document.updateForm;
f.action = "selectBbs.do";
console.log("seq : " + seq);
f.seq.value = seq;
f.submit();
}
</script>
<table>
<caption>게시판테이블</caption>
<thead>
<tr>
<th>번호</th>
<th>제목</th>
<th>내용</th>
<th>등록일</th>
</tr>
</thead>
<tbody>
<c:forEach var="rs" items="${resultList}" varStatus="status">
<tr>
<td>${rs.seq}</td>
<td>${rs.title}</td>
<td><a href="javascript:fn_view('${rs.seq}')">${rs.content}</a></td>
<td>${rs.regDate}</td>
</tr>
</c:forEach>
</tbody>
</table>
<div>
<button><a href="/bbsForm.do">게시글 등록</a></button>
</div>
<form id="updateForm" name="updateForm" >
<input type="hidden" name="seq" value=""/>
</form>
</body>
</html>
상세보기페이지는 등록페이지/수정페이지를 구분하지 않고 등록페이지하나만으로 관리한다.
등록도하고 수정도 가능한 페이지를 하나로 관리
bbsInsert
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form id="insertForm" name="insertForm" method="post" action="/insertBbs.do">
<label>제목</label>
<input name="title" value="${bbsVO.title}"/><br/>
<label>내용</label>
<textarea name="content">${bbsVO.content}</textarea><br/>
<input type="submit" value="등록"/>
</form>
</body>
</html>
아래처럼 번호 12번의 게시글을 클릭하면 해당 게시글의 상세를 불러 올 수 있다.
반응형