개발/코딩

[프로그래밍] 게시판 만들기 도전,220301,jsp 뷰

mabb 2022. 3. 1. 18:03
반응형

 (안녕하세요. 삶의 질을 높이고자 노력하는 영차영차입니다.
직장생활과 병행하여 22년3월을 기한으로 게시판 만들기에 도전해보고자 합니다.
해당 포스팅은 그 과정에 대한 순수 기록 목적입니다)

---------------------------------------------------------------------------------------------

 교재의 모델2, mvc 패턴 부분을 훑어봄.
서블릿은 컨트롤러로 자바빈, 로직처리 클래스 등을 컨트롤하여 값을 처리하고
JSP는 처리된 값을 받아 단순 뷰를 만드는 것으로.
JSTL과 EL에 대해 대충 보고 넘어갔었는데 다시 공부해야할 듯.

자바빈은 기존에 만들었던 데이터를 관리하는 클래스 VO(게터,세터)를 칭하는 표현이었음.

(자바빈, 로직처리클래스)  - 모델
(JSP) - 뷰
(서블릿) - 컨트롤러

자바빈 객체를 이용하여 로직처리클래스 DAO는 DB관련 기능 수행.
서블릿은 request에 따라 알맞은 모델로직을 처리하고 알맞은 뷰로 포워딩하여
reponse 할 수 있도록 컨트롤한다.

깃허브) 깃허브라는 것을 몇번 들어보았는데
코드를 저장 및 버전관리 기능이 가능한 것으로 알고 있다.
연습하면서 작성해보았던 코드들을 보관하는 것이 중요하겠다는 생각이 들었다.

 

서블릿에서 jsp로 포워딩을 해주었다.

 

 

컨트롤러 역할을 하는 서블릿. request GET요청을 받으면 dao의 selectBoard메서드를 호출하고
리턴받은 list를 TestJSP.jsp 에게 포워딩한다.

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
package com.tistory.mabb.freeboard.test;
 
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Date;
import java.util.ArrayList;
 
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
import com.tistory.mabb.freeboard.BoardVo;
import com.tistory.mabb.freeboard.dao.BoardDao;
 
public class TestServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
 
    public TestServlet() {
        super();
    
    }
 
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
            response.setContentType("text/html;charset=utf-8");
            PrintWriter out = response.getWriter();
            
            
            BoardDao dao = new BoardDao();
            ArrayList<BoardVo> list = dao.selectBoard();
            
            request.setAttribute("list", list);
            RequestDispatcher requestDispatcher = request.getRequestDispatcher("/TestJSP.jsp");
            requestDispatcher.forward(request, response);
                    
 
    }
 
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
    
        doGet(request, response);
    }
 
}
cs

 

TestJSP.jsp 는 포워딩할 때 request객체에 setAttribute 한 list를 getAttribute하여
for 문으로 list에 담긴 값들을 변수에 바인딩하고 바인딩한 변수를 이용해
테이블 raw를 한 줄 씩 만든다.

각각의 raw에 링크를 걸어서 서블릿에 POST요청 및 primarykey를 파라미터로 넘겨주면
서블릿에서는 넘겨받은 primarykey를 토대로 doa의 글내용select 메서드(아직 안만듦)
기능을 호출하여 값을 리턴받는다. 서블릿은 리턴받은 값을 '상세페이지.jsp'뷰에게 포워딩한다.
상세페이지.jsp는 포워딩받은 값을 getAttribute하여 꺼내고 페이지로 만든다.
삭제도 비슷한 로직일 것으로 생각함.
수정은 <input> 태그에 db에서 select해서 제목과 내용을 받고 이를 value에 넣어 input태그의
초기입력값으로 설정한다. 수정 완료 버튼을 누르면 POST 요청 및 primarykey.... 음

수정, 삭제, 상세페이지,  나중가면 댓글기능, 회원가입, 등등 수많은 기능을 넣어야할텐데
하나의 서블릿 doPOST에서 이 기능들을 다 어떻게 처리하여야 할까??
--> 아 서블릿을 여러개 만들어야하나보다. 
일단은 틈틈이 계속 공부를 하면서 진행해보자.

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
 
<%@page import="java.sql.Date"%>
<%@page import="java.util.List"%>
<%@page import="com.tistory.mabb.freeboard.BoardVo"%>
<%@page import="java.util.ArrayList"%>
<%@ 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>
<h1>영차영차게시판jsp</h1>
<hr>
 
<table>
<thead>
    <tr><th>번호</th><th>제목</th><th>작성자</th><th>날짜</th></tr>
</thead>
 
<%
     List<BoardVo> list = (List) request.getAttribute("list");
    for(BoardVo vo:list){
        int num = vo.getNum();
        String sub = vo.getSub();
        String writer = vo.getWriter();
        Date writetime = vo.getWritetime();
%>
<tbody>    
 <tr><td><%=num%></td><td><%=sub%></td><td><%=writer%></td><td><%=writetime%></td></tr>
</tbody>
<%
    }
%>
 
 
 
 </table>
 
</body>
</html>
cs
반응형