서블릿 실습 진행을 위해 다음과 같이 스프링 부트를 설정한다. Project - Gradle Groovy Project Language - Java Spring Boot - 2.4.x - 3.x로 설정할 경우 자바 17 이상이 필요하다(아닌 경우 Gradle부터 에러 발생) -> 전에 스프링 실습할때 여기서부터 삽질하게 된 ㅠㅠ Packaging : War Jar에서는 JSP 실행이 안된다, Jar는 내장 Tomcat 사용시 바로 돌릴 수 있다는 장점이 있다. War도 톰캣으로 돌릴 수 있긴 한데 별도로 톰캣을 설치하는 경우 사용한다. 사실 스프링 부트가 없어도 서블릿 실습을 하는데는 문제가 없다 -> 사실 문제가 있다, 코드가 안돌아가진 않는데 코드 실행을 위한 환경설정(Tomcat 등)만 한내잘 걸리..
스레드 - 애플리케이션 코드를 하나하나 순차적으로 실행하는 것! 자바 애플리케이션을 실행한다고 생각해도 -> 실행을 누르면 Main 스레드가 생성됨! 스레드가 없다면 자바 애플리케이션을 실행할 수 없음 쓰레드는 한번에 하나의 코드라인만 수행함 쓰레드는 한번에 하나의 코드 라인만 수행 동시처리가 필요한 경우 쓰레드가 추가로 생성됨! 단일 스레드를 사용하는 경우 단일 요청 - 요청 -> 스레드 할당 -> 서블릿 호출 -> 작업 완료 -> 스레드 반환 -> 스레드 유휴상태(IDLE 전환) 다중 요청 요청 1) 요청 -> 스레드 할당 -> 서블릿 호출 -> 호출 처리중 ----------------> Timeout! 요청 2) 요청 -> 스레드 대기 -> ----------------------------- T..
가정 - POST 방식으로 Form 데이터를 전송한다고 가정한다. 이때 서버에서 처리해야 할 업무는 다음과 같다 - TCP/IP 연결 대기, 소켓 연결 (3-Way Handshaking) - HTTP 요청 메시지를 파싱해서 읽기 - POST 방식, /save URL 인지 - Content-Type 확인 - HTTP 메세지 바디 내용 파싱 -> username, age 데이터를 사용할 수 있도록 파싱 - 저장 프로세스 실행 - 비즈니스 로직 실행 -> 데이터베이스에 저장요청 - HTTP 응답 메세지 생성 시작 -> HTTP 시작 라인, 헤더 생성 및 메세지 바디에 HTML 생성해서 입력 - TCP/IP에 응답 전달, 소켓 종료 위 항목들 중에서 비즈니스 로직 실행파트만 의미있는 비즈니스 로직이고 그 외는 ..
웹은 기본적으로 HTTP 프로토콜을 기반으로 한다. HTTP 프로토콜을 통해 모든것을 담아서 전송한다. -> HTML, TEXT, IMAGE, 음성, 영상, 파일, -> JSON, XML (As A API, 서버 간 데이터 송수신 관련) 거의 모든 형태의 데이터의 전송이 가능하다고 보면 된다! 웹서버 HTTP를 기반으로 동작하고 정적 리소스를 제공하는 주기능에 더해 일부 부가기능을 제공한다 정적 파일 HTML, CSS, JS, 이미지, 영상을 있는 그대로 띄운다! 예) NGINX, APACHE 웹 애플리케이션 서버(WAS-Web Application Server) 동일하게 HTTP를 기반으로 동작하고 웹서버 기능(정적 리소스 제공)에 더해 프로그램 코드를 실행해서 애플리케이션 로직을 수행한다 - 동적 H..