write.jsp 생성
WEB-INF에 있는 파일은 바로 접근하지 못하고
컨트롤러를 사용해서 접근한다.
BoardController
// 게시물 작성
@GetMapping("/write")
public void getWrite() throws Exception{
}
home.jsp페이지에도
write페이지로 넘어갈 수 있는 링크를 추가해준다.
write.jsp에 form 추가한다.
<%@ 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><br />
<button type="submit">작성</button>
</form>
</body>
</html>
여기서 주의해야할 부분은, 입력 엘리먼트인 <input> 과 <textarea>의 이름(name) 속성의 값이 BoardVO와 동일해야한다는것 입니다.
동일하지 않으면 전송을할 수 없는건 아니지만, 별도로 작업을 해주어야하기 때문에 VO(Value Object)를 만든 의미가 없습니다. 프론트단에서 전송하는 데이터 타입을 VO화 시키고, 백단인 컨트롤러에서도 같은 VO타입으로 받도록 해주면 알아서 데이터가 들어가기 때문에 편리합니다.
https://blog.naver.com/drv982/223219299723
DB 연결을 위한 쿼리문을 작성하기위해
boardMapper.xml파일에서 작성한다.
<!-- 게시글 작성 -->
<insert id="write" parameterType="com.board.domain.BoardVO" >
INSERT INTO
tbl_board(title, content, writer)
VALUES(#{title},#{content},#{writer})
</insert>
BoardDAO
package com.board.dao;
import java.util.List;
import com.board.domain.BoardVO;
public interface BoardDAO {
// 게시글 목록
//에러 발생 시 호출한 곳에서 에러를 해결하기 위해 Exception
public List<BoardVO> list() throws Exception;
//게시글 작성
public void write(BoardVO vo) throws Exception;
}
위와 같이 작성하면
BoardDAOImple로 왔을 때 오류가 뜸
추가하면
자동 생성됨.
package com.board.dao;
import java.util.List;
import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import com.board.domain.BoardVO;
@Repository
public class BoardDAOImple implements BoardDAO{
@Autowired //Inject 사용해도됨
private SqlSessionTemplate sqlTemplate;
// 게시글 목록
@Override
public List<BoardVO> list() throws Exception {
//tb1_board의 모든 게시글을 가져옴
return sqlTemplate.selectList("board.list"); //namespace + id
}
// 게시글 입력 -> 파라미터가 들어가야함
@Override
public void write(BoardVO vo) throws Exception {
sqlTemplate.insert("board.write", vo);
}
}
Write에는 파라미터가 입력되어야함
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;
}
BoardServiceImple 에서도
추상메서드 자동 생성
// 게시물 작성
@Override
public void write(BoardVO vo) throws Exception {
boardDAO.write(vo);
}
BoardController
postMapping 추가
// 게시물 작성
@GetMapping("/write")
public void getWrite() throws Exception{
}
// 게시물 작성
@PostMapping("/write")
public String postWrite(BoardVO vo) throws Exception{
boardService.write(vo);
return "redirect:/board/list";
}
테스트
'BACKEND > Spring' 카테고리의 다른 글
게시판 만들기 - modify.jsp(수정 페이지) 및 DAO,Service, Controller (1) | 2023.10.23 |
---|---|
게시판 만들기 - view.jsp(게시글 조회) 및 DAO, Service, Controller (1) | 2023.10.23 |
게시판 만들기 - mapper만들어서, DAO와 Service,Controller연결 (0) | 2023.10.23 |
게시판 만들기 - list.jsp 목록 페이지 및 BoardController (0) | 2023.10.23 |
게시판 만들기 - mapper 폴더 내에 sql문 작성할 파일 만들기 (0) | 2023.10.23 |