용어 정리
View, Model, Controller
용어 | 내용 |
View | 사용자에게 보여줄 UI 또는 사용자가 보게될 화면 |
Model | 백그라운드에서 동작하는 로직 처리(알고리즘, DB와 상호작용, 데이터 처리 등) |
Controller | 사용자의 입력처리와 흐름 제어(사용자 요청화면 처리, 화면 로직처리 부분) |
위 세 가지의 용어를 줄어서 MVC라고 한다.
프레젠테이션 로직, 비즈니스 로직
- 프레젠테이션 로직 : 사용자 인터페이스와 관련된 작업을 처리하는 부분을 의미
프레젠테이션 로직은 사용자가 애플리케이션과 상호 작용할 때 발생하는 이벤트를 처리하고, 화면에 데이터를 표시하고, 사용자 입력을 유효성 검사하며, 사용자에게 응답을 제공하는 역할을 한다. - 비즈니스 로직 : 실제로 수행되는 작업이나 연산을 정의하는 부분을 의미
이는 애플리케이션의 핵심 기능과 규칙을 결정하며, 데이터 처리, 데이터 검증, 계산, 규칙 적용 등을 포함한다. 비즈니스 로직은 주로 사용자 요구사항을 충족시키기 위해 애플리케이션이 수행하는 실질적인 작업들을 정의한다.
자바 빈 클래스와 서블릿 클래스
Bean
- 데이터 구조를 정의한 클래스
- 데이터들을 private으로 선언하고 getter와 setter 메소드를 생성해놓은 형태의 자바 표준 데이터 구조를 뜻한다.
public class Person {
private String name;
private String number;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
}
Servlet
- 서블릿은 서블릿 클래스로부터 만들어진 객체를 의미
모든 서블릿 객체를 서블릿이라고 하지 않음
웹 서버가 서블릿 클래스를 가지고 서블릿 객체를 만들고 그 객체를 초기화해서 웹 서비스를 할 수 있는 상태로 만드는 작업을 거친 것을 서블릿이라고 한다. - 클라이언트의 요청을 받아 처리하고 그 결과 값을 출력하여 웹 페이지를 생성하기 위한 자바 코드
- JSP와 동일한 기능을 수행한다.
- JSP는 HTML 문서에 자바 코드를 삽입한 파일이라고 한다면, 서블릿은 자바의 HttpServlet 클래스를 상속받은 자바 코드를 삽입한 파일이다.
- 자바 코드와 다른 점은 main() 메서드를 쓰는 대신 service(), doGet(), doPost() 메서드를 HttpServlet 객체에서 오버라이드한다는 것이다
Servlet | JSP |
자바 코드 안에 HTML 포함 | HTML 문서 안에 Java코드 포함 |
package org.apache.jsp;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.jsp.*;
public final class exercise1_jsp extends org.apache.jasper.runtime.HttpJspBase
implements org.apache.jasper.runtime.JspSourceDependent,
org.apache.jasper.runtime.JspSourceImports {
//중간 생략......
public void _jspService(final javax.servlet.http.HttpServletRequest request, final javax.servlet.http.HttpServletResponse response)
//중간 생략...
out.write("\r\n"); //html 코드
out.write("<!DOCTYPE html>\r\n"); //html 코드
out.write("<html>\r\n"); //html 코드
out.write("<body>\r\n"); //html 코드
for(int i = 2; i < 10; ++i)
{
for(int j = 1; j < 10; ++j)
{
out.write("\r\n");
out.write(" ");
out.print(i );
out.write(' ');
out.write('*');
out.write(' ');
out.print(j );
out.write(' ');
out.write('=');
out.write(' ');
out.print( i * j );
out.write("<br>\r\n");
out.write(" ");
}
}
out.write("\r\n");
out.write("</body>\r\n");
out.write("</html>");
MVC 패턴
- MVC 패턴은 Model1 방식과 Model2 방식이 있다.
Model 1
- JSP(Controller + View)와 Java Bean(Model)로 구성하여 개발하는 형태
- Model 1 구조는 사용자의 요청과 응답(Controller + View)을 JSP가 모두 처리한다.
- DB 접근은 자바 빈 클래스로만 하도록 한 형태이다.
- 장점 : 쉽고, 개발 속도가 빠르다.
- 단점 : 유지보수가 어렵고 가독성이 좋지 않다., 프레젠테이션 로직과 비즈니스 로직이 혼합되어 혼잡하다.
- 간단한 개발이나 유지보수가 필요없는 개발에 좋다.
Model 2
- Model, View, Controller의 세 가지 요소로 모듈화하여 개발하는 형태
- Controller(servlet)을 통해 View(JSP)와 비즈니스 로직이 분리된 형태이다.
- 즉, Controller(servlet)는 서블릿 클래스를 이용하여 비즈니스 로직을 처리하고,
View(JSP)는 프레젠테이션 로직을 처리하고, DB접근 등은 Java Bean클래스를 이용하여 처리한다. - 더욱 간단히 말하면, JSP에서는 UI를 처리(HTML, CSS등)하고, 서블릿에서는 자바 코드로만 비즈니스 로직을 처리한다. DB에 접근할 때는 Bean을 이용.
- 장점 : 유지보수 및 확장이 좋고, 개발자와 디자이너 분업을 하기에 좋다.
- 단점 : 개발자들이 구조에 대한 이해가 필요함에 따라 구조 설계를 위해 개발 기간이 증가한다.
JSP 처리 과정
- 사용자의 웹 브라우저에서 test.jsp으로 해당 페이지를 요청을 한다.
- 사용자의 요청을 받은 웹 서버는 해당 페이지를 처리하기 위해서 JSP 컨테이너(JSP 또는 서블릿)에 처리를 넘긴다.
- 해당 JSP파일이 처음 요청이 된 것이라면 해당 jsp파일을 servlet으로 변환
- servlet(java)파일을 클래스 파일로 컴파일이 되는 과정
- servlet파일을 컴파일을 한다.
- 웹 서버는 웹 브라우저가 인식할 수 있는 HTML형태로 응답을 한다.
'Java Category > JSP' 카테고리의 다른 글
[JSP] 액션 태그(Action tag) (1) | 2023.11.27 |
---|---|
[JSP] 세션(Session) (1) | 2023.11.25 |
[JSP] 쿠키(Cookie) (2) | 2023.11.24 |
[JSP] 내장 객체 (2) | 2023.11.24 |
[JSP] 스크립트 태그(Script Tag) (1) | 2023.11.24 |