[07] MVC2패턴 게시판 - ① 쓰기
Dynamic Web Project : mvc2bbs
라이브러리 복사
/WEB-INF/lib/ojdbc14.jar
jstl.jar
standard.jar 복사
-------------------------------------------------------------게시판 테이블 생성
create table board(
num number NOT NULL,
writer varchar2(20) NOT NULL,
email varchar2(30),
subject varchar2(50) NOT NULL,
passwd varchar2(10) NOT NULL,
reg_date date NOT NULL,
readcount number default 0,
ref number NOT NULL,
re_step number NOT NULL,
re_level number NOT NULL,
content varchar2(100) NOT NULL,
ip varchar2(20) NOT NULL,
PRIMARY KEY(num)
);
create sequence board_seq;
-------------------------------------------------------------BoardDataBean.java
package my.board;
import java.sql.Timestamp;
public class BoardDataBean {
private int num;
private String writer;
private String subject;
private String email;
private String content;
private String passwd;
private Timestamp reg_date;
private int readcount;
private String ip;
private int ref;
private int re_step;
private int re_level;
setter와 getter를 생성
}
--------------------------------------------------------------------결과확인방법
http://localhost:9090/mvc2bbs/writeForm.do
------------------------------------------------------------------------호출순서
서버실행->*.do
(writeForm.do)
->ControllerAction
CommandPro.properties 파일 읽어옴
-> init()
my.action.WriteFormAction 생성 (CommandAction 구현)
-> doGet()
http://localhost:9090/mvc2bbs/writeForm.do
-> requestPro()
com= /mvc2bbs/writeForm.do -> WriteFormAction.java -> writeForm.jsp
--------------------------------------------------/WEB-INF/CommandPro.properties
/mvc2bbs/writeForm.do=my.action.WriteFormAction
-------------------------------------------------------/WEB-INF/web.xml 매핑하기
<servlet>
<servlet-name>ControllerAction</servlet-name>
<servlet-class>my.controller.ControllerAction</servlet-class>
<init-param>
<param-name>propertyConfig</param-name>
<param-value>D:/JAVA_Green/workspace/mvc2bbs/WebContent/WEB-INF
/CommandPro.properties</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>ControllerAction</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
---------------------------------------------my.controller.ControllerAction.java
package my.controller;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Properties;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import my.action.CommandAction;
public class ControllerAction extends HttpServlet {
private Map commandMap=new HashMap();
@Override
public void init(ServletConfig config) throws ServletException {
String props=config.getInitParameter("propertyConfig");
Properties pr=new Properties();
FileInputStream f=null;
try{
f=new FileInputStream(props);
pr.load(f);
}catch(IOException e){
throw new ServletException(e);
}finally{
if(f!=null){
try{
f.close();
}catch(IOException e){}
}
}
Iterator keyiter=pr.keySet().iterator();
while(keyiter.hasNext()){
String command=(String)keyiter.next();
String className=pr.getProperty(command);
try{
Class commandClass=Class.forName(className);
Object commandinstance=commandClass.newInstance();
commandMap.put(command, commandinstance);
}catch(ClassNotFoundException e){
throw new ServletException(e);
}catch(InstantiationException e){
throw new ServletException(e);
}catch(IllegalAccessException e){
throw new ServletException(e);
}
}
}//end
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
requestPro(req,resp);
}//end
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
requestPro(req,resp);
}//end
private void requestPro(HttpServletRequest request,HttpServletResponse response)
throws ServletException, IOException {
String view=null;
CommandAction com=null;
try{
String command=request.getRequestURI();
if(command.indexOf(request.getContextPath())==0){}
System.out.println(command);
com=(CommandAction)commandMap.get(command);//다형성
view=com.requestPro(request, response);
System.out.print(view);
}catch(Throwable e){
throw new ServletException(e);
}
RequestDispatcher dispatcher=request.getRequestDispatcher(view);
dispatcher.forward(request, response);
}//end
}
-------------------------------------------------------------my.action.CommandAction.java
package my.action;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public interface CommandAction {
public String requestPro(HttpServletRequest request,
HttpServletResponse response) throws Throwable;
}
------------------------------------------------my.action.WriteFormAction.java
package my.action;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class WriteFormAction implements CommandAction {
@Override
public String requestPro(HttpServletRequest request,
HttpServletResponse response) throws Throwable {
int num=0,ref=1,re_step=0,re_level=0;
try{
if(request.getParameter("num")!=null){
num=Integer.parseInt(request.getParameter("num"));
ref=Integer.parseInt(request.getParameter("ref"));
re_step=Integer.parseInt(request.getParameter("re_step"));
re_level=Integer.parseInt(request.getParameter("re_level"));
}
}catch(Exception e){e.printStackTrace();}
request.setAttribute("num", new Integer(num));
request.setAttribute("ref", new Integer(ref));
request.setAttribute("re_step", new Integer(re_step));
request.setAttribute("re_level", new Integer(re_level));
return "writeForm.jsp";
}
}
-------------------------------------------------------/WebContent/writeForm.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ include file="/view/color.jspf" %>
<!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=EUC-KR">
<title>글쓰기</title>
</head>
<body bgcolor="${bodyback_c}">
<center><b>글쓰기</b></center>
<br>
<form method="post" name="writeform" action="/mvc2bbs/writePro.do">
<input type="hidden" name="num" value="${num}">
<input type="hidden" name="ref" value="${ref}">
<input type="hidden" name="re_step" value="${re_step}">
<input type="hidden" name="re_level" value="${re_level}">
<table width="400" border="1">
<tr>
<td align="right" colspan=2 bgcolor="${value_c}">
<a href="/mvc2bbs/list.do">글목록</a></td>
</tr>
<tr>
<td bgcolor="{$value_c}">이름</td>
<td><input type="text" name="writer"></td>
</tr>
<tr>
<td bgcolor="{$value_c}">제목</td>
<td><input type="text" name="subject"></td>
</tr>
<tr>
<td bgcolor="{$value_c}">이메일</td>
<td><input type="text" name="email"></td>
</tr>
<tr>
<td bgcolor="{$value_c}">내용</td>
<td><textarea name="content" rows="" cols=""></textarea></td>
</tr>
<tr>
<td bgcolor="{$value_c}">비밀번호</td>
<td><input type="password" name="passwd"></td>
</tr>
<tr>
<td colspan=2 bgcolor="{$value_c}">
<input type="submit" value="글쓰기">
<input type="reset" value="취소">
<input type="button" value="목록보기"
onClick="window.location='/mvc2bbs/list.do'">
</td>
</tr>
</table>
</form>
</body>
</html>
-----------------------------------------------------/WebContent/view/color.jspf
<c:set var="bodyback_c" value="#e0ffff"/>
<c:set var="back_c" value="#8fbc8f"/>
<c:set var="title_c" value="#5f9ea0"/>
<c:set var="value_c" value="#b0e0e6"/>
<c:set var="bar" value="#778899"/>