[스프링] READ - 글 보기


JSP파일 만들기


/board/read.jsp

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css">
<meta charset="UTF-8">
<title>read</title>
</head>
<body>
    <h2>Read Page</h2>

	<table class="table table-striped table-bordered border-primary">
		<tbody>
			<tr>
				<th>글번호</th>
				<td>${data.num}</td>
			</tr>
			<tr>
				<th>작성일</th>
				<td>
					<fmt:formatDate value="${data.date}" pattern="yyyy-MM-dd" />
				</td>
			</tr>
			<tr>
				<th>이름</th>
				<td>${data.uName}</td>
			</tr>
			<tr>
				<th>제목</th>
				<td>${data.subject}</td>
			</tr>
			<tr>
				<th>내용</th>
				<td>${data.content}</td>
			</tr>
		</tbody>
	</table>
    <button type="button" class="btn btn-outline-info"><a href="/board/list">돌아가기</a></button>
</body>
</html>



Controller


// read.jsp 페이지로 이동
@RequestMapping(value="/read", method = RequestMethod.GET)
public String getRead() {
    return "board/read";
}



mapper


<?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="com.springtest.mappers.board">

	<!-- 리스트 출력 -->
	<select id="list" resultType="com.springtest.domain.TestVO">
		select
	 		num, uName, subject, content, date
	 	from springtest
	</select>
	
	<!-- 게시글 등록 -->
	<insert id="create">
		insert into springtest
		(uName, subject, content, date)
		values
		(#{uName}, #{subject}, #{content}, NOW())
	</insert>
	
	<!-- 게시글 읽기 -->
	<select id="read" resultType="com.springtest.domain.TestVO">
		select
	 		num, uName, subject, content, date
	 	from springtest where num = #{num}
	</select>
</mapper>



DAO


  • DAO
package com.springtest.dao;

import java.util.List;

import com.springtest.domain.TestVO;

public interface testDAO {
	
	public List<TestVO> list();
	public void create(TestVO vo);
	public TestVO read(int num); // 이 부분!
}
  • DAOImpl
package com.springtest.dao;

import java.util.List;

import javax.inject.Inject;

import org.apache.ibatis.session.SqlSession;
import org.springframework.stereotype.Repository;

import com.springtest.domain.TestVO;

@Repository
public class testDAOImpl implements testDAO {

	
	@Inject
	private SqlSession sqlSession;
	
	private static String namespace = "com.springtest.mappers.board";
	
	// list
	@Override
	public List<TestVO> list() {
		return sqlSession.selectList(namespace + ".list");
	}

	// create
	@Override
	public void create(TestVO vo) {
		sqlSession.insert(namespace + ".create", vo);
	}

    // 이 부분!
	// read
	@Override
	public TestVO read(int num) {
		return sqlSession.selectOne(namespace + ".read", num);
	}

}



Service


  • Service
package com.springtest.service;

import java.util.List;

import com.springtest.domain.TestVO;

public interface testService {
	
	public List<TestVO> list();

	public void create(TestVO vo);
	
	public TestVO read(int num); // ☜
}
  • ServiceImpl
package com.springtest.service;

import java.util.List;

import javax.inject.Inject;

import org.springframework.stereotype.Service;

import com.springtest.dao.testDAO;
import com.springtest.domain.TestVO;
@Service
public class testServiceImpl implements testService {

	@Inject
	private testDAO dao;
	
	@Override
	public List<TestVO> list() {
		return dao.list();
	}
	
	@Override
	public void create(TestVO vo) {
		dao.create(vo);
	}

    // ☜
	@Override 
	public TestVO read(int num) {
		return dao.read(num);
	}
	
}



다시 Controller


package com.springtest.controller;

import java.util.List;

import javax.inject.Inject;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import com.springtest.domain.TestVO;
import com.springtest.service.testService;

@Controller
@RequestMapping("/board/*")
public class TestController {

	@Inject
	private testService service;
	
	// list.jsp
	@RequestMapping(value="/list", method = RequestMethod.GET)
	public String getList(Model model) throws Exception{
		List<TestVO> list = service.list();
		model.addAttribute("list", list);
		return "board/list";
	}
	
	// create.jsp 페이지로 이동
	@RequestMapping(value="/create", method = RequestMethod.GET)
	public String getCreate() throws Exception{
		return "board/create";
	}
	
	// create.jsp 게시물 작성하기
	@RequestMapping(value="/create", method = RequestMethod.POST)
	public String postCreate(TestVO vo) throws Exception{
		service.create(vo);
		return "redirect:list";
	}
	
	// read.jsp 페이지로 이동
	@RequestMapping(value="/read", method = RequestMethod.GET)
	public String getRead(Model model, int num) {
		TestVO data = service.read(num);
		model.addAttribute("data", data);
		return "board/read";
	}
}



서버 재실행


Categories:

Spring