JSP&Servlet

[JSP]10. 게시판 기능

CodeJaram 2023. 7. 9. 09:45

JSP_10_게시판 기능

 

[환경설정]

파일업로드하는 라이브러리 cos.jar(2020.4) pom.xml에 추가하기

 




[게시판 실습]

  1. 게시글 등록하기

[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