스프링부트 게시판 만들기 제8강 게시글 상세

  

스프링 부트 게시판 만들기

제8강 게시글 보기

 

게시글 목록에 이어서 게시글 상세화면 구현입니다.

오늘도 Controller에서 시작~

 

package com.soledot.board.boardarticle;

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.net.URLConnection;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.util.FileCopyUtils;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;

/**
 * @author soledot
 * @since 20191108
 * @version soledot
 * @description boardarticle Controller
 *
*/

@Controller
@RequestMapping("/boardarticle/*")
public class BoardarticleCtrl {

	private static final Logger logger = LoggerFactory.getLogger(BoardarticleCtrl.class);

	@Autowired BoardarticleSvc boardarticleSvc;


	//---* 보기
	@RequestMapping( "boardarticleview.sd" )
	public String view( @RequestParam Map<String, Object> param, ModelMap model ){

		try{
			boardarticleSvc.view( param, model );
		}catch( Exception e ){
			logger.error( e.toString(), e );
		}

		return "boardarticle/boardarticleview";
	}
	
}

 

http://localhost:8080/boardarticle/boardarticleview.sd 로 요청이 들어오면

BoardarticleSvcImpl의 view method로 넘겨주고 처리가 끝나면 boardarticleview.jsp로 결과 페이지가 출력됩니다.

 

package com.soledot.board.boardarticle;

import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;

/**
 * @author soledot
 * @since 20191108
 * @version soledot
 * @description boardarticle Service Interface
 *
*/

public interface BoardarticleSvc {

	public boolean view( Map<String, Object> param, ModelMap model )throws Exception;


}

 

interface BoardarticleSvc

 

package com.soledot.board.boardarticle;

import java.io.File;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.ui.ModelMap;
import org.springframework.web.multipart.MultipartFile;

/**
 * @author soledot
 * @since 20191108
 * @version soledot
 * @description boardarticle Service 구현 클래스
 *
*/

@Service("BoardarticleSvc")
public class BoardarticleSvcImpl implements BoardarticleSvc {

	private static final Logger logger = LoggerFactory.getLogger(BoardarticleSvcImpl.class);

	@Autowired HttpSession ss;

	@Autowired BoardarticleDao boardarticleDao;


	//---*fo 보기
	@Override
	public boolean view( Map<String, Object> param, ModelMap model ) throws Exception {

	    model.put("boardarticle", boardarticleDao.one( param ) );  //--- boardarticleDao의 one method에 param을 전달인자로 호출하고 결과를 model에 boardarticle로 담습니다.

		return true;
	}

}

 

BoardarticleSvc 의 구현 클래스 BoardarticleSvcImpl

마찬가지로 boardarticleDao의 one을 통해 Database에 Access하여 Database에 저장 된 Data를 가져오게 됩니다.

 

package com.soledot.board.boardarticle;

import java.util.List;
import java.util.Map;

/**
 * @author soledot
 * @since 20191108
 * @version soledot
 * @description boardarticle Dao Interface
 *
*/

public interface BoardarticleDao {

	//---*one row
	public Map<String, Object> one( Map<String, Object> param );

}

 

interface BoardarticleDao

 

package com.soledot.board.boardarticle;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.session.SqlSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

/**
 * @author soledot
 * @since 20191108
 * @version soledot
 * @description boardarticle Dao 구현 클래스
 *
*/

@Repository("BoardarticleDao")
public class BoardarticleDaoImpl implements BoardarticleDao {

	@Autowired private SqlSession sqlSession;

	//---*one row
	@Override
	public Map<String, Object> one( Map<String, Object> param ){
		return (Map<String, Object>)sqlSession.selectOne( "boardarticle.one", param );
	}

}

 

BoardarticleDao 구현 BoardarticleDaoImpl Class

 

<?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="boardarticle">

	<select id="one" parameterType="hashmap" resultType="hashmap">
		SELECT * FROM BOARDARTICLE
		<!-- 아래 parameter 있을 경우 where가 자동으로 삽입됨. -->
		<where>
			<!-- 조건이 하나일 경우에는 AND가 붙지 않고, 앞에 조건이 있을 경우에만 AND가 자동으로 삽입됨 -->
			<if test="null != seq and '' != seq">AND SEQ = #{seq}</if>
			<if test="null != title and '' != title">AND TITLE = #{title}</if>
			<if test="null != content and '' != content">AND CONTENT = #{content}</if>
		</where>
	</select>


</mapper>

 

boardarticle.xml 내용입니다.

 

<%@ 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 lang="ko">
<head>
	<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" type="text/css" />
	<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
</head>
<body>
	<div class="container">
		<form action="boardarticleview.sd"  id="frm" name="frm" method="post">
	
			<table class="table table-bordered" >
				<colgroup>
					<col style="width: 20%;">
					<col style="width: 80%">
				</colgroup>
				<tr>
					<th>고유번호</th>
					<td><c:out value='${boardarticle.seq}' /></td>
				</tr>
				<tr>
					<th>제목</th>
					<td><c:out value='${boardarticle.title}' /></td>
				</tr>
				<tr>
					<th>내용</th>
					<td><c:out value='${boardarticle.content}' /></td>
				</tr>
				<tr>
					<th>첨부파일</th>
					<td>
                        <!-- 첨부파일 다운로드를 위한 링크삽입 -->
						<a href="/boardarticle/filedown.sd?seq=${boardarticle.seq}">${boardarticle.filename}</a>
					</td>
				</tr>
				<tr>
					<th>조회수</th>
					<td><c:out value='${boardarticle.readcnt}' /></td>
				</tr>
				<tr>
					<th>코멘트수</th>
					<td><c:out value='${boardarticle.commentcnt}' /></td>
				</tr>
				<tr>
					<th>추천수</th>
					<td><c:out value='${boardarticle.recommendcnt}' /></td>
				</tr>
				<tr>
					<th>그룹번호</th>
					<td><c:out value='${boardarticle.groupnum}' /></td>
				</tr>
				<tr>
					<th>레벨번호</th>
					<td><c:out value='${boardarticle.levelnum}' /></td>
				</tr>
				<tr>
					<th>스텝번호</th>
					<td><c:out value='${boardarticle.stepnum}' /></td>
				</tr>
				<tr>
					<th>등록IP</th>
					<td><c:out value='${boardarticle.inip}' /></td>
				</tr>
				<tr>
					<th>등록일</th>
					<td>${ boardarticle.indate }</td>
				</tr>
			</table>
			<div class="ln_solid"></div>
	
			<div class="form-group">
				<div class="col-sm-12">
					<a class="btn btn-info" href="boardarticleadd.sd" role="button" title="등록"><i class="fa fa-plus"></i> 등록</a>
					<a class="btn btn-primary" href="boardarticlelist.sd" role="button" title="리스트"><i class="fa fa-list-ul"></i> 리스트</a>
				</div>
			</div>
	
		</form>
	</div>

</body>
</html>

 

boardarticleview.jsp 게시글 상세화면 소스 입니다.

http://localhost:8080/boardarticle/boardarticlelist.sd로 접속하여

 

 

제목을 클릭하시면 아래와 같은 상세 페이지가 출력됩니다.

 

공유하기:

스프링부트 카테고리 글 :

0 Comments

Comment