728x90
반응형
BoardController
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 | package controller; import java.io.IOException; import java.util.ArrayList; import java.util.List; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import dto.BoardDTO; @WebServlet("*.do") public class BoardController extends HttpServlet { private static final long serialVersionUID = 1L; // 클래스에서 변수는 생성만 해주고 다른곳(생성자)에서 값을 주는게 좋다. private int boardNum; private List<BoardDTO> boardList; public BoardController() { super(); boardNum = 1; boardList = new ArrayList<>(); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doProcess(request, response); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doProcess(request, response); } public void doProcess(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{ request.setCharacterEncoding("UTF-8"); response.setContentType("text/html; charset=UTF-8"); String requestURI = request.getRequestURI(); String contextPath = request.getContextPath(); String command = requestURI.substring(contextPath.length()); System.out.println("command = " + command); //응답 페이지 String page = ""; // 맨 밑 페이지 이동시 쓰는거. boolean isRedirect = false; if(command.equals("/boardList.do")) { request.setAttribute("list", boardList); page = "boardList.jsp"; } //글쓰기 페이지로 이동 if(command.equals("/regBoardForm.do")) { page="board_write_form.jsp"; } //글 등록 실행 if(command.equals("/regBoard.do")) { //데이터 받기 String title = request.getParameter("title"); String content = request.getParameter("content"); String writer = request.getParameter("writer"); String createDate = request.getParameter("createDate"); //위에서 전달받은 데이터를 갖는 게시글 생성 BoardDTO board = new BoardDTO(boardNum, title, content, writer, createDate); // BoardDTO의 첫번쨰 boardNum = 글번호 boardNum++; boardList.add(board); //page="boardList.jsp"; page ="boardList.do"; // 맨 밑 페이지 이동시 쓰는거. 일단 page이동 do로 끝내는것만. 기억하자. isRedirect = true; } //게시글 상세보기 if(command.equals("/boardDetail.do")) { int num = Integer.parseInt(request.getParameter("boardNum")); //게시글 목록에서 넘겨온 글번호와 같은 게시글 찾기. // boardList로 반복할거다. 반복해서 뽑으면 그게 BoardDTO. for(BoardDTO board: boardList) { if(board.getBoardNum() == num) { request.setAttribute("board", board ); } } page="boardDetail.jsp"; } //게시글 삭제하기 if(command.equals("/delete.do")) { //boardNum이라는 문자열을 받아온다. int형 변환을 함께해준다. int num = Integer.parseInt(request.getParameter("boardNum")); for(int i =0; i<boardList.size(); i++) { //리스트 뒤에 get은 순번. if(boardList.get(i).getBoardNum() == num ) { boardList.remove(i); } } //page="boarList.jsp"; 이렇게 들고가면 데이터 안가져가준다. 화며네 암것도안봉미. page="boarList.do"; } //게시글 수정 페이지로 이동 if(command.equals("/updateBoardForm.do")) { int num = Integer.parseInt(request.getParameter("boardNum")); for(BoardDTO board : boardList) { if(board.getBoardNum() == num) { request.setAttribute("board", board); } } //수정하고자 하는 게시글의 정보를 jsp에 보내줘야함. page = "update_board_form.jsp"; } //글 수정 if(command.equals("/updateBoard.do")) { String title = request.getParameter("title"); String writer = request.getParameter("writer"); String createDate = request.getParameter("createDate"); String content = request.getParameter("content"); int num = Integer.parseInt(request.getParameter("boardNum")); for(BoardDTO board : boardList) { if(board.getBoardNum()==num) { board.setTitle(title); board.setWriter(writer); board.setContent(content); board.setCreateDate(createDate); } } page="boarList.do"; //page = "boardDetail.do?boardNum=" + num; 왜 이거지? } // 페이지 이동. if(isRedirect) { response.sendRedirect(page); } else { RequestDispatcher dispatcher = request.getRequestDispatcher(page); dispatcher.forward(request, response); } } } | cs |
BoardDTO
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | package dto; public class BoardDTO { private int boardNum; private String title; private String content; private String writer; private String createDate; public BoardDTO(int boardNum, String title, String content, String writer, String createDate) { super(); this.boardNum = boardNum; this.title = title; this.content = content; this.writer = writer; this.createDate = createDate; } public int getBoardNum() { return boardNum; } public void setBoardNum(int boardNum) { this.boardNum = boardNum; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getContent() { return content; } public void setContent(String content) { this.content = content; } public String getWriter() { return writer; } public void setWriter(String writer) { this.writer = writer; } public String getCreateDate() { return createDate; } public void setCreateDate(String createDate) { this.createDate = createDate; } } | cs |
board_write_form
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <form action="regBoard.do" method="post"> <table> <tr> <td>제목</td> <td><input type="text" name="title"></td> </tr> <tr> <td>작성자</td> <td><input type="text" name="writer"></td> </tr> <tr> <td>작성일</td> <td><input type="date" name="createDate"></td> </tr> <tr> <td>내용</td> <td> <textarea rows="5" cols="50" name="content"></textarea> </td> </tr> </table> <input type="submit" value="글등록"> </form> </body> </html> | cs |
boardDetail
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> 글번호 : ${board.boardNum }<br> 제목 : ${board.title } <br> 내용 : ${board.content }<br> 작성자 : ${board.writer }<br> 작성일 : ${board.createDate }<br> <input type="button" value="삭제하기" onclick="location.href='delete.do?boardNum=${board.boardNum }';"> <!-- 어떤걸 삭제할건지 보드 번호를 가져가야해서 ?뒤에 문장이나옴. --> <input type="button" value="수정" onclick="location.href='updateBoardForm.do?boardNum=${board.boardNum }';"> <!-- 상세보기 페이지로 넘어갈때도 글번호 데이터를 넘겨서 가져가야해서 ?뒤에 문장을쓴다. --> </body> </html> | cs |
boardList
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> <style type="text/css"> table{ border: 1px solid black; border-collapse: collapse; text-align: center; width: 600px; } tr, td{ border: 1px solid black; } </style> </head> <body> <table> <colgroup> <col width="10%"> <col width="*"> <col width="15%"> <col width="15%"> </colgroup> <tr> <td>글번호</td> <td>제 목</td> <td>작성자</td> <td>작성일</td> </tr> <!-- a태그에서 데이터를 넘길때에는 ? 를 쓴다. boardNum이라는 글번호를 가지고 가겠다. --> <!-- 게시글 개수만큼 만들어줘야한다.taglib만들어주고. --> <c:forEach items="${list }" var="board"> <tr> <td>${board.boardNum }</td> <td><a href="boardDetail.do?boardNum=${board.boardNum }">${board.title }</a></td> <td>${board.writer }</td> <td>${board.createDate }</td> </tr> </c:forEach> </table> <input type="button" value="글쓰기" onclick="location.href='regBoardForm.do';"> </body> </html> | cs |
index
1 2 3 4 5 6 7 8 9 10 11 12 13 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <!-- 프로젝트 실행 시 바로 페이지 이동 --> <jsp:forward page="boardList.do"></jsp:forward> </body> </html> | cs |
update_board_form
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <form action="updateBoard.do" method="post"> <input type="hidden" name="boardNum" value="${board.boardNum }"> <table> <tr> <td>제목</td> <td><input type="text" name="title" value="${board.title }"></td> </tr> <tr> <td>작성자</td> <td><input type="text" name="writer" value="${board.writer }"></td> </tr> <tr> <td>작성일</td> <!-- read온리는 수정은 안되지만, 데이터가 넘어간다. --> <td><input type="text" name="createDate" value="${board.createDate }" readonly></td> </tr> <tr> <td>내용</td> <!--textarea는 value가 없다. 여는태그, 닫는태그 사이에 넣어준다. --> <td><textarea rows="5" cols="50">${board.content }</textarea></td> </tr> </table> <input type="submit" value="글수정"> </form> </body> </html> | cs |
결과화면
728x90
반응형
'✨ Back-end > Servlet' 카테고리의 다른 글
[Servlet / JSP / SQL] 회원 관리 폼 만들기 (2) - INSERT(회원 등록) (0) | 2023.02.22 |
---|---|
[Servlet / JSP / SQL] 회원 관리 폼 만들기 (1) - CREATE (DB 테이블 생성) (0) | 2023.02.22 |
[Servlet / JSP] 게시판 만들기 -2 (글 수정U, 글 삭제D) CRUD (0) | 2023.02.18 |
[Servlet / JSP] 게시판 만들기 -1 (글 쓰기R, 글 등록C) CRUD (0) | 2023.02.18 |
[Servlet] Servlet 하나로 여러 JSP 데이터 주고 받기 (0) | 2023.02.18 |
댓글