본문 바로가기
풀스택/servlet-jsp

servlet-jsp -guestbook1, 2(MVC) -mvc설명 보충완료

by woohyun22 2019. 2. 23.

mvc가 각자 나타내는 의미를 확실히 한번 정리하자. - 보충


클라이언트 요청을 받아 처리하여 응답하는 로직을 model,view,controller로 나누어 설계한다.

model - 애플리케이션 정보(데이터)를 처리하는 모듈(객체)                    - model      -  dao+vo - 데이터 처리

view - 텍스트, 체크박스, 입력창등과같은 인터페이스 요소를 나타낸다.     - view        - jsp        - 인터페이스

controller - 클라이언트 요청, model, view 사이의 상호동작을 관리한다.    -controller  - servlet    - 각각의 사이에서 상호동작관리


https://github.com/jeongwoohyunn/guestbook1

https://github.com/jeongwoohyunn/guestbook2


guestbook1 - jsp-form간 이동으로만 만든 형식


guestbook2 - servlet을 활용한 mvc형식 model-dao+vo,view-list.jsp,controller-servlet


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
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@page import="java.util.List"%>
<%@page import="com.douzon.guestbook.vo.GuestbookVo"%>
<%@page import="com.douzon.guestbook.dao.GuestbookDao"%>
<%
    GuestbookDao dao = new GuestbookDao();
    List<GuestbookVo> list = dao.getList();
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>방명록</title>
</head>
<body>
    <form action="<%=request.getContextPath() %>/add.jsp" method="post">
    <table border="1" width="500">
        <tr>
            <td>이름</td><td><input type="text" name="name"></td>
            <td>비밀번호</td><td><input type="password" name="pass"></td>
        </tr>
        <tr>
            <td colspan="4"><textarea name="content" cols="60" rows="5"></textarea></td>
        </tr>
        <tr>
            <td colspan="4" align="right"><input type="submit" value=" 확인 "></td>
        </tr
    </table>
    </form>
    <%
        int totalCount = list.size();
        
        int index = 0;
        for( GuestbookVo vo : list ) {    
    %> 
        <br>
        <table width="510" border="1">
            <tr>
                <td>[<%=totalCount - index++ %>]</td>
                <td><%=vo.getName() %></td>
                <td><%=vo.getRegDate() %></td>
                <td><a href="<%=request.getContextPath() %>/deleteform.jsp?no=<%=vo.getNo() %>">삭제</a></td>
            </tr>
            <tr>
                <td colspan="4">
                <%=vo.getMessage().replaceAll("\n""<br>"%>
                </td>
            </tr>
        </table>
    <%
        }
    %>
</body>
</html>
cs


<% %> jsp안에 자바 문법을 넣을 수 있다.

form action 에서 각각에 해당하는 url을 넣어준다.

위에 선언해준 리스트 vo를 활용한다. <%=vo.%>형식

38째줄 형식은 리스트를 활용한것? - 보충


1과 2가 같은 내용이지만 2가 servlet을 사용하기 때문에 2로 봤다.


2에서는 webutil과 servlet가 추가되었다.

webutils에서 forward(페이지 전환?)와 redirect(그대로)를 추가해준다 


주소 형식이 뒤에 servlet주소가 붙는다 

ex) http://localhost:8080/guestbook2/gb


GuestbookServlet.java -controller


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
package com.douzone.guestbook.servlet;
 
import java.io.IOException;
import java.util.List;
 
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 com.douzone.guestbook.dao.GuestbookDao;
import com.douzone.guestbook.vo.GuestbookVo;
import com.douzone.web.WebUtils;
 
@WebServlet("/gb")
public class GuestbookServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
 
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding( "utf-8" );
 
        //요청 분리(식별)
        String action = request.getParameter("a");
        
        if("deleteform".equals(action)) {
            WebUtils.forward(request, response, "/WEB-INF/views/deleteform.jsp");
        } else if("delete".equals(action)){
            String no = request.getParameter( "no" );
            String password = request.getParameter( "password" );
            
            GuestbookVo vo = new GuestbookVo();
            vo.setNo( Long.parseLong( no ) );
            vo.setPassword( password );
            
            new GuestbookDao().delete( vo );
            
            WebUtils.redirect( request, response, "/guestbook2/gb");
            
        } else if("add".equals(action)){
            String name = request.getParameter( "name" );
            String password = request.getParameter( "pass" );
            String content = request.getParameter( "content" );
            
            GuestbookVo vo = new GuestbookVo();
            vo.setName( name );
            vo.setPassword( password );
            vo.setMessage( content );
            
            new GuestbookDao().insert( vo );
 
            WebUtils.redirect( request, response, "/guestbook2/gb" );
        } else {
            /* default action : 디폴트 요청 처리(index) */
 
            GuestbookDao dao = new GuestbookDao();
            List<GuestbookVo> list = dao.getList();
            
            // 데이터를 request 범위에 저장
            request.setAttribute("list", list);
            
            // forwarding
            WebUtils.forward(request, response, "/WEB-INF/views/index.jsp");
        }
    }
 
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }
}
cs


위의 dao는 다음 mysite형식과 비슷하므로 마지막으로 거기서 정리한다 넘어가는거 포함~

728x90

'풀스택 > servlet-jsp' 카테고리의 다른 글

mysite2 제작 servlet -jsp->jstl -보충 필요  (0) 2019.02.23

댓글