WIL - Optional, Web&Was, Maven, Thread&Suvlet

Jaa-van·2024년 1월 7일
0
post-thumbnail

Optional

Optional class
Optional - 값이 존재할 수도 있고 아닐 수도 있는 객체

java 8 에서 도입된 클래스
값이 있을 수도 없을 수도 있는 값을 나타내는 래퍼 클래스

  • null 을 다루는 유용한 방법 제공
    java 8부터 도입

1. of

Optional<String> optional = Optional.of("Hello, World!");

of => 주어진 값을 갖는 Optional 객체를 생성
주어진 값이 null 이면 'NullPointerException'

2. ofNullable

Optional<String> optional = Optiional.ofNullable(value);

ofNuillable => 값이 null 일 경우 비어있는 Optional 객체 생성
값이 있다면 주어진 값을 갖는 Optional 객체 생성

3. isPresent, ifPresent

optional.isPresent() /// 값이 존재하는지 여부 확인
optional.ifPresent(value -> Sout(value)); // 값이 존재할 경우에만 동작 수행

Web&Was

Web - 정적인 페이지 ( html css js 이미지 등 ) 을 보여준다

Was - Web 의 기능도 모두 수행할 수 있으면서 애플리케이션 로직을 수행할 수 있다

웹 시스템 구성

Was 와 DB 만으로 웹 시스템을 구성할 수 있음

장애 요인

  1. WAS 가 많은 부분을 담당, 과부화 우려
  2. WAS 가 가격적으로 비쌈
  3. WAS 장애시 오류 화면 노출 불가능

따라서

Web -> Was -> DB 로 구성하는 것이 일반적

기대 효과

  1. WAS 가 로직만 담당할 수 있음
  2. 서버 증설에 효과적 ( 정적 - Web 만 증설, 동적 - WAS 만 증설 )
  3. WAS 가 죽으면 Web 에서 오류 화면 HTML 노출 가능

Maven

https://mvnrepository.com/ - Central Repository

Central Repository 에 대부분의 library 가 있고 internet 연결을 통해서 local Repository 에 library 를 가져온다

local repository 는 .m2/repository 안에 사용하는 라이브러리들이 담기게 된다
-> 문제가 생길 경우 .m2 를 비우고 다시 설치하면 된다

archetype -> 프로젝트의 성격에 따라 이미 template 를 만들어 놨다..


Suvlet & Thread

application/x-www-form-urlencoded => 보통 post 방식으로 요청하면 이 방식으로 요청이 된

브라우저가 서버에 HTTP 메세지를 생성하여 전송

서블릿을 지원하는 WAS 에서는
초록색 칸을 제외한 모든 로직을 수행해줌

@WebServlet(name = "helloServlet", urlPatterns = "/hello")
public class HelloServlet extends HttpServlet {
    @Override
    protected void service(HttpServletReqyuest request, HttpServletResponse response) {
        // 로직
    }
}

urlPatterns(/hello) 의 URL 이 호출되면 서블릿 코드가 실행된다
HTTP 요청을 사용할 수 있는 HttpServletRequsest
HTTP 응답을 사용할 수 있는 HttpServletResponse

helloServlet 안에 실질 로직이 포함되어있게 됨

서블릿 컨테이너

tomcat 처럼 서블릿을 지원하는 WAS 를 서블릿 컨테이너 라고 함

서블릿 객체는 싱글톤으로 관리 ( 하나만 생성하고 모두 이 객체를 공유 )
-> request, response 객체는 요청마다 새로 만드는게 맞다

helloServlet 은 같은 로직이 들어있기 때문에 하나만 생성하고 재활용

공유 변수 사용 주의!!

  • 동시 요청을 위한 멀티 쓰레드 처리 지원

스레드

서블릿 객체를 호출해준다

애플리케이션 코드를 순차적으로 실행하는 것을 스레드 라고 한다

  • java 메인 메서드를 실행하면 main 이라는 이름의 스레드가 실행된다
  • 한번에 하나의 코드 라인만 수행
  • 동시 처리가 필요하면 스레드 추가 생성

0개의 댓글

관련 채용 정보