Spring
회원가입, 로그인, 게시판 백엔드 실습( 게시판 글쓰기 )
hojomu
2023. 4. 5. 15:35
게시판 글쓰기
: 게시글을 데이터베이스에 추가할 수 있는 기능을 만들 것이다.
이 때 로그인한 아이디에 대한 정보를 게시글에 남긴다.
1. Controller
// 게시판 글쓰기 데이터 저장
@RequestMapping(value="/write", method = RequestMethod.POST)
public String writePost(BoardVO board) {
System.out.println(board);
bs.write(board);
return "redirect:/board/list";
}
- BoardVO 객체에 게시판에 대한 정보를 담아서 데이터베이스에 저장할 것이다.
public class BoardVO {
private int board_no;
private String title;
private String contents;
private String id;
private String created_time;
private String updated_time;
private int likes;
private int counts;
필드에 대한 getter, setter
}
2. Service, ServiceImpl
public interface BoardService {
// 게시판 글쓰기
public void write(BoardVO board);
}
@Service
public class BoardServiceImpl implements BoardService{
@Autowired
BoardMapper bm;
// 글쓰기
public void write(BoardVO board) {
bm.write(board);
}
}
3. Mapper , Mapper.xml
public interface BoardMapper {
// 글쓰기
public void write(BoardVO board);
}
<?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="hjm.portfolio.mapper.BoardMapper">
<insert id="write">
<selectKey keyProperty="board_no" order="BEFORE" resultType="int">
select max(board_no)+1 board_no
from port_board
</selectKey>
insert into port_board(board_no, title, contents, id)
values(#{board_no}, #{title}, #{contents}, #{id})
</insert>
</mapper>
- selectKey 태그를 이용해 board_no 라는 변수에 현재 존재하는 게시글 중 가장 높은 board_no에 1을 더한 값을 저장한다. ( 따라서 새로운 게시글을 작성하면 board_no가 가장 높은 값으로 저장된다 )
4. jsp
<body>
<%
String id = (String)session.getAttribute("login");
%>
<h1>글쓰기</h1>
<form action="write" method="post">
제목 <input type="text" name="title"><br>
<textarea rows="40" cols="40" name="contents"></textarea>
<input type="hidden" name="id" value=<%= id %>>
<input type="submit" value="글쓰기">
</form>
</body>
- form 태그에 현재 session에 저장돼있는 id 값을 함께 제출하기 위해 (String)session.getAttribute("login") 을 사용했다.
** textarea에 기입한 내용이 데이터베이스에 저장될 때 개행이 저장되지 않는다. 이 해결 방법을 찾아보자