수,목 평가가 있어서... 해당 내용은 주말에 올리겠습니다.
게시판 페이징, 비밀번호 암호화(BCrypt, SHA256)를 해야하는데.. 자꾸 안드로이드 때도 그렇고 안배운거 시험에 내시니까 힘드네요 ㅎㅎ..그래도 해봐야죠!
------------------------------
[MVC Model2 적용 게시판)
게시판 구조
1. 기존 main.jsp에서 게시글 리스트로 가는 button을 추가한다.
1) <c:url value="/board/list.do" var="burl">
(1) /board/list.do 라는 값을 burl 이라는 변수에 넣는 것입니다.
2) onclick="location.href='${burl}'">
(1) 버튼을 눌렀을 때 {burl}의 주소로 갑니다.
2. WebContent\property/commandHandlerURI.properties에 board 주소들을 추가합니다.
commandHandlerURI.properties
1) /board/list.do=board.command.BoardListHandler
(1) /board/list.do 는 board.command.BoardListHandler 경로로 간다는 의미입니다.
3. board 테이블을 생성합니다. (mySQL)
create table board (
num integer(5) primary key auto_increment,
pass varchar(30),
name varchar(30),
email varchar(30),
title varchar(50),
content varchar(1000),
readcount integer(4) default 0,
writedate timestamp default current_timestamp );
4. board.dto.BoardVO.java (자바빈) 을 생성합니다.
1) 생성한 board 테이블과 똑같이 변수들을 입력한 후 Getter/Setter 들을 생성합니다.
(해당 클래스 빈공간 우클릭 > source 클릭 > Generate Getter and Setter 클릭)
5. util.DBManager.java 를 생성합니다. (JDBC 를 관리하는 클래스입니다.)
1) DBManager는 getConnection(), close(conn, stmt, rs) close(conn, stmt), clolse(rs)를
가지고 있습니다. 자원을 반납해주는 메소드입니다.
6. board.dao.BoardDAO.java 클래스를 생성합니다. ( Database Access Object )
BoardDAO 1
BoardDAO 2
BoardDAO 3
1) BoardDAO는
List 형태로 게시판들을 가져오는 selectAllBoards()
새로운게시판을 DB에 삽입하는 insertBoard()
게시글 조회 수를 갱신하는 updateReadCount()
게시판 글 상세 내용을 보여주는 selectOneBoardByNum()
게시판 생성 시 작성했던 Password를 체크하는 checkPassWord()
게시판을 삭제해주는 deleteBoard() 가 있습니다.
2) List<BoardVO> selectAllBoards()
(1) num을 기준으로 내림차순 정렬(desc)을 하여 board를 조회한 것을 List<BoardVO> 에 넣습니다.
(2) rs.next()로 BoardVO 들을 하나 씩 커서처럼 찍어서 list에 add합니다.[list.add(bVO)]
(3) 여기서 중요한건 자원을 반납하여야 하는데, try( Connection ~ stmt.executeQuery(sql) )
안에다가 넣어주면 자동으로 종료되므로 따로 close()를 할 필요가 없습니다.
※ PreparedStatement 와 Statement의 차이
(갑자기 문득 궁금해져서. IT개념 칸에 따로 정리해서 올리겠습니다.)
[JAVA] PreparedStatement 와 Statement 차이점 알아보기
Statement 와 PreparedStatement SQL 을 실행할 수 있는 객체입니다. Statement 1. 단일로 사용될 때 빠른 속도를 지닙니다. 2. 쿼리에 인자를 부여할 수 없습니다. 3. 매번 컴파일을 수행해야 합니다. PreparedSt..
mozi.tistory.com
7. BoardListHandler.java (MVC 중 C)를 작성합니다.
( 요청된 URI 에 대한 파라미터(정보)를 가지고 ControllerUsingURI.JAVA에 넘기는 클래스입니다.)
BoardListHandler.java
1) Handler에 대한 메소드 설명(?)은 저번 https://blog.naver.com/tnwnsrla/222377329824
64일차에서 자세히 적어놨으므로 생략하겠습니다.
8. board/boardList.jsp 를 작성합니다. (MVC 중 View)
boardList.jsp
1) BoardListHandler.java에서 setAttribute 한 boardList(items)를 가져와 var="board"에 넣습니다.
2) {board.num}으로 boardList(items) -> board -> board 의 num == board.num을 가져오는 것입니다.
3) view.do?num 은 view.do 페이지에서 num={board.num}으로 파라미터를 받아 해당
{board.title}(게시판제목) 를 클릭하면 해당 게시글 내용을 보여주는 페이지로 가게 하는 것입니다.
9. BoardWriteHandler.java를 생성합니다.
BoardWriteHandler.java
10. boardWrite.jsp 를 생성합니다.
boardWrite.jsp
11. js/board.js 를 작성하여 유효성 검사에 대한 사항들을 작성합니다.
board.js
12. BoardViewHandler.java를 작성합니다.
BoardViewHandler.java
1) 사용자가 Board.Title 을 클릭하였을 때 보여지는 화면이므로 게시글 조회수가 올라가야합니다. 그래서
bDao.updateReadCount(num)이 존재합니다.
13. boardView.jsp를 작성합니다.
boardView.jsp
14. BoardCheckPassHandler.java 를 작성합니다.
BoardCheckPassHandler.java
1) req.getParameter("pass")로 해당 게시물에 대한 pass워드 값을 받아오고 새로 입력하는 password 와
동일한지 비교합니다. bVo.getPass().equals(pass)
15. boardCheckPass.jsp 를 작성합니다.
boardCheckPass.jsp
16. checkSuccess.jsp를 작성합니다.
checkSucces.jsp
1) boardView.jsp 에서 '게시글 수정'과 '게시글 삭제' 버튼을 보시면 open_win 으로 버튼을 눌렀을 때
check_pass.do 로 이동하면서 board.num 값을 파라미터로 주고 update, delete name을 줍니다.
(check_pass.do 에서 비밀번호 대조)
2) update, delete name을 if문으로 판단하여, 해당 name 에 맞는 update.do 와 delete.do 로
보내면서 param.num 을 가져옵니다.
17. BoardUpdateHandler.java를 생성합니다. (게시판 수정)
BoardUpdateHandler.java
1) processSubmit() == "POST" 로 수정을 하였다면 response.sendRedirect("list.do")로
다시 게시글리스트로 보내주는 것이 중요합니다.
18. boardUpdate.jsp 를 생성합니다. (게시판 수정 View)
boardUpdate.jsp
19. BoardDelteHandler.java를 생성합니다. (게시판 삭제)
BoardDeleteHandler.java
1) BoardUpdateHandler.java 와 마찬가지로 작업을 완료한 후 res.sendRedirect("list.do")로
보내는 것이 중요합니다.
끝.
'컴퓨터학원(복습)(수료)' 카테고리의 다른 글
자바(JAVA)기반 안드로이드 웹&앱 개발 67일차 (평가 2일차) (0) | 2021.06.03 |
---|---|
자바(JAVA)기반 안드로이드 웹&앱 개발 66일차 (평가 1일차) (0) | 2021.06.02 |
자바(JAVA)기반 안드로이드 웹&앱 개발 64일차 (MVC Model2 적용 회원관리, 필터) (0) | 2021.05.31 |
자바(JAVA)기반 안드로이드 웹&앱 개발 63일차 (2)(이어서 파일 업로드, 쇼핑몰 관리자 애플리케이션, MVC 패턴) (0) | 2021.05.30 |
자바(JAVA)기반 안드로이드 웹&앱 개발 63일차(이어서 파일 업로드, 쇼핑몰 관리자 애플리케이션) (0) | 2021.05.29 |