[ITWILL : JSP]Javabean 6 : 게시판만들기(글쓰기)
ITWILL학원 : 27강 JSP기초 BY 정규태강사
1. 웹 개발의 기초 : CRUD
기본 로직 :
- 게시판 글쓰기 = 데이터입력
- 글 리스트 = 데이터검색
- 글 본문보기 = 데이터검색
- 글 수정 = 데이터 수정
- 글 삭제 = 데이터 삭제
추가할 로직 :
- 답글쓰기 (댓글과 다른 답글기능)
- 파일업로드 / 썸네일
위와 같은 두 개의 로직은 요구사항분석이라고도 부른다
1-1. 개발순서
- 사용자 요구사항 분석
- 데이터 테이블 설계 = DB
- 테이블생성 테이블명 itwill_board
- 글번호 : bno
- 글쓴이 : name
- 글 비밀번호 : pw
- 글 제목 : subject
- 글 내용 : content
- 조회수 : readcount
- 답글 : re_ref, re_lev, re_seq
- 글쓴날짜 : date
- 파일 : file
- varchar(200)를 쓰는 이유는
- 글쓴이의 IP주소 : ip
writeForm.jsp
작성writePro.jsp
작성BoardBean.java
생성BoardDAO.java
에서 getCon() DB연결메서드 구현BoardDAO.java
에서 insertBoard() 글쓰기메서드 구현
1-2. 데이터 테이블 설계 = DB
테이블생성 테이블명 itwill_board을 생성한 뒤 아래처럼 컬럼을 작성한다.
- 글번호 : bno - INT NOT NULL, PRIMARY KEY (
bno
)- 글번호는 AI(Auto Increment)를 해야한다 말아야한다는 의견이 분분하다. 실습에선 AI없이 진행.
- 글쓴이 : name - VARCHAR(45) NOT NULL
- 글 비밀번호 : pw - VARCHAR(45) NOT NULL
- 글 제목 : subject - VARCHAR(45) NOT NULL
- 글 내용 : content - VARCHAR(2000) NOT NUL
- 조회수 : readcount - INT NULL
- 답글 : re_ref, re_lev, re_seq - 세 컬럼 다 INT NULL
- 글쓴날짜 : date - DATE NULL
- 파일 : file - VARCHAR(200) NULL
- varchar(200)를 쓰는 이유는 파일은 DB가 아닌 서버에 저장되고 DB는 이름만 저장해놓기때문.
- 글쓴이의 IP주소 : ip - VARCHAR(45) NULL
1-3. writeForm.jsp
작성
1 | <fieldset> |
1-4. writePro.jsp
작성
글쓰기를 처리하는 페이지이다.
입력창에서 받은 데이터를 DB로 이동시킨 뒤 사용자는 글목록페이지로 이동
jsp:setProperty 의 동작방식
- String name = request.getParameter(“bno”)
- bb.setbno(bno)
- 모든 변수에 위의 1번,2번동작을 처리
전달정보 확인위한 출력
- System.out.println(bb)
- System.out.println(bb.toString())
- 위의 두 코드는 동일한 출력값을 가진다.
로그인한사람만 글쓸수있게 처리
1 | <%//1. 한글처리 |
1-5. BoardBean.java
생성
1 | //1번규칙만족 : 클래스는 public |
1-6. BoardDAO.java
에서 getCon() DB연결메서드 구현
드라이브로드, DB연결 메서드인 getCon()구현
getCon() 작성순서 : 리턴값없이 진행
- 라이브러리설치 (WEB-INF, LIB에 추가)
- /META-INF/context.xml 파일생성
- /WEB-INF/web.xml 파일수정
- DAO 처리
예외처리 throws 방법 : 메서드를 호출하는 시점에 예외처리를 함
1 | public class BoardDAO { |
1-7. BoardDAO.java
에서 insertBoard() 글쓰기 메서드 구현
insertBoard()메서드 구현
- if(rs.next())가 끝나는 종료되는 순간은?
- 글이 없으면 null인데 어떻게 조건문이 true가 되어 구현될수있을까?
- rs가 faluse가 되는 시점은 EOF만나는 순간이다.
- 즉, NULL이 있어도 진행된다.
- getInt()사용법 두가지
- getInt(컬럼명)사용 : num = rs.getInt(“max(bno)”)+1;
- getInt(idx)사용 : 둘다 동일한 결과. idx사용하면 컬럼명보다 데이터 처리속도도 빠르다- /getInt => 데이터 값을 리턴, 값이 SQL-NULL경우 0리턴
1 | //글쓰기 메서드 구현 |
2. 예외처리 차이점(try catch와 throws)
- try catch 방법
- throws 방법
자바 예외처리(try catch, throws)
try catch는 예외를 직접 처리하기 때문에 메서드를 호출해도 더 이상 예외처리를 할 필요가 없습니다.
하지만 throws같은 경우는 호출하는 쪽에다가 예외처리를 맡겨버리는(?) 느낌?
그래서 호출하는 메소드에 throws가 있으면
호출하는 쪽에서도 예외처리를 다시 해줘야되요!