본문 바로가기

Java, Spring/09일

9일차 5 - 게시판 글쓰기, 글보기 구현

이제 ‘글쓰기’ 해보자.

1. dispatcher-servlet.properties 에 BoardInsert.do추가

#로그인 폼
/Login.do=controller.Login

#로그인 확인
/LoginAction.do=controller.LoginAction

#게시판 리스트
/BoardList.do=controller.BoardList

#게시판 글쓰기 폼
/BoardInsert.do=controller.BoardInsert

2. action class만들어 (BoardInsert : 여기서는 입력폼으로 이동해야 하는데 뿌려주거나 데이터 넘겨줄 일은 없지.)

package controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class BoardInsert extends AbstractController{

	@Override
	public ModelAndView handleRequestInternal(HttpServletRequest request,
			HttpServletResponse response) {

		ModelAndView mav = new ModelAndView();
		mav.setViewName("/WEB-INF/view/insert.jsp");
		
		return mav;
	}	
}

3.view 만들어야지(insert.jsp)

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
		"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="BoardInsertAction.do" method="post">
<table>
<tr>	
	<th>제목</th>
	<td><input type="text" name = "title" /></td>
</tr>
<tr>	
	<th>이름</th>
	<td><input type="text" name = "name" /></td>
</tr>
<tr>	
	<th>비밀번호</th>
	<td><input type="password" name = "password" /></td>
</tr>
<tr>	
	<th>내용</th>
	<td><textarea cols="50" rows="5" name = "content" /></textarea></td>
</tr>
<tr>
	<td colspan="2" aligh="center">
		<input type="submit" value = "작성완료" /></td>
	</td>
</tr>
</table>
</form>
</body>
</html>

 

 

 

 

 

이제 내용 입력 후 작성완료를 클릭하면 BoardInsertAction.do가 실행되어 DB에 데이터를 넣고 BoardList보여주면 되겠지.

1. dispatcher-servlet.properties 에 BoardInsertAction.do추가

#로그인 폼
/Login.do=controller.Login

#로그인 확인
/LoginAction.do=controller.LoginAction

#게시판 리스트
/BoardList.do=controller.BoardList

#게시판 < 폼
/BoardInsert.do=controller.BoardInsert

#게시판 < 데이터를 DB에 저장
/BoardInsertAction.do=controller.BoardInsertAction

2. action class만들어 (BoardInsertAction : 여기서는 입력폼으로 이동해야 하는데 뿌려주거나 데이터 넘겨줄 일은 없지.)
package controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import board.model.BoardDao;
import board.model.BoardDto;

public class BoardInsertAction extends AbstractController {

	@Override
	public ModelAndView handleRequestInternal(HttpServletRequest request,
			HttpServletResponse response) {		
		
		String title = request.getParameter("title");
		String name = request.getParameter("name");
		String password = request.getParameter("password");
		String content = request.getParameter("content");
		
		BoardDto boardDto = new BoardDto();
		
		boardDto.setTitle(title);
		boardDto.setName(name);
		boardDto.setPassword(password);
		boardDto.setContent(content);

		BoardDao boardDao = new BoardDao();
		boardDao.insertBoard(boardDto);
		
		ModelAndView mav = new ModelAndView();	
			
		mav.setViewName("BoardList.do");
		
		return mav;
	}
}

		ModelAndView mav = new ModelAndView();
		
		mav.setViewName("BoardList.do");
		mav.setRedirect(true);
		
		return mav;

 

3.글이 입력 성공/실패 뿌려주고 (기존의 result.jsp쓰면돼) 리스트 보여주게 바꿔보자.

package controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import board.model.BoardDao;
import board.model.BoardDto;

public class BoardInsertAction extends AbstractController {

	@Override
	public ModelAndView handleRequestInternal(HttpServletRequest request,
			HttpServletResponse response) {		
		
		String title = request.getParameter("title");
		String name = request.getParameter("name");
		String password = request.getParameter("password");
		String content = request.getParameter("content");
		
		BoardDto boardDto = new BoardDto();
		
		boardDto.setTitle(title);
		boardDto.setName(name);
		boardDto.setPassword(password);
		boardDto.setContent(content);

		BoardDao boardDao = new BoardDao();
		boolean result = boardDao.insertBoard(boardDto);
		
		ModelAndView mav = new ModelAndView();
		
		mav.setViewName("/WEB-INF/view/result.jsp");
		if (result == true) {	//입력성공
			mav.addObject("msg", "글이 등록되었습니다.");
			mav.addObject("url", "BoardList.do");
		} else {				//일력실패
			mav.addObject("msg", "< 실패");
			mav.addObject("url", "javascript:history.back()");			
		}
		
		return mav;
	}
}

 

글쓰기까지 완료..

 

 

글보기도 해보자..

우선 BoardList에서 제목 클릭하면 BoardView.do 호출하게 하고

	<c:forEach items="${list}" var="boardDto">
	<tr>
		<td>${boardDto.seq}</td>
		<td><a href="BoardView.do?seq=${boardDto.seq}">${boardDto.title}</a></td>
		<td>${boardDto.name}</td>
		<td align="center">${boardDto.writeday}</td>
		<td align="right">${boardDto.readcount}</td>
	</tr>
	</c:forEach>

1. dispatcher-servlet.properties 에 BoardView.do추가

#로그인 폼
/Login.do=controller.Login

#로그인 확인
/LoginAction.do=controller.LoginAction

#게시판 리스트
/BoardList.do=controller.BoardList

#게시판 < 폼
/BoardInsert.do=controller.BoardInsert

#게시판 < 데이터를 DB에 저장
/BoardInsertAction.do=controller.BoardInsertAction

#게시판 상세보기	
/BoardView.do=controller.BoardView

2. action class만들어 (BoardView : seq가지고 상세내용받아서 ModelAndView로 넘겨.)
package controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import board.model.BoardDao;
import board.model.BoardDto;

public class BoardView extends AbstractController {

	@Override
	public ModelAndView handleRequestInternal(HttpServletRequest request,
			HttpServletResponse response) {
		
		int seq = Integer.parseInt(request.getParameter("seq"));
		
		BoardDao boardDao = new BoardDao();
		BoardDto boardDto = new BoardDto();
		
		boardDto = boardDao.getView(seq);
		
		ModelAndView mav = new ModelAndView();
		mav.setViewName("WEB-INF/view/content.jsp");
		mav.addObject("boardDto", boardDto);		
		
		return mav;
	}
}

3.view 만들어야지(content.jsp)

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
		"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<table>
	<caption>글 상세보기</caption>
	
	<tr>
		<th>글번호</th>
		<td>${boardDto.seq}</td>
	</tr>
	<tr>
		<th>제목</th>
		<td>${boardDto.title}</td>
	</tr>
	<tr>
		<th>이름</th>
		<td>${boardDto.name}</td>
	</tr>
	<tr>
		<th>조회수</th>
		<td>${boardDto.readcount}</td>
	</tr>
	<tr>
		<th>작성시간</th>
		<td>${boardDto.writeday}</td>
	</tr>
	<tr>
		<th>내용</th>
		<td>${boardDto.content}</td>
	</tr>
</table><br/>
<a href = "BoardList.do">리스트</a>
<a href = "BoardUpdate.do?seq=${boardDto.seq}">수정</a>
<a href="BoardDelete.do?seq=${boardDto.seq}">삭제</a>
</body>
</html>