Weekly I Learned (8월 1주차)

YEON·2022년 8월 1일
0

Weekly I Learned (2022)

목록 보기
15/15
그 주의 화요일, 금요일을 지정 날짜로 업데이트 합니다

1. 서블릿(Servlet)

Servlet 이란?

웹 프로그래밍에서 클라이언트 요청을 처리하고, 처리 결과를 클라이언트에 전송하는 기술이다.
쉽게 말하자면 자바를 사용해서 웹을 만들기 위해 필요한 기술이다.
웹 서버에서 정적인 페이지가 아니라 동적인 페이지를 제공하기 위해 서블릿을 활용한다.
Spring MVC에서 Controller로 이용되며, 사용자의 요청을 받아 처리한 후에 결과를 반환한다.

서블릿 특징

  • 클라이언트의 요청에 대해 동적으로 작동하는 웹 어플리케이션 컴포넌트
  • html을 사용해서 요청에 응답한다
  • Java thread를 통해 동작한다
  • MVC패턴중 Controller로 이용된다
  • HTTP 프로토콜 서비스를 지원하는 javax.servlet.http.HttpServlet 클래스를 상속받는다.(UDP보다 속도가 느림)
  • HTML 변경시 Servlet을 재 컴파일 해야한다

Servlet Container

서블릿을 관리해주는 컨테이너를 말한다. ex) 톰캣 (Tomcat)
서블릿 컨테이너는 클라이언트의 요청을 받아주고 응답 할 수 있도록 웹 서버와 소켓을 만들어 통신한다.
서블릿 컨테이너의 역할은 웹 서버와의 통신 지원, 서블릿 생명주기 관리, 멀티쓰레드 지원 및 관리, 보안 관리 등이 있다.

  • ex) 톰캣 (Tomcat)
    웹 애플리케이션 서버(WAS)중 하나로 자바 웹 프로그래머가 작성한 Servlet을 관리한다. (클라이언트가 어떤 요청(Request)을 했을 때, 어떤 Servlet을 실행할 것인지 제어한다.)

서블릿의 동작 방식

  1. 사용자(Client)가 URL을 입력하면 HTTP Request를 Servlet Container로 전송한다.
  2. 요청 받은 Servlet Container는 HttpServletRequest, HttpServletResponse 객체를 생성한다.
  3. web.xml을 기반으로 사용자가 요청한 URL이 어느 서블릿에 대한 요청인지 찾는다.
  4. 해당 서블릿에서 service 메소드를 호출한 후 GET, POST 여부에 따라 doGet() 또는 doPost()를 호출한다.
  5. doGet, doPost 메소드는 동적 페이지를 생성한 후 HttpServletResponse 객체에 응답을 보낸다.
  6. 응답이 끝나면 HttpServletRequest, HttpServletResponse 두 객체를 소멸시킨다.



2. POJO

스프링 주요 특징
1. POJO 기반의 구성
2. 의존성 주입(DI)을 통한 객체 간의 관계 구성
3. AOP 지원
4. 편리한 MVC 구조
5. WAS의 종속적이지 않은 개발 환경

스프링 주요 특징 중 하나는 'POJO 기반의 구성 ' 이라는 점이다.

POJO(Plain Old Java Object) 란?

객체 지향적인 원리에 충실하면서 환경과 기술에 종속되지 않고 필요에 따라 재활용될 수 있는 방식으로 설계된 오브젝트.
즉, 다른 클래스나 인터페이스를 상속/implements 받아 메서드가 추가된 클래스가 아닌 일반적으로 우리가 알고 있는 getter, setter 같이 기본적인 기능만 가진 자바 객체를 말한다.
POJO에 애플리케이션의 핵심로직과 기능을 담아 설계하고 개발하는 방법을 POJO 프로그래밍이라고 할 수 있다.

Spring 애플리케이션은 POJO를 이용해서 만든 애플리케이션 코드라, POJO가 어떻게 관계를 맺고 동작하는지를 정의해놓은 설계 정보로 구분된다.
Spring의 주요기술인 IoC/DI, AOP, PSA는 애플리케이션을 POJO로 개발할 수 있게 해주는 가능 기술이다.

POJO의 장점은 깔끔한 코드를 작성할 수 있고, 테스트를 간편하게 할 수 있으며, 객체지향적인 설계를 자유롭게 적용할 수 있다는 점이다. (객체지향 프로그램은 엔터프라이즈 시스템에서와 같이 복잡한 도메인을 가진 곳에서 효과적으로 사용될 수 있다.)




3. Java 포스팅 재정리

Java 학습에 대해서 포스팅을 재정리하였다.
해당 포스팅은 링크를 통해 확인할 수 있다.




✽ 이번 주 회고록







[참조]
https://kohen.tistory.com/29
https://dev-coco.tistory.com/163?category=1056309
https://jeong-pro.tistory.com/222 /Servlet
https://doing7.tistory.com/81 /POJO

profile
- 👩🏻‍💻

0개의 댓글