2010. 7. 3. 08:31 JAVA , JSP
[게시판] web 개발환경 설정, DB 설정, web.xml
[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
'JAVA , JSP' 카테고리의 다른 글
include directive vs include action tag (0) | 2010.07.05 |
---|---|
서블릿 파일 생성하고 실행 (0) | 2010.07.05 |
우분투에서 서버에 접속하는 방법 및 vi editor 명령어 (0) | 2010.07.03 |
엑셀 파일 읽어와서 화면에 출력하는 소스 (0) | 2009.10.16 |
자바 프로그램으로 엑셀 파일 읽어 오기 (0) | 2009.10.16 |