수업/정리

220330 Model2_원글 작성

jumphare 2022. 3. 30. 21:43

*** 게시판

- 주요 기능
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로 옮겨줄 것