Servlet, controller, JSTL

haribo·2021년 3월 21일
0

Web

목록 보기
3/7

Intro


mvc 용어 정리

  • model 1 - jsp 스파게티 코드 mvc1

  • model 2 - servlet & jsp 역할을 나눠서 함 jsp - 출력, servlet - 데이터 가공 mvc2

  • model : beans

  • view : jsp

  • controller : servlet

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 임 ( 다 따로 날아감)

단일 : 같이감

profile
그림 그리는 백엔드 개발자

0개의 댓글