220330 Model2_원글 작성
*** 게시판
- 주요 기능
1. Connection Pool
2. 답글 기능 -> ref:그룹번호 re_lev:답글 깊이 re_seq:답글 출력순서
3. 자료실 - 첨부파일 업로드, 다운로드 : cos 라이브러리 사용
4. request 객체 공유 설정
5. Controller 클래스 : Java Servlet
6. Model = Service + DAO
Service, DTO, DAO 클래스
7. View ( 화면 인터페이스 ) : EL , JSTL 사용
create table model2(
board_num number,
board_name varchar2(20),
board_pass varchar2(15),
board_subject varchar2(50),
board_content varchar2(2000),
board_file varchar2(50),
board_re_ref number,
board_re_lev number,
board_re_seq number,
board_readcount number,
board_date timestamp,
primary key(board_num)
);
create sequence model2_seq
start with 1
increment by 1
nocache;
* interface Action 에 action.execute로 통일성 있게 처리하기 위한 ActionForward execute 추상 메소드 생성
---> 반드시 interface Action 으로 정의할 것! 추상 메소드니까!
* ActionForward 에 포워딩 방식을 설정할 boolean형 redirect, 포워딩할 페이지명을 설정할 String형 path 변수를 생성
---> 두 변수는 private이므로 getter, setter를 추가로 생성해줄 것.
* Action.execute 메소드 사용 시 try catch 예외처리 -> 왜냐면 추상메소드 만들 때 throws Exception을 달아놨거든... forward는 안 해도 됨 근데 action은 해야 됨!
+원글 작성
qnd_board_write.jsp : <form action="<%=request.getContextPath() %>/BoardAddAction.do" method="post" enctype="multipart/form-data">
↓
BoardFrontController.java : action= new BoardAddAction();
↓
BoardAddAction.java -> 입력받은 정보 DTO에 저장 후 통째로 DAO에 넘겨 insert 처리 -> forward.setPath("./BoardListAction.do"); 리턴
↓
BoardFrontController.java : forward.setPath("./board/BoardListAction.java");
↓
BoardListAction.java (이하 글목록)
BoardAddAction.java
- 첨부파일 저장할 경로, 파일 사이즈 지정
String path=request.getRealPath("boardupload");
int size=1024*1024; //단위가 KB -> 제곱이면 MB 즉 1MB
- 파일 업로드 (객체 생성과 함께 업로드됨)
MultipartRequest multi=new MultipartRequest(request,
path, //업로드 경로
size, //파일 크기
utf-8", //파일명 (한글일 경우) 인코딩
new DefaultFileRenamePolicy()); //중복 파일명 해결
- 폼에서 받은 값을 dto에 저장
단, 첨부파일이 포함되어 있기 때문에 multi.getParameter 사용해야 함!!
BoardBean board = new BoardBean();
board.setBoard_name(multi.getParameter("board_name")); //String
...
board.setBoard_file(multi.getFilesystemName("board_file")); //파일명은 이렇게 가져와야 함
- dto를 매개변수로 넣어 DAO로 -> insert 처리
- 포워드 지정
ActionForward forward = new ActionForward();
forward.setRedirect(false);
forward.setPath("./BoardListAction.do"); //controller로 돌아가고 거기서 view로 옮겨줄 것