PC

블로그 이미지

DAVID

160502: 35회차

Programming 2016. 5. 2. 17:35

종료하기 전 티스토리 네이버 로그아웃 할 것


1. 툴

동일

추가시: 


2. 폴더

동일

추가시:


3. 사용할 사이트

동일

추가시:


4. 공부하는 것


[09] [MVC][board] web 개발환경 설정, DB 설정

[01] MVC 기반의 게시판 구현 


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

1. Web Application 설정 
      
     - Eclipse Setting 
       . Project Type: Dynamic Web Project 
       . Project Name: mvc_board  
       . Dynamic Web Module: 3.0 
       . Java Compiler: 1.7 
       . Package Name: model, controller, action, utility(beans)

     - 폴더 구조 
       mvc_board/WebContent/view         : 게시판 관련 jsp 파일 
       mvc_board/WebContent/view/storage : 파일이 전송되어 저장되는 폴더 
       mvc_board/WebContent/view/temp    : 파일 전송시 임시 저장 폴더 
       mvc_board/WebContent/template     : template 관련 파일들 
       mvc_board/WEB-INF                 : web.xml 환경 설정 파일 위치 
       mvc_board/WEB-INF/classes         : 서블릿 클래스 위치, 자동 생성 
       mvc_board/WEB-INF/config          : properties 파일등, 기타 리소스 파일  
       mvc_board/WEB-INF/lib             : jar 파일의 라이브러리 위치 



[02] WebContent/WEB-INF/sql/board.sql



1. 게시판 데이터베이스 구조 


DROP TABLE board CASCADE CONSTRAINTS PURGE; 

 

CREATE TABLE board ( 

       num                  NUMBER(6) NOT NULL,      -- 글 일련 번호 

       name                 VARCHAR(10) NOT NULL,    -- 글쓴이 성명 

       subject              VARCHAR(100) NOT NULL,   -- 제목 

       content              VARCHAR(4000) NOT NULL,  -- 내용 

       ref                  NUMBER(5) NOT NULL,      -- 부모글 번호(그룹번호) 

       indent               NUMBER(2) DEFAULT 0 NOT NULL, -- 답변여부,깊이 

       ansnum               NUMBER(5) DEFAULT 0 NOT NULL, -- 답변 순서(최신답변은 부모글 바로 아래 달려집니다.) 

       regdate              DATE NOT NULL,           -- 글 등록일 

       passwd               VARCHAR(15) NOT NULL,    -- 패스워드 

       count                NUMBER(5) DEFAULT 0 NOT NULL,      -- 조회수  

       ip                   VARCHAR(15) NOT NULL,    -- 글쓴이 IP  

       filename             VARCHAR(50) NULL,        -- 파일명  

       filesize             NUMBER(7) NULL,          -- 파일 사이즈 

       refnum               NUMBER    DEFAULT 0,          -- 답변확인 컬럼 

       PRIMARY KEY (num) 

); 

 

 

 

--  Sequence Object 

 

    CREATE SEQUENCE board_seq 

    START WITH   1         --시작번호 

    INCREMENT BY 1         --증가값 

    MAXVALUE     99999     --최대값 

    CACHE 20               --시쿼스 변경시 자주 update되는 것을 방지하기위한 캐시값 

    NOCYCLE;     

    

-- Sequence 만드는 규칙 create SEQUENCE 테이블명_컬럼명 (어떠한 테이블의 시퀀스임을 알려주려고)


 

 

     

select * from BOARD 

 

-- 단순한 데이터 출력 

-- rownum: 가상 컬럼, SELECT시에 동적으로 일련번호를 생성합니다. 

SELECT num, name, subject, regdate, rownum FROM board; 

 

 

-- 내림 차순 출력, rownum컬럼은 ORDER BY 문 보다 먼저 생성됩니다. 

SELECT num, name, subject, regdate, rownum FROM board 

ORDER BY name DESC; 

 

 

-- 서브쿼리와 rownum의 출력, 내부 쿼리는 정렬 실행,  

-- 외부 쿼리는 rownum 일련번호 산출 

SELECT num, name, subject, regdate, rownum r 

FROM ( 

      SELECT num, name, subject, regdate FROM board 

      ORDER BY name DESC 

) 

 

 

 

-- r컬럼을 인식을 못합니다. 

SELECT num, name, subject, regdate, rownum r 

FROM ( 

      SELECT num, name, subject, regdate FROM board 

      ORDER BY name DESC 

) 

WHERE r >= 1 and r <= 5; 

 

 

 

-- rownum을 이용한 페이징 출력, 1~5번 레코드만 출력 

SELECT num, name, subject, regdate, r 

FROM( 

    SELECT num, name, subject, regdate, rownum r 

    FROM ( 

        SELECT num, name, subject, regdate FROM board 

--        where subject like '%게%' 

--        or content like '%게%' 

        ORDER BY num DESC 

    ) 

) 

WHERE r >= 6 and r <=10; 

 

 

-- 6 ~ 10번 레코드만 출력 

SELECT num, name, subject, regdate, r 

FROM( 

    SELECT num, name, subject, regdate, rownum r 

    FROM ( 

        SELECT num, name, subject, regdate FROM board 

        ORDER BY num DESC 

    ) 

) 

WHERE r >= 6 and r <= 10; 

 

select num,ref,indent,ansnum,refnum,subject 

from board 

order by ref DESC, ansnum 

 

 

 

select * from board 


 

---몬가 복붙을 많이 했음...---

넘나 머리가 아픈것


오늘도 폴더를 압축해서 가져갈거 같은 예감..

시험이 6일남았으니 넘나 바쁨...



Controller가 하는 것은 Hashmap의 정보를 읽어다가 쓰는 것

ㅁ.do를 전달받으면 init()에서 action을 분류한 후 요청한다! (properties에 정의해놓은 것)


transaction 하기 위해서 close하는 메소드를 con 따로 pstmt 따로 짠다 :>


까지 점심 전에 했습니다.




--------------------------------------------------------------------------------------------


//액션이 가져야 할 기능 - 모델 사용 - 결과를 리퀘스트에 저장 - 뷰페이지 리턴



listAction.java


package action;


import java.util.HashMap;

import java.util.List;


import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;


import model.BoardDTO;

import model.BoardMgr;

import utility.Paging;

import utility.Utility;




public class ListAction implements Action {


@Override

public String execute(HttpServletRequest request, HttpServletResponse response) throws Throwable {

// TODO Auto-generated method stub

int nowPage = 1;

int recordPerPage = 5;

if(request.getParameter("nowPage") != null){

nowPage = Integer.parseInt(request.getParameter("nowPage"));

}

int sno = ((nowPage - 1) * recordPerPage) + 1;

int eno = nowPage * recordPerPage;

request.setCharacterEncoding("UTF-8"); //word 때문에 한글화 해줌

String col = Utility.nullCheck(request.getParameter("Col"));

String word = Utility.nullCheck(request.getParameter("word"));

if(col.equals("total")){

word = "";

}

Map map = new HashMap();

map.put("sno", sno);

map.put("eno", eno);

map.put("col", col);

map.put("word", word);

//액션이 가져야 할 기능 - 모델 사용 - 결과를 리퀘스트에 저장 - 뷰페이지 리턴

//모델 사용

BoardMgr mgr = new BoardMgr();

List<BoardDTO> list = mgr.list(map);

int total = mgr.total(map);

String paging = new Paging().paging3(total, nowPage, recordPerPage, col, word);

//결과를 리퀘스트에 저장

request.setAttribute("list", list);

request.setAttribute("paging", paging);

//페이징 유지를 위해서 nowpage, col, word도 가져감


request.setAttribute("nowPage", nowPage);

request.setAttribute("col", col);

request.setAttribute("word", word);

//뷰페이지 리턴

String url = "/view/list.jsp";

return url;

}


}



mvc_board.zip



























5. 수업

진도: 

hw: 


6. 할것


http://luckybluegifs.co.vu/page/13

즐겨찾기 지우려고 저장한 것



접속용nosqljava/bigdataaa

'Programming' 카테고리의 다른 글

160504: 37회차  (0) 2016.05.04
160503: 36회차  (1) 2016.05.03
160429: 34회차  (0) 2016.04.29
160428: 33회차  (0) 2016.04.28
160427: 32회차  (1) 2016.04.27
Posted by DAVID
블로그 이미지

by DAVID

공지사항

    최근...

  • 포스트
  • 댓글
  • 트랙백
  • 더 보기

태그

글 보관함

«   2025/06   »
일 월 화 수 목 금 토
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

링크

카테고리

PC (112)
Programming (109)

카운터

Total
Today
Yesterday
방명록 : 관리자 : 글쓰기
DAVID's Blog is powered by daumkakao
Skin info material T Mark3 by 뭐하라
favicon

PC

  • 태그
  • 링크 추가
  • 방명록

관리자 메뉴

  • 관리자 모드
  • 글쓰기
  • PC (112)
    • Programming (109)

카테고리

PC화면 보기 티스토리 Daum

티스토리툴바