ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 회원가입, 로그인, 게시판 백엔드 실습( 게시판 글쓰기 )
    Spring 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에 기입한 내용이 데이터베이스에 저장될 때 개행이 저장되지 않는다. 이 해결 방법을 찾아보자

     

Designed by Tistory.