..열심히 공부하세../MVC

[07] MVC2패턴 게시판 - ① 쓰기

댄스댄스 2012. 6. 26. 12:42

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"/>