하루의 일상💜

[게시판만들기] 게시판목록 클릭 시 상세보기 본문

전자정부프레임워크

[게시판만들기] 게시판목록 클릭 시 상세보기

도하루박 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번의 게시글을 클릭하면 해당 게시글의 상세를 불러 올 수 있다.

반응형