반응형
1. home.jsp
메인 화면에서 게시물 작성하기를 링크해주겠습니다.
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<html>
<head>
<title>Home</title>
</head>
<body>
<h1>
Hello world!
</h1>
<P> The time on the server is ${serverTime}. </P>
<p><a href="/board/list">게시물 목록</a></p>
<p><a href="/board/write">게시물 작성</a>
</body>
</html>
2. 게시판 글 작성 화면 views/board/write.jsp
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>게시물 작성</title>
</head>
<body>
</body>
</html>
3.BoardController 클래스
package com.board.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.board.domain.BoardVO;
import com.board.service.BoardService;
@Controller
@RequestMapping("/board/*")
public class BoardController {
@Inject
BoardService service;
@RequestMapping(value = "/list", method = RequestMethod.GET)
public void getList(Model model) throws Exception {
List<BoardVO> list = null;
list = service.list();
model.addAttribute("list", list);
}
// 게시물 작성
@RequestMapping(value = "/write", method = RequestMethod.GET)
public void getWrite() throws Exception{
}
//게시물 작성
@RequestMapping(value = "/write", method = RequestMethod.POST)
public String postWrite(BoardVO vo) throws Exception{
service.write(vo);
return "redirect:/board/list";
}
}
4. 게시판 글 작성 화면 views/board/write.jsp
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>게시물 작성</title>
</head>
<body>
<form method="post">
<label>제목</label>
<input type="text" name="title" /><br />
<label>작성자</label>
<input type="text" name="writer" /><br />
<label>내용</label>
<textarea cols="50" rows="5" name="content"></textarea>
<button type="submit">작성</button>
</form>
</body>
</html>
5.boardMapper.xml에 insert문 삽입
<?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.board.mappers.board">
<!-- 게시물 목록
resultType은 쿼리를 실행한 뒤 결과가 있을 경우에 사용하며,
반대로 데이터를 넣을 때는 parameterType을 사용
-->
<select id="list" resultType="com.board.domain.BoardVO">
select
bno, title, content, writer, regDate, viewCnt
from tbl_board
</select>
<!-- 게시물 작성
데이터를 넣을 때는 parameterType을 사용
-->
<insert id="write" parameterType="com.board.domain.BoardVO">
insert into
tbl_board(title, content, writer)
values(#{title}, #{content}, #{writer})
</insert>
</mapper>
6. DAO에 게시물 등록 메서드 추가
BoardDAO인터페이스
package com.board.dao;
import java.util.List;
import com.board.domain.BoardVO;
public interface BoardDAO {
//게시물 목록
public List<BoardVO> list() throws Exception;
//게시물 작성
public void write(BoardVO vo) throws Exception;
}
BoardDAOImpl
package com.board.dao;
import java.util.List;
import javax.inject.Inject;
import org.apache.ibatis.session.SqlSession;
import org.springframework.stereotype.Repository;
import com.board.domain.BoardVO;
// DAO에 특화된 어노테이션. @Component 어노테이션을 써도 상관 없지만, DAO 클래스들에 @Repository 어노테이션을 사용함으로써
// @Component 어노테이션이 가진 특성과 함께, DAO의 메소드에서 발생할 수 있는 unchecked exception들을 스프링의 DataAccessException으로
// 처리할 수 있는 장점 또한 갖는다.
@Repository
public class BoardDAOImpl implements BoardDAO {
// name으로 DI를 가능케 한다. 자바에서 지원하는 어노테이션이며 프레임워크에 종속적이지 않아 상사용해도 좋다.
// 타입으로 연결한다.
@Inject
private SqlSession sql;
private static String namespace = "com.board.mappers.board";
//게시물 목록
@Override
public List<BoardVO> list() throws Exception {
// TODO Auto-generated method stub
return sql.selectList(namespace + ".list");
}
//게시물 작성
@Override
public void write(BoardVO vo) throws Exception {
sql.insert(namespace + ".write", vo);
}
}
7.
BoardService
package com.board.service;
import java.util.List;
import com.board.domain.BoardVO;
public interface BoardService {
//게시물 목록
public List<BoardVO> list() throws Exception;
//게시물 작성
public void write(BoardVO vo) throws Exception;
}
BoardServiceImpl
package com.board.service;
import java.util.List;
import javax.inject.Inject;
import org.springframework.stereotype.Service;
import com.board.dao.BoardDAO;
import com.board.domain.BoardVO;
@Service
public class BoardServiceImpl implements BoardService {
@Inject
private BoardDAO dao;
//게시물 리스트
@Override
public List<BoardVO> list() throws Exception {
// TODO Auto-generated method stub
return dao.list();
}
//게시물 작성
@Override
public void write(BoardVO vo) throws Exception {
dao.write(vo);
}
}
8. 실행하셔서 게시물 작성을 누르시면 게시물이 등록이 되고 출력이 되는 것을 알 수 있습니다.
반응형
'2020 > Basic Spring board' 카테고리의 다른 글
#7 스프링 게시판 만들기 (게시물 수정) (0) | 2020.06.11 |
---|---|
#6 스프링 게시판 만들기 (게시물 조회 구현) (0) | 2020.06.11 |
#4 스프링 게시판 만들기 (게시만 목록 페이지 구현) (1) | 2020.06.10 |
#3 기본 게시판 만들기 ( 스프링과 데이터베이스 연동) (1) | 2020.06.09 |
#2 게시판 데이터 베이스 준비 (0) | 2020.06.09 |