[Spring MVC 1] 서블릿/JSP/MVC (1)
Dev/Spring2023. 1. 22. 00:05[Spring MVC 1] 서블릿/JSP/MVC (1)

♪ 학습 내용 회원 관리 웹 애플리케이션 구현 ( 서블릿 / JSP ) / MVC 패턴의 필요성 * 회원관리 웹 애플리케이션 - 서블릿 회원 저장소인 MemberRepository는 싱글톤 패턴 적용 --> new 연산자 사용x 서블릿 호출 시 HTML Form을 만들어서 응답! HTML을 응답하니 HTTP 응답 메시지의 헤더를 다음과 같이 설정해주었다. response.setContentType("text/html"); response.setCharacterEncoding("utf-8"); 서블릿 로직을 보면 전송 버튼 눌렀을 때 /servlet/members/save 호출 서블릿만으로 회원 저장 애플리케이션을 구현해보았다. 개발함에 있어 불편했던 점은 w.write()로 HTML 코드를 넣어주어야 했..

[Spring MVC 1] 서블릿 (4)
Dev/Spring2023. 1. 15. 22:34[Spring MVC 1] 서블릿 (4)

♪ 학습 내용 HTTP 응답( HTTP Response) 사용 * HttpServletResponse 다음 메서드들을 이용해 Response 정보를 설정할 수 있다. setStatus로 HTTP 응답의 상태 코드를 설정! 숫자로 (200, 300 ..) 설정 가능하지만 아래처럼 표시하는 것이 좋다. response.setStatus(HttpServletResponse.SC_OK); //괄호 안은 200을 의미 setHeader로 response에 헤더 정보 설정!! HTTP 응답에서는 주로 다음 세가지 데이터를 전달. 1. 단순 텍스트 2. HTML 3. HTTP API - Json * HTTP 응답 데이터 - 단순 텍스트 단순 텍스트를 전달할 때에는 아래처럼 간단하게 전달 가능하다! * HTTP 응답 ..

[Spring MVC 1] 서블릿 (3)
Dev/Spring2023. 1. 14. 00:52[Spring MVC 1] 서블릿 (3)

♪ 학습 내용 HTML FORM 데이터 전송 / 메시지 바디에 직접 데이터 전송 * HTML FORM 데이터 전송 HTML의 FORM에 클라이언트가 입력한 데이터를 서버로 전송 !! POST의 HTML FORM을 전송하면 HTTP 메시지가 만들어지며 전달된다. content-type은 바디에 포함된 데이터가 어떤 형식인지 알려주는 헤더이다. message body에 들어갈 데이터가 있으므로 content-type이 있다. (GET url 쿼리 파라미터 조회 시에는 body 내에 데이터가 없으므로 content-type도 없다) 해당 content-type 형식(x-www-form)은 데이터를 쿼리 파라미터 형식으로 전달한다 GET url 쿼리 파라미터 조회와 똑같은 쿼리 파라미터 형식으로 데이터가 전달되..

[Spring MVC 1] 서블릿 (2)
Dev/Spring2023. 1. 13. 18:52[Spring MVC 1] 서블릿 (2)

♪ 학습 내용 HTTP 요청 메시지를 통한 데이터 전달 / GET - 쿼리 파라미터를 이용한 방식 * HTTP 요청 데이터 전달 HTTP 요청 메시지를 통해 클라이언트에서 서버로 데이터를 전달하는 방식은 다음 3가지를 주로 사용!! 1. GET 메서드 - 쿼리 파라미터 이용 2. POST 메서드 - HTML From 데이터를 HTTP 메시지 바디에 쿼리 파라미터 형식으로 전달 3. HTTP 메세지 바디에 데이터를 직접 담아 요청 ex) json, sml, text ...etc * GET - 쿼리 파라미터 전달 url의 쿼리 파라미터를 이용해 전달한다 "http://localhost:8080/request-param?username=hello&age=20&username=hello2" 서블릿 매핑(urlP..

[Spring MVC 1] 서블릿 (1)
Dev/Spring2023. 1. 11. 18:25[Spring MVC 1] 서블릿 (1)

♪ 학습 내용 프로젝트 생성 / 서블릿 기초 / HttpServletRequest 사용 / PostMan * 프로젝트 생성 * 서블릿 동작 방식 스프링 부트를 실행하면 내부에 서블릿 컨테이너를 가지고 있는 내장 톰켓 서버를 생성한다. 서블릿 컨테이너는 서블릿을 생성하고 관리한다. 웹 브라우저에서 요청이 들어오면 WAS는 위 그림과 같이 request, response객체를 생성, 해당하는(uri 매핑) 서블릿에게 객체를 넘겨 서블릿 내부 메서드를 실행한다. 서블릿은 파라미터로 들어온 HttpServletRequest와 HttpServletResponse를 가지고 비즈니스 로직(service 메서드)을 실행. 그 과정에서 response 객체에 필요한 데이터를 담는다. 로직 종료 후에는 WAS가 이 res..

[Spring MVC 1] 웹 애플리케이션의 이해
Dev/Spring2023. 1. 7. 21:22[Spring MVC 1] 웹 애플리케이션의 이해

♪ 학습 내용 WAS / 서블릿(컨테이너) / 멀티쓰레드 / HTTP API / SSR / CSR 등 간단한 개념 * 웹 애플리케이션 서버(WAS) 웹 서버는 정적 리소스를, WAS(웹 애플리케이션 서버)는 애플리케이션 로직을 수행한다. 물론 웹 애플리케이션 서버에서도 웹 서버의 기능을 제공하기에 둘의 경계는 모호하다. 하지만 애플리케이션 코드를 실행하는데 특화되어 있는 것이 WAS. 웹 시스템은 최소한으로는 WAS와 DB로 구성되어있다. 이때 WAS에 많은 역할이 부여되어 과부하될 우려가 있어, 웹 서버를 따로 두어 정적 리소스를 처리하게끔! 만약 동적인 처리가 필요하다 -> 웹 서버가 WAS에 요청 위임 이렇게 웹 시스템을 구성하면 WAS나 DB에 장애가 나도 웹 서버가 오류화면을 제공할 수 있다. ..

[HTTP] HTTP 헤더 (3)
Dev/HTTP2023. 1. 3. 22:11[HTTP] HTTP 헤더 (3)

♪ 학습 내용 캐시 / 검증헤더와 조건부요청 * 캐시 동작 웹 브라우저에 캐시가 없다면 같은 요청을 보내도 매번 계속 서버로부터 데이터를 다운로드 받아야 한다. 느린 사용자 경험. 웹 브라우저에 캐시를 적용하면 다르다. 이 경우 첫 번째 요청에서는 당연히 서버로부터 데이터를 받아와야한다. 하지만 캐시를 적용하지 않았을 때와는 달리, 서버의 HTTP 응답 메시지에 cache관련 헤더가 있고, 이 응답 결과를 웹 브라우저의 캐시 저장소에 저장하게 된다.(쿠키와 같은 원리) 그리고 두번째 요청을 보낼 때면 먼저 이 브라우저 캐시를 뒤지고, 같은 데이터가 있으면 캐시에서 조회한다. 이렇게 되면 네트워크를 사용하지 않아도 되고, 속도가 매우 빠르다. 빠른 사용자 경험. 평소에 웹 브라우저 중 한 번 들어갔던 곳은..

[HTTP] HTTP 헤더 (2)
Dev/HTTP2022. 12. 29. 20:05[HTTP] HTTP 헤더 (2)

♪ 학습 내용 전송 방식에 따른 헤더, 일반/특수 정보를 담은 헤더, 쿠키 * 전송방식에 따른 HTTP 헤더 HTTP 메시지 바디 내 데이터의 전송 방식은 여러 가지가 있다. 그리고 이 전송 방식 정보를 담는 헤더들도 여러가지이다. - 단순 전송 단순 전송 시에 메시지 바디 내 데이터의 길이를 Content-length 헤더로 넘겨준다. - 압축 전송 압축 전송 시에 압축 형식에 대한 정보를 Content-Encoding 헤더로 넘겨준다. - 분할 전송 " Transfer-Enconding: chunked " chunked -> 덩어리로 쪼개 분할 전송시에는 content-length 헤더가 없다. 왜? 예상이 가지도 않고, chunck 마다 안에 길이 정보가 포함되어있기 때문. - 범위 전송 서버에 데..

[HTTP] HTTP 헤더 (1)
Dev/HTTP2022. 12. 29. 18:27[HTTP] HTTP 헤더 (1)

♪ 학습 내용 HTTP 헤더 / 표현 헤더 / 협상 헤더 / 협상과 우선 순위 * HTTP 헤더(Header) HTTP 헤더는 HTTP 전송에 필요한 모든 부가 정보를 담고 있다. 과거에는 Entity 헤더 포함 4가지의 헤더로 분류 되었다. Entity 헤더는 HTTP 메시지 바디에 대한 정보를 가지고 있는 헤더이다. 요청이나 응답에서 메시지 본문 안에 'entity 본문'을 담아 전송하면 그 엔티티 본문의 데이터를 해석할 수 있도록 정보를 제공하는 것이 바로 Entity 헤더. 근데 헤더에 대한 이러한 분류에 변화가 생겼고 엔티티(Entity) -> 표현(Representation)으로 용어도 변하였다. 메시지 본문은 실제 데이터인 표현 데이터를 포함하고 이에 관한 정보를 표현 헤더가 제공!! 리소스..

[HTTP] HTTP 상태코드
Dev/HTTP2022. 12. 27. 22:06[HTTP] HTTP 상태코드

♪ 학습 내용 각 번호대의 HTTP 상태코드 / PRG * 상태코드란? 상태코드는 클라이언트가 서버로 보낸 요청이 어떻게 처리가 되었는지를 서버가 응답해주는 기능. 상태코드는 숫자로 이루어져 있고, 각 번호 대마다 의미하는 바가 다르다. * 1XX 대 상태코드 1XX대 상태 코드는 클라이언트의 요청이 수신되었고 현재 처리중이라는 의미이다. 실제로는 거의 사용하지 않는 상태코드라고 한다. * 2XX 대 상태코드 200번대 상태 코드는 요청이 성공적으로 처리되었음을 의미한다. - 200 OK 단순하게 요청이 성공되었음을 뜻한다. -201 Created 클라이언트의 요청이 POST 같은 메서드인 경우, 요청이 성공하면 서버에서 새로운 리소스가 생성된다. 이때 새로운 리소스 생성의 성공을 의미하고, 응답메시지에..

image