Jsp - MVC model2,MVC2

2020. 8. 4. 09:49JSP-MVC model2

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
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
  <display-name>JSP_Model2_Basic</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
</web-app>

//--------------------------web.xml----------------------------------


import java.io.IOException;
 
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
 
@WebServlet("/HelloServlet")
public class HelloServlet extends HttpServlet {
 
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("HelloServlet");
    }
 
}
 
 
 
import java.io.IOException;
import java.io.PrintWriter;
 
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
@WebServlet("/Login.do")
public class LoginServlet extends HttpServlet {
 
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("로그인!");
        
        String id=request.getParameter("id");
        String pass=request.getParameter("pass");
        
        System.out.println("id= "+id+", pass= "+pass);
        
        PrintWriter out=response.getWriter();
        out.println("id= "+id+", pass= "+pass);
    }
 
}
 
 
 
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
/**
 * Servlet implementation class BoardWriteServlet
 */
@WebServlet("/Write.bo")
public class BoardWriteServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public BoardWriteServlet() {
        super();
        // TODO Auto-generated constructor stub
    }
 
    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        response.getWriter().append("Served at: ").append(request.getContextPath());
        
        doProcess(request, response);
    }
 
    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doProcess(request, response);
    }
    
    protected void doProcess(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("글쓰기");
    }
 
}
 
 
cs

 

MVC-model2를 배워보았는데 조금 어려운 개념이었다.

Controller와 Model, View 세 파트로 이루어진 구조인데 클라이언트들이 바로 Jsp파일을 만나지 않고 Controller와 만나서 View를 만나고 다시 돌아와서 Model 파트를 만나고 Model에서 DB와 연동 작업을 하는 구조였다.

 

View는 클라이언트에게 보이는 화면을 말하는 것이고 보통 jsp 파일을 보여주는 곳이다. Model은 화면에 보이기 위한 데이터를 처리하기 위한 부분인데 보통 DB와의 연결을 통해 데이터를 뽑아오는 공간이고, Controller는 클라이언트를 안내하는 역할이었다.

 

Model1에서 바로 Jsp 작업을 이때까지 하던 것처럼 바로바로 보이는 것이 아니라 중간에 Controller를 두고 작업과 공간을 분리시켜놓는 작업의 패턴인데 보통 규모가 큰 프로젝트를 할 때 사용되어진다. MVC-Model2를 사용하면 유지보수에 큰 절약을 가져오고 각각의 공간을 전문팀들이 맡을 수 있기 때문에 확실한 분업이 가능해 작업의 효율이 올라간다. 

 

작은 규모의 프로젝트라면 하던 대로 Model1 패턴을 사용해 바로 작업을 하면 되지만 유지보수를 할 때 많은 시간과 돈이 들어가기 때문에 대규모 프로젝트에서는 Model2 패턴의 작업을 한다.

 

web.xml에서 was에 필요한 정보를 전달하기 위한 배포 서술자 역할을 하기 때문에 이곳에서 간단한 정의를 해주고 넘어가면 된다. 간단하게 class를 만들듯이 자동완성 형태의 Servlet을 만들 수 있지만 처음이라 수동으로 직접 Servlet을 만들어 보았다. 마지막 부분은 자동완성으로 만들어 보았는데 doGet, doPost를 사용할 때 자동으로 적용 가능 한 메서드를 자동으로 만들어주고 하지만 똑같은 작업을 복붙으로 두 번 해야 하기 때문에 메서드를 따로 하나 만들어서 doGet, doPost에 호출만 해주고 따로 만든 메서드에서 작업을 해주면 간단하다.

 

어노테이션(@WebServlet("/XXX") 이 부분을 Servlet마다 지정해주면  지정된 주소로 가주게 하기 위한 명령어라고 생각하면 된다. 저곳에 웹상에서 주소창의 마지막 부분에 입력되는 주소를 받아주는 곳이라고 생각하면 편하다. 주소창에 어떤 곳으로 향하는지를 입력해주면 Servlet에서 보내주는 역할을 하는 곳이다.

 

Servlet에 맨 처음에 자동으로 정의된 long 형태의 상수는 버전이라고 생각하면 편하다. 작업의 변동 시마다 올려주는 곳이다.

 

따로 만든 메서드에서 jsp에서 하던 작업들을 하면 되는데 Servlet이기 때문에 request, response가 내장되어있지 않기 때문에 따로 파라미터로 호출을 해서 사용해야 하기 때문에 선언을 해놓았다.

 

점점 더 배워가면서 어려워지겠지만 분업이 확실히 된다면 더 편하기 때문에 좋은 방식인 것 같다.

'JSP-MVC model2' 카테고리의 다른 글

Jsp-MVC2 -DAO  (0) 2020.08.10
Jsp -MVC2- Action,ActionForward  (0) 2020.08.10
Jsp-MVC2-FrontController  (0) 2020.08.10
Jsp-MVC2,Connection Pool  (0) 2020.08.10
Jsp - MVC2, path 얻기,web.xml  (0) 2020.08.04