MVC구조로 게시판 만들기 (4) 새글 작성

[applicationContext.xml]

  • insert.do , insert_ok.do 등록하기
<?xml version="1.0" encoding="UTF-8"?>
<beans>
	<bean id="list.do" class="com.sist.model.ListModel"/>
	<bean id="detail.do" class="com.sist.model.DetailModel"/>
	<bean id="insert.do" class="com.sist.model.InsertModel"/>
	<bean id="insert_ok.do" class="com.sist.model.InsertOkModel"/>
</beans>

[mapper]

[DAO]

[Model]

InsertModel.jsp

  • 구현해야할 기능이 없음
  • insert.jsp로 화면만 전환하면 됨
return "board/insert.jsp";

InsertOkModel.jsp

Note

화면을 변경하는 방법

  1. sendredirect : request가 초기화되는 상태이다.
    • return "redirect:list.do";
    • URL이 변경된다.
  2. forward : 덮어쓰기 방식이기 때문에 request가 초기화 되지 않는다.
    • jsp에서 request에 담은 데이터를 받아서 출력할 수 있다.
    • return "board/list.jsp";
    • URL이 변경되지 않는다.
package com.sist.model;

import javax.servlet.http.HttpServletRequest;

public class InsertOkMode implements Model {

	@Override
	public String handlerRequest(HttpServletRequest request) {
		// TODO Auto-generated method stub
		return "redirect:list.do";
	}

}

[Controller]

[View]

Note
  • list.jsp : 받을 데이터가 없는 상태에서 HTML만 출력할 때 사용한다.
  • list.do : 받을 데이터를 [Controller >> ListModel >> list.jsp]를 거쳐서 전송한 후 출력할 때 사용한다.

insert.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">
<style type="text/css">
.row {
   margin: 0px auto; /*가운데 정렬*/
   width:700px;
}
h1 {
     text-align: center;
}
</style>
</head>
<body>
  <div class="row">
   <h1 class="text-center">글쓰기</h1>
   <form method="post" action="insert_ok.do">
   <table class="table table-hover">
     <tr>
       <th class="danger text-right" width=15%>이름</th>
       <td width=85%>
         <input type=text name=name size=15 class="input-sm">
       </td>
     </tr>
     <tr>
       <th class="danger text-right" width=15%>제목</th>
       <td width=85%>
         <input type=text name=subject size=45 class="input-sm">
       </td>
     </tr>
     <tr>
       <th class="danger text-right" width=15%>내용</th>
       <td width=85%>
         <textarea rows="10" cols="50" name=content></textarea>
       </td>
     </tr>
     <tr>
       <th class="danger text-right" width=15%>비밀번호</th>
       <td width=85%>
         <input type=password name=pwd size=10 class="input-sm">
       </td>
     </tr>
     <tr>
       <td colspan="2" class="text-center">
         <input type=submit value=글쓰기 class="btn btn-sm btn-primary">
         <input type=button value=취소 class="btn btn-sm btn-primary"
           onclick="javascript:history.back()"
         >
       </td>
     </tr>
   </table>
   </form>
  </div>
</body>
</html>

insert_ok.jsp