[01] MVC 기반의 자료실 구현

     - URI상에 있는 주소를 얻어와 명령어로 처리하는 패턴입니다.

1. Web Application 설정
    
     - Eclipse Setting
       . Project Type: Dynamic Web Project
       . Project Name: www_mvc
       . Dynamic Web Module: 2.5
       . Java Compiler: 1.6
       . Package Name: www.mvc.bbsgrp, www.mvc.bbs, www.mvc.pds, www.utility

     - 폴더 구조
       www_mvc/WebContent/mvcbbsgrp               : 게시판 관련 jsp 파일
       www_mvc/WebContent/mvcbbsgrp/images  : 이미지 저장 폴더

       www_mvc/WebContent/mvcbbs                     : 게시판 관련 jsp 파일
       www_mvc/WebContent/mvcbbs/images        : 이미지 저장 폴더

       www_mvc/WebContent/mvcpds                     : 게시판 관련 jsp 파일
       www_mvc/WebContent/mvcpds/images        : 이미지 저장 폴더
       www_mvc/WebContent/mvcpds/storage       : 파일이 전송되어 저장되는 폴더
       www_mvc/WebContent/mvcpds/temp           : 파일 전송시 임시 저장 폴더

       www_mvc/WebContent/WEB-INF                    : web.xml 환경 설정 파일 위치
       www_mvc/WebContent/WEB-INF/classes      : 서블릿 클래스 위치, 자동 생성
       www_mvc/WebContent/WEB-INF/config         : properties 파일등, 기타 리소스 파일
       www_mvc/WebContent/WEB-INF/lib               : jar 파일의 라이브러리 위치

 

               

[02] DB 설계

FileName: mvcbbs.sql

1. 게시판 테이블 구조
    - 데이터베이스 전체에서 PK컬럼명은 고유해야 함.
   
    DROP TABLE mvcbbsgrp PURGE;
    CREATE TABLE mvcbbsgrp(
        mvcbbsgrpno NUMBER(7)   NOT NULL, -- 게시판 그룹 코드
        title              VARCHAR(50) NOT NULL, -- 게시판 제목
        id                 VARCHAR(20) DEFAULT 'admin' NOT NULL, -- 게시판 관리자 id
        passwd         VARCHAR(20) DEFAULT '12345' NOT NULL, -- 게시판 패스워드
        etc               VARCHAR(100)      NULL, -- 기타 설명, 생략 가능
        PRIMARY KEY (mvcbbsgrpno)
    )

    DROP SEQUENCE mvcbbsgrp_seq;

    CREATE SEQUENCE mvcbbsgrp_seq
    START WITH   1            --시작번호
    INCREMENT BY 1          --증가값
    MAXVALUE     9999999 --최대값
    CACHE  2         --시쿼스 변경시 자주 update되는 것을 방지하기위한 캐시값
    NOCYCLE;  


   
    DROP TABLE mvcbbs PURGE;

    CREATE TABLE mvcbbs(
        mvcbbsno    NUMBER(7)     NOT NULL, -- 게시판 고유 글 번호
        mvcbbsgrpno NUMBER(7)   NOT NULL, -- 게시판 그룹 코드, FK
        wname      VARCHAR(20)   NOT NULL, -- 글 쓴이
        passwd  VARCHAR(10)   NOT NULL,  -- 비밀번호
        title          VARCHAR(100) NOT NULL, -- 제목
        content   VARCHAR(4000)        NULL, -- 글내용
        bbsdate   DATE          NOT NULL, -- 글 등록 날짜
        refurl      VARCHAR(100) NOT NULL, -- 참조 주소
        cnt          NUMBER(6)   DEFAULT 0 NOT NULL, -- 조회수
        PRIMARY KEY(mvcbbsno),
        FOREIGN KEY(mvcbbsgrpno) REFERENCES mvcbbsgrp(mvcbbsgrpno)
    );

    DROP SEQUENCE mvcbbs_seq;

    CREATE SEQUENCE mvcbbs_seq
    START WITH   1         --시작번호
    INCREMENT BY 1         --증가값
    MAXVALUE     9999999    --최대값
    CACHE        2         --시쿼스 변경시 자주 update되는 것을 방지하기위한 캐시값
    NOCYCLE;  

 

 

3. mvcbbsgrp Query 생성

-- Data Insert
INSERT INTO mvcbbsgrp(mvcbbsgrpno, title, id, passwd, etc)
VALUES(mvcbbsgrp_seq.nextval, 'JAVA A 게시판', 'user1', '1', '');


-- Data Select List
SELECT mvcbbsgrpno, title, id, passwd, etc
FROM mvcbbsgrp
ORDER BY mvcbbsgrpno ASC;


-- Data Read
SELECT pdsnum, content, name, pdsdate, filename, filesize, password
FROM mvcpds
WHERE pdsnum=1;


-- Data Update
UPDATE mvcpds SET name='자재과장', content='5월 산행 6월로 연기'
WHERE pdsnum=1;


-- Data Delete
DELETE FROM mvcpds WHERE pdsnum=1;

 

4. mvcbbs Query 생성

 

 

[03] Application structure
 
1. WebContent/WEB-INF/web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>www_mvc</display-name>
 
    <!-- ************ MVC Controller ************ -->
    <servlet>
        <servlet-name>Controller</servlet-name>
        <servlet-class>www.mvc.Controller</servlet-class>
        <init-param>
            <param-name>configFile</param-name>
            <param-value>/WEB-INF/config/action-config.properties</param-value>
        </init-param>
        <!-- 톰캣 실행시 자동으로 서버에 등록 -->
        <load-on-startup>1</load-on-startup>
    </servlet>

    <!-- 파일명의 확장자가 *.do로 끝나면 Controller 서블릿이 요청 처리 -->
    <servlet-mapping>
        <servlet-name>Controller</servlet-name>
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>
    <!-- **************************************** -->
       
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
</web-app>

 


2. Beans 설정
   - DTO class         : MVCBbsDTO.java, MVCBbsgrpDTO.java
   - DAO interface     : MVCBbsDAO.java, MVCBbsgrpDAO.java
   - DAO class         : MVCBbsDAOImpl.java, MVCBbsgrpDAOImpl.java
   - Manager class     : MVCBdsMgr.java, MVCBdsgrpMgr.java 
   - Manager test class: MVCBbsMgrTest.java, MVCBbsgrpMgrTest.java

 


3. 처리 순서

Model 1
글쓰기 폼.jsp ---> submit() ---> 글쓰기 처리.jsp

 

Model 2
1) 폼 출력
글쓰기 폼.do ---> Controller Servlet ---> Class 실행 --------------+
                         *.do 파일 캡쳐                                   |
                                                                                  |
글쓰기 폼.jsp   <--- Controller  Servlet<---- ActionForward ----+


2) 폼 처리(Controller == Controller  Servlet)
글쓰기 폼.jsp ---> submit() ---> Controller ---> Class 실행 ----+
                                       *.do 파일 캡쳐                     |
                                                                                 |
글쓰기 처리.jsp   <--- Controller <---- ActionForward --------------+

 

 

 

[04] JSP Model 1 process and JSP Model 2 process 비교 

1. JSP Model 1 process
- 요청을 파일명으로 직접 지정

추가: create_form.jsp --> create_proc.jsp --> beans
목록: list.jsp --> beans
읽기: read.jsp --> beans
수정: update_form.jsp --> update_proc.jsp --> beans
삭제: delete_form.jsp --> delete_proc.jsp --> beans

 

 

2. JSP Model 2 process
- 기존 JSP 기술을 조합하여 요청을 받아 처리하여 출력하는 순서를
  서블릿 중심으로 운영되도록 순서를 재정의한 것에 불과합니다.
  M: Model(java class), V: view(jsp), C:Controller(servlet)

- 요청을 명령어로 지정

- 'create_form.do'는 실제로 존재하는 파일명이 아닙니다.

- Controller는 servlet으로 만들어저있다.

- Controller는 'create_form.do'명령어에 매핑된 beans 클래스를
  실행합니다.

- Controller는 beans 클래스에 있는 'create_form.jsp'를 리턴받아
  웹 브러우저로 출력을 보냅니다.

 

추가 폼
. create_form.do --> Controller --> beans --> create_form.jsp
추가 처리
. create_proc.do --> Controller --> beans --> create_proc.jsp
목록
. list.do --> Controller --> beans --> list.jsp
읽기
. read.do --> Controller --> beans --> read.jsp
수정 form
. update_form.do --> Controller --> beans --> update_form.jsp
수정 proc
. update_proc.do --> Controller --> beans --> update_proc.jsp
삭제 form
. delete_form.do --> Controller --> beans --> delete_form.jsp
삭제 proc
. delete_proc.do --> Controller --> beans --> delete_proc.jsp

 


 
 

Posted by ▶파이팅◀

블로그 이미지
Let's start carefully from the beginning
▶파이팅◀

태그목록

공지사항

Yesterday
Today
Total

달력

 « |  » 2024.5
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

최근에 올라온 글

최근에 달린 댓글

글 보관함