JSP_10_게시판 기능
[환경설정]
파일업로드하는 라이브러리 cos.jar(2020.4) pom.xml에 추가하기
[게시판 실습]
- 게시글 등록하기
[BoardWrite.jsp]BoardWriteController로 title, writer, filename, content 보내기
[BoardDTO]에서 필드와 생성자 만들기
- 필드: title, writer, filename, content, b_date
- 생성자: @Getter, @AllArgsConstructor//전체 생성자
@NoArgsConstructor //기본생성자, @RequiredArgsConstructor //필요생성자
[BoardDAO]에서 upload 메소드 만들기
- 연결하기: sqlSessionFactory.opensession(true):
- sql 실행하기: int row=session.insert(“upload”, dto)
- 종료하기: session.close();
- 메소드 타입 int, 리턴타입 row
[BoardMapper]에서 sql문장 작성하기(insert 태그)
[BoardWriteController]
- 파일을 가져올 수 있는 MultipartRequest 객체 사용하기
- MultipartRequest 객체의 매개변수
①request 객체
②saverPath(저장경로): wepapp-img 폴더
*BoardWriteController의 실행위치
D:\JspServlet\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\maven_MessageSystem_board\
*img 폴더의 위치
String savePath=request.getServletContext().getRealPath("img");
③maxSize: 파일 크기 제한
int maxSize=10*1024*1024; //10MB
④encoding: 인코딩 방식 지정
String encoding="UTF-8";
⑤중복제거: 파일이름이 중복될 경우 숫자를 뒤에 붙여 구별함
DefaultFileRenamePolicy rename= new DefaultFileRenamePolicy();
- 파일을 가져올 수 있는 MultipartRequest 객체 사용하기
MultipartRequest multi= new MultipartRequest(request, savePath, maxSize, encoding, rename);
- 데이터 받아오기(title, writer, filename, content)
String title=multi.getParameter("title");
String writer=multi.getParameter("writer");
//파일 이름 찾을 때는 getFilesystemName 객체 사용
String filename=multi.getFilesystemName("filename");
String content=multi.getParameter("content");
- upload 메소드 호출하기
int row=new BoardDAO().upload(new BoardDTO(title, writer, filename, content));
- 업로드 성공 실패 여부에 따라 페이지 이동
if(row>0) {
System.out.println("업로드 성공");
}else {
System.out.println("업로드 실패");
}
- 페이지 이동시키기
response.sendRedirect("./BoardMain.jsp");
[오류]
오류1: Mapped Statements collection does not contain value for upload
→파일 이름 찾는 객체를 잘못 사용
오류2: ORA-00911: invalid character →mapper에 있는 sql문장 ; 제거
2. 게시글 전체 조회하기
[BoardDAO]에서 showBoard 메소드 만들기
- 연결하기: sqlSessionFactory.opensession(true):
- sql 실행하기: ArrayList boardList=(ArrayList)session.selectList("showBoard");
- 종료하기: session.close();
- 메소드 타입 ArrayList<BoardDTO>, 리턴타입 boardList
[BoardMapper]에서 sql문 작성하기(select 태그)
[BoardMain]
- talib 지시자로 JSTL 사용하기, page 지시자로 EL 표현식 사용하기
- showBoard 메소드 가져오기, BoardDAO page 지시자로 import 하기
- 반복문을 사용하여 제목, 작성자, 시간 전체 출력하기
-게시글 번호는 시퀀스로 만든 번호가 아니라 status로 번호 매기기
3. 게시글 세부내용 조회하기
[BoardDAO]에서 showOne 메소드 만들기
- 연결하기: sqlSessionFactory.opensession(true):
- sql 실행하기: BoardDTO board=session.selectOne("showOne", num);
- 종료하기: session.close();
- 메소드 타입 BoardDTO, 리턴타입 board
[BoardMapper]에서 sql문 작성하기(select 태그)
[BoardMain]
- 제목을 클릭하면 [BoardDetail.jsp]로 페이지 이동
- 쿼리스트링 방식으로 게시글 번호(pk) 값 전송하기
[BoardDetail]
- talib 지시자로 JSTL 사용하기, page 지시자로 EL 표현식 사용하기
- BoardDAO page 지시자로 import 하기
- showOne 메소드 가져오기, 전송한 num값 받아오기
<c:set var="board" value="${BoardDAO.showOne(param.num)}"></c:set>
- 제목, 작성자, 내용 출력: ${Board.title} ${Board.writer} ${Board.content}
- 파일 다운로드 기능
- 이미지 출력
'JSP&Servlet' 카테고리의 다른 글
[JSP]11. FrontController 패턴 (0) | 2023.07.10 |
---|---|
[JSP]9. 회원정보 관리 (0) | 2023.07.06 |
[JSP]8. lombok (0) | 2023.06.30 |
[JSP]7. Mybatis 로 JDBC 구현하기 (0) | 2023.06.29 |
[JSP]6. Maven&Mybatis (0) | 2023.06.28 |