Intro
mvc 용어 정리
Servlet
이해
- 웹프로그래밍에서 클라이언트의 요청을 처리하고 그 결과를 다시 클라이언트에게 전송하는 HttpServlet 클래스의 구현 규칙을 지킨 자바 프로그래밍 기술
- @WebServlet("이름") : 클래스를 URL에 노출시키기 위한 경로, 명시되는 값을 Servlet Name이라고 한다. 이름 값 겹치면 Tomcat 자체에 문제가 생겨 페이지 실행 안되니 유의할 것.
객체 직렬화 아이디 (SerialVersionUID)
- 직렬화 : 객체를 스트림에 write 하기 위한 연속적인(serial) 데이터로 만드는 것 (객체를 컴퓨터에 저장했다가 꺼내 쓰기, 네트워크를 통한 컴퓨터 간의 객체 전송)
- why? : 서블릿은 클라이언트(브라우저)가 접속할 때 마다 매번 새롭게 컴파일 되지 않음. (톰캣이 구동되는 최초시점에 서블릿 클래스를 컴파일 하여 컨테이너(tomcat)에 저장하고 있다가 클라이언트가 접속하면 꺼내서 실행시킨다.)
- 자동발급을 JVM에서 해주지만 클래스 세부사항을 매우 민감하게 반영하기 때문에 컴파일러 구현체에 따라 달라질 수 있어 예상치못한 InvalidClassException을 유발할 수 있다. 따라서 명시적으로 선언해주는 것이 좋다.
Controller
JSP
- HTML 태그 처리가 서블릿보다 간결하다.
- JAVA 코드와 HTML 코드가 서로 섞여 유지보수에 좋지 않다.
Servlet
- 순수 Java 코드로만 작성되기 때문에 코드의 유지보수에 유리하다.
- HTML 태그를 문자열로 묶어 출력해야하기 때문에 많은 노력이 필요하다.
Controller? - 절충안!
- 프로그램의 비즈니스 로직은 서블릿에서 담당하고, 화면에 HTML을 출력하기 위한 기능은 JSP로 이관시켜서 프로그램의 로직과 화면의 뷰를 분리하는 처리방법
- 순수 JSP 파일만으로 작성되는 방식을 Model1 (혹은 Page Controller), Servlet과 JSP로 나누어 구현되는 방식을 Model2 (혹은 Server Controller)라 한다.
MVC 패턴의 이해
기존의 웹 페이지 개발 방식 - 부먹
- 빨간 박스 : 스파게티 코드, 유지보수 어려움
MVC 패턴 - 찍먹
-
요청을 받는 부분(JSP)과 응답을 처리하는 부분(Servlet)의 분리
-
컨트롤러는 Java 프로그램이 일련의 처리과정을 거쳐서 생성한 데이터를 View로 전달하여 화면 구현과 데이터 처리를 분리할 수 있게 하는 개발 패턴이다.
-
프로그램 로직과 UI가 분리되기 때문에 코드의 유지보수가 쉬워진다.
-
Dispatcher : 전달자. servlet 파일에서 JSP를 호출하고, 프로그램 흐름을 넘기기 위해 사용한다.
-
WEB-INF 폴더는 웹브라우저에 노출되는 영역이 아니다. view 파일을 숨겨주기 위해 사용한다.
JSTL
JSP Standard Tag Library
- JSP 표준 태그 라이브러리
- HTML과 비슷, Java 언어 프로그래밍적 문법 및 변수, 객체 등에 접근할 수 있는 기능 제공
- View인 JSP 파일에서 Java 문법 완전히 제거 가능 ⇒ 프로그래밍 부분과 UI 구현 부분 독립적으로 분리
Tip
- 람다식 JSTL 비슷함, JSTL을 더 많이씀
- uri 경로값 잘 지정해줄 것
- 원래 데이터는 서블릿, 출력은 JSP지만 JSTL 학습을 위해 JSP만 사용
C:if : JSTL에서 쓰는 if문, 퍼블리셔를 위한 if문
c? prefix="c"
Token : 쪼개는 단위
76p : url을 자동으로 만들어줄 수 있음
Tip
네트워크 : 패킷 관리 TCP/IP 임 ( 다 따로 날아감)
단일 : 같이감