160415: 24회차

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


1. 툴

동일

추가시: 


2. 폴더

동일

추가시:


3. 사용할 사이트

동일

추가시:


4. 공부하는 것


어제 하던 거


<link href = "" rel "">

href 의 ../css/style.css 같은 경우 ..가 root 밖으로 나오는 것이라서 같은 폴더 내에 위치하면 안 써줘도 된다.

근데 보통 따로 만드니까 저렇게 많이 쓰나 봄


그리고 밑에 가져다가 쓸 떄는 <ㅁㅁㅁ class = "title"> 같이 가져다 씀


<jsp: include page = " "/>

/menu/top.jsp 

처음에 /는 root , 메뉴는 folder, top.jsp는 page... 

인클루드는 루트 경로 다 써주지 않아도 되어서 좀 편함맨임


이게 모델 1 스타일임

모든 페이지에 top bottom을 포함시키는 고인돌같은 것...

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

style.css에 이런 게 들어있습니다.


.title{

  font-size: 28px;

  text-align: center;

  border-style: solid;   /* 실선 */

  border-width: 1px;     /* 선 두께 */

  border-color: #AAAAAA; /* 선 색깔 */

  color: #000000;        /* 글자 색깔 */

  width: 30%;            /* 화면의 30% */ 

  padding: 10px;         /* 위 오른쪽 아래 왼쪽: 시간 방향 적용 */

  

  /* padding: 50px 10px;  50px: 위 아래, 10px: 좌우 */

  /* padding-top: 30px;  상단만 간격을 30px 지정   */

  

  margin: 20px auto; /* 가운데 정렬 기능, 20px: 위 아래, auto: 오른쪽 왼쪽*/

}

 

/* 내용 */

.content{

  font-size: 24px;

  text-align: center;

  width: 100%;

  padding: 10px;  /* 위 오른쪽 아래 왼쪽 */

  margin: 0 auto; /* 가운데 정렬 */

}

 

/* 하단 메뉴 */

.bottom{

margin: 20px auto;

  text-align: center;

  width: 100%;

  padding: 10px;  /* 위 오른쪽 아래 왼쪽 */

}

 

 

/* 테이블에 CSS 적용 */

TABLE{

  margin: 0 auto;            /* 테이블 가운데 정렬 */

  border-color: #AAAAAA;     /* 테이블 외곽선 색깔 */ 

  border-width: 1px;         /* 테이블 외곽선 두께 */ 

  border-style: solid;       /* 테이블 외곽선 스타일 */

  border-collapse: collapse; /* 컬럼의 외곽선을 하나로 결합 */

 

}

 

TH{

  border-color: #AAAAAA;     /* 테이블 외곽선 색깔 */ 

  border-width: 1px;         /* 테이블 외곽선 두께 */ 

  border-style: solid;       /* 테이블 외곽선 스타일 */

 

  color: #FFFFFF;            /* 글자 색 */ 

  background-color: #668db4; /* 배경 색 */

  padding: 5px;              /* 셀 내부 간격 */

}

 

 

td{

  border-color: #AAAAAA;     /* 테이블 외곽선 색깔 */ 

  border-width: 1px;         /* 테이블 외곽선 두께 */ 

  border-style: solid;       /* 테이블 외곽선 스타일 */

 

  color: #000000;            /* 글자 색 */ 

  background-color: #FFFFFF; /* 배경 색 */

  padding: 5px;              /* 셀 내부 간격 */  

}

 

 

.input{

  padding: 0px;

  border-color: #AAAAAA;     /* 테이블 외곽선 색깔 */ 

  border-width: 1px;         /* 테이블 외곽선 두께 */ 

  border-style: solid;       /* 테이블 외곽선 스타일 */

 

  border-top-style: none;

  border-right-style: none;

  border-left-style: none; 

}

 

.textarea{

  padding: 0px;

  border-color: #AAAAAA;     /* 테이블 외곽선 색깔 */ 

  border-width: 1px;         /* 테이블 외곽선 두께 */ 

  border-style: solid;       /* 테이블 외곽선 스타일 */

 

  border-top-style: none;

  border-right-style: none;

  border-left-style: none; 

}

 

A:link {     /* A 태그의 링크 속성 */

  text-decoration: none;     /* 문자열 꾸미기값을 지정하지 않음, 밑줄 삭제 */

  color: black;              /* 글자색깔 검정 */

}

 

A:hover{     /* A 태그에 마우스가 올라 갔을 경우 */

  text-decoration: none;     /* 문자열 꾸미기값을 지정하지 않음, 밑줄 삭제 */

  background-color: #E6F7FF; /* 배경 색 변경*/

  color: black;              /* 문자열 색깔 */ 

}

 

A:visited{     /* A 태그의 링크를 방문한 경우 */

  text-decoration: none;     /* 문자열 꾸미기값을 지정하지 않음, 밑줄 삭제 */

  color: black;              /* 글자색깔 검정 */

}


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


팀 짜는 것 얘기중... ★

으으 프로젝트! :<



------------------오후에는 list에 페이징 + 답변하기 처리 들어감! :>

수정 / 삭제시 password 검증도 들어감!



----------------------------------------------2시54분ㄷ임


dynamic web project 만들었음 - jsp_bbs


[14][BBS] 게시판, DBMS SQL, 사용 Query
[01] 게시판 

- Eclipse Setting 
          type: Dynamic Web Project 
          name: jsp_bbs 
       Package: bbs
                  utility 


   


------------------------------------------------------------------------------ 
1. 게시판 테이블 구조 
 
DROP TABLE bbs PURGE; 
 
CREATE TABLE bbs ( 
  bbsno   NUMBER(7)     NOT NULL,  -- 글 일련 번호, -9999999 ~ +9999999 
  wname   VARCHAR(20)   NOT NULL,  -- 글쓴이 
  title   VARCHAR(100)  NOT NULL,  -- 제목(*) 
  content VARCHAR(4000) NOT NULL,  -- 글 내용 
  passwd  VARCHAR(15)   NOT NULL,  -- 비밀 번호 
  viewcnt NUMBER(5)     DEFAULT 0, -- 조회수, 기본값 사용 
  wdate   DATE          NOT NULL,  -- 등록 날짜, sysdate 
  grpno   NUMBER(7)     DEFAULT 0, -- 부모글 번호 
  indent  NUMBER(2)     DEFAULT 0, -- 답변여부,답변의 깊이
  ansnum  NUMBER(5)     DEFAULT 0, -- 답변 순서 
  PRIMARY KEY (bbsno)  
); 
 
//오 grpno indent ansnum은 답변을 나타낼 때 필요한 것임ㅇㅇ
 
 
2. 글 추가(C: Create) 
 
- MAX(bbsno): bbsno 컬럼에서 최대값을 추출 
SELECT MAX(bbsno) as max FROM bbs; 
 
 MAX 
 ---- 
 NULL <- 값이 없는 경우 
 
 
SELECT MAX(bbsno)+1 as max FROM bbs; 
 
 MAX 
 ---- 
 NULL <- 사칙연산이 의미가 없음. 
 
  
- NVL(): null 값을 0으로 변경 가능함. 
SELECT NVL(MAX(bbsno), 0) as max FROM bbs; 
 
 MAX 
 --- 
   0 
   
 
- 새로운 번호의 생성   
SELECT NVL(MAX(bbsno), 0) + 1 as bbsno FROM bbs; 
 
BBSNO 
 ----- 
     1 
 
     
- 서브쿼리를 이용한 레코드 추가 
INSERT INTO bbs(bbsno, wname, title, content, passwd, wdate)  
VALUES((SELECT NVL(MAX(bbsno), 0) + 1 as bbsno FROM bbs), 
'왕눈이', '제목', '내용', '123', sysdate);                 
 
 
         
3. 전체 글 목록(S:Total Select List), 최신글 먼저 출력 
   - ASC: 오름 차순, DESC: 내림 차순 
SELECT bbsno, wname, title, content, passwd, viewcnt, wdate, grpno, indent, ansnum 
FROM bbs  
ORDER BY bbsno DESC; 
 
 BBSNO WNAME TITLE CONTENT PASSWD VIEWCNT WDATE                 GRPNO INDENT ANSNUM 
 ----- ----- ----- ------- ------ ------- --------------------- ----- ------ ------ 
     1 왕눈이   제목    내용      123          0 2013-10-31 20:46:18.0     0      0      0 
 
 
      
4. 조회수 증가 
UPDATE bbs 
SET viewcnt = viewcnt + 1 
WHERE bbsno=1; 
 
 
 
5. 1건의 글 보기(R:Read, PK 사용) 
SELECT bbsno, wname, title, content, passwd, viewcnt, wdate, grpno, indent, ansnum 
FROM bbs  
WHERE bbsno = 1; 
 
 PDSNO WNAME TITLE CONTENT PASSWD VIEWCNT WDATE                 GRPNO INDENT ANSNUM FILENAME FILESIZE 
 ----- ----- ----- ------- ------ ------- --------------------- ----- ------ ------ -------- -------- 
     1 왕눈이   제목    내용      123          0 2013-10-21 21:07:30.0     0      0      0 file.txt        0 
 
 
 
 
6. 글 수정(U:Update), PK는 레코드를 구분하는 고유 기능을 가지고 있음으로 
   수정하는 것은 권장하지 않음. 
    
-- PK 수정, PK는 중복 충돌이 발생 할 수 있음으로 변경을 권장하지 않음.  
   
-- 일반 컬럼의 변경, 일반적인 UPDATE임    
UPDATE bbs 
SET wname='왕눈이', title='비오는날', content='개구리 연못' 
WHERE bbsno = 1; 
 
 PDSNO WNAME TITLE CONTENT PASSWD VIEWCNT WDATE                 GRPNO INDENT ANSNUM  
 ----- ----- ----- ------- ------ ------- --------------------- ----- ------ ------  
     1 아로미   제목2   내용2     123          0 2013-10-21 21:07:30.0     0      0      0 
 
     
-- 패스워드 검사 
SELECT COUNT(bbsno) as cnt 
FROM bbs 
WHERE bbsno=1 AND passwd='123'; 
 
 CNT 
 --- 
   1 
      
      
 
7. 글 삭제(D:Delete)
-- 모든 레코드 삭제
DELETE FROM bbs; 
 
-- 1번 레코드만 삭제
DELETE FROM bbs WHERE bbsno=1; 
 
 
 
8. 답변 
 
1) 모든 레코드 삭제 
DELETE FROM bbs; 
 
 BBSNO  TITLE    GRPNO INDENT ANSNUM 
 -----   -----    ----- ------ ------ 
     1  부모글1     1      0      0 
 
      
 BBSNO  TITLE    GRPNO INDENT ANSNUM 
 -----  -----    ----- ------ ------ 
     2  부모글2      2      0      0 
     1  부모글1      1      0      0 
 
      
 BBSNO  TITLE            GRPNO INDENT ANSNUM 
 -----  -----            ----- ------ ------ 
     4  부모글4            4      0      0    
     3  부모글3            3      0      0      
     2  부모글2            2      0      0 
     1  부모글1            1      0      0 
       
 
4) 부모글(일반적인 글) 등록 
 
INSERT INTO bbs(bbsno, wname, title, content, passwd, wdate, 
grpno)  
VALUES((SELECT NVL(MAX(bbsno), 0) + 1 as bbsno FROM bbs), 
'왕눈이', '부모글3', '내용', '123', sysdate,
(SELECT NVL(MAX(grpno), 0) + 1 as grpno FROM bbs)
);                 
 
         
SELECT bbsno, title, grpno, indent, ansnum 
FROM bbs  
ORDER BY grpno DESC, ansnum ASC; 
  
     
5) 답변처리
--read(부모의 title,grpno,indent,ansnum) : 첫번째
select bbsno, title, grpno, indent, ansnum
from bbs
where bbsno=2 --부모의 글
 
 BBSNO TITLE   GRPNO INDENT ANSNUM
 ----- ----- - ---- ------ ------
     2 부모글1       2      0      0
     
--답변등록(부모의grpno,부모+1 -> indent,ansnum): 세번째
INSERT INTO bbs(bbsno, wname, title, content, passwd, wdate, 
grpno,indent,ansnum)  
VALUES((SELECT NVL(MAX(bbsno), 0) + 1 as bbsno FROM bbs), 
'아로미', '부모글1 답변글2', '내용', '123', sysdate,2,1,1);
 
     
--부모글의 2차이상의 답변인 경우 ansnum(답변의 순서) 재정렬 :두번째
UPDATE bbs 
SET ansnum = ansnum + 1 
WHERE grpno=2 AND ansnum > 0; 
 
 
--------------------------------------------------------------------      
 
  
9. 검색 글 목록(S:Search List), title 컬럼에 '제목'이란  
   단어가 들어가 있는 레코드 검색 
    
  
기타)  
- WHERE title LIKE '%독도%': 독도라는 문자열이 발견되면 전부 해당(*)  
- WHERE title LIKE '독도%' : 독도로 시작하는 문자열 검색 
- WHERE title LIKE '%독도' : 독도로 끝나는 문자열 검색 
- WHERE title LIKE '독도'  : 독도와 일치하는 문자열 검색 
- WHERE title = '독도'     : 독도와 일치하는 문자열 검색, LIKE '독도' 동일 
- WHERE title = '__독도'   : 한국독도, 동해독도와 같은 패턴의 문자열 검색 
 
 
1) 성명 검색 글 목록(S:Search List) 
SELECT bbsno, wname, title, content, passwd, viewcnt, wdate, grpno, indent, ansnum 
FROM bbs  
WHERE wname LIKE '%왕눈이%' 
ORDER BY bbsno DESC;  
 
 
2) 제목 검색 글 목록(S:Search List) 
SELECT bbsno, wname, title, content, passwd, viewcnt, wdate, grpno, indent, ansnum 
FROM bbs  
WHERE title LIKE '%독도%' 
ORDER BY bbsno DESC;  
 
 
 
3) 내용 검색 글 목록(S:Search List) 
SELECT bbsno, wname, title, content, passwd, viewcnt, wdate, grpno, indent, ansnum 
FROM bbs  
WHERE content LIKE '%독도%' 
ORDER BY bbsno DESC;  
 
 
 
4) 파이프 기호를 통한 SQL 결합 
SELECT ('A' || 'B' || 'C' || 'D') as "grade" 
FROM dual; 
 
 grade 
 ----- 
 ABCD 
  
 
SELECT ('등록자: ' || wname) as "wname"  
FROM bbs; 
 
 wname 
 --------- 
 등록자: 홍길동 
 등록자: 홍길동 
 등록자: 홍길동 
 등록자: 홍길동 
 


----------------------------------------------파워복붙


[15][BBS] Design Pattern, DBOpen.java, DBClose.java, DTO: BbsDTO.java
01] 설계 

1. Design Pattern 
   list.jsp -> BbsDAO.java -> DBOpen.java, DBClose.java -> Oracle/MySQL DBMS 
                                                         안끊어주면 안됨!!
   
       


'ㅅ')crud는 dao가 함 :>


   

   




----------------------------------------------또 파워복붙



[02] DTO(Data Transfer Object, VO: Value Object) 생성 

   - DTO(Data Transfer Object, Value Object, Bean, Domain) 
     . 하나의 레코드를 객체로 저장합니다. 레코드가 10개이면 DTO(VO)객체도  
       10개가 생성됩니다. 
     . 필드들은 접근 제한자를 전부 private으로 지정합니다. 
     . oracle의 char, varchar, varchar2, date는 String으로 선언합니다. 
     . number(5)는 int로 선언합니다. 
     . number(5, 1)은 float 또는 double로 선언합니다. 정수 4자리, 소수점 이하 1자리
       number(전체 자리수, 소수점 이하 자리수)  - 요럴 때 정수 자리수는 맞춰줘야 함 !!! 소수점은 ㄱㅊ


     . 멤버 변수(필드)의 접근 메소드는 public으로 선언합니다. 
     . 필드의 주석은 '/** */'의 형태로 DOC 주석을 지정합니다. 

//이예~ 자바독'ㅅ'


     . SELECT된 레코드가 많은 경우 오라클은 SubQuery, MySQL은 limit등을 

       이용해서 레코드를 분할해서 가져옵니다.(Paging) 
//어 홈페이지 호스팅을 할 때 mysql이 더 편하댕 'ㅅ' - oracle이 지원을 안함 (가격창렬)      

   - DTO 생성 과정 

     1) 멤버 변수(필드) 선언, 멤버 변수(필드) 주석 처리 

     2) getter, setter 선언 



복붙복붙



이클립스 패키지도 잘 만들어줌 짱짱맨


public class BbsDTO { 

  /** 번호 */ 

  private int bbsno; 

  /** 글쓴이 */ 

이런 식으로 doc 주석을 쓰면 나중에 javadoc같은걸로 뽑으면 이쁩니다



----------------------------------------------------------------------------------복붙해서 끗'ㅅ'




이렇게 만들고




이렇게 씁니다.




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

전송 완료하고 close 하기!



jsp_bbs.zip










5. 수업

진도: 

hw: 


6. 할것


금요일이니까 크롬 초기화하고 갈 것

'Programming' 카테고리의 다른 글

160419: 26회차  (2) 2016.04.19
160418: 25회차  (0) 2016.04.18
160414: 23회차  (0) 2016.04.14
160412: 22회차  (0) 2016.04.12
160408: 20회차  (1) 2016.04.08
Posted by DAVID