자바생
article thumbnail
MVC 1 - 서블릿
Spring 강의/스프링 MVC 1 2021. 9. 13. 20:20

HTTP 요청 데이터 클라이언트에서 서버로 http 요청 메시지를 통해 데이터를 전달하는 방법을 크게 3가지로 나눠볼 수 있다. 1. GET - 쿼리 파라미터 2. POST - HMTL Form 3. HTTP message body GET - 쿼리 파라미터 이 방법은 url의 뒤에 ? 붙이고 쿼리 파라미터를 작성하면 된다. http://localhost:8080/request-param?username=kim&age=20 이러한 방식으로 작성하게 되면 username에는 kim, age에 20이 저장된다. 그리고 content-type은 존재하지 않는다. username과 age를 파라미터라고 하는데, 파라미터를 조회할 수 있는 방법이 있다. 대체적으로 getParameter라는 메서드를 사용하여 파라미..

article thumbnail
MVC 1 - 웹 애플리케이션 이해
Spring 강의/스프링 MVC 1 2021. 9. 10. 23:09

웹 서버(WS) VS 웹 애플리케이션 서버(WAS) 웹 서버 웹 서버는 HTTP 기반으로 동작하고 정적 리소스를 제공한다. 정적 리소스란 정적 HTML, CSS, JS, 이미지, 영상 등을 말한다. 웹 애플리케이션 서버 웹 애플리케이션 서버는 HTTP 기반으로 동작하고 웹 서버 기능에 정적 리소스 제공한다. 즉, 애플리케이션 로직 수행을 한다. ex) 동적 HTML, 서블릿, JSP, 스프링 MVC 우리가 스프링 부트에서 사용하는 톰캣은 WAS 중 하나로 servlet container라 할 수 있다. 클라이언트가 request할 때, 어떤 servlet을 실행할 것인지 제어한다. 웹 시스템 구성 - WEB, WAS, DB WAS, DB만으로 시스템 구성이 가능하다. 즉, 위의 사진과 다르게 HTML, ..

article thumbnail
HTTP 웹 기본 지식 - HTTP 헤더 2

캐시 클라이언트가 서버에 이미지 파일을 요청한다고 생각해보자. 캐시가 없을 경우에는 요청1을 통해 이미지 파일( HTTP헤더, HTTP 바디)을 서버로부터 전송받는다. 요청2를 통해 이미지 파일을 서버로부터 요청1과 같이 전송받는다. 그래서 요청할 때마다 데이터를 다운로드를 받아야하므로 브라우저 로딩 속도가 느려지게 된다. 캐시가 있을 경우에는 요청1을 통해 이미지 파일( HTTP헤더, HTTP 바디)을 서버로부터 전송받는다. 서버가 데이터를 전송할 때, 데이터를 브라우저 캐시에 저장한다. 요청2을 통해 이미지 파일을 전송받으려고 할 때, 캐시에 해당 파일이 존재하므로 캐시에서 데이터를 조회한다. 그래서 캐시 덕분에 캐시 가능 시간동안 네트워크를 사용하지 않아도 되므로 브라우저 로딩 속도가 캐시가 없을 ..

article thumbnail
HTTP 웹 기본 지식 - HTTP 헤더1 일반 헤더

표현 표현은 요청이나 응답에서 전달할 실제 데이터를 말한다. 표현은 표현 헤더와 표현 데이터를 합친 말로 표현 헤더는 표현 데이터를 해석할 수 있는 정보를 제공한다. 표현 헤더에는 type, encoding, language, length의 정보가 들어갈 수 있다. type은 이게 json인지 이미지인지 구별할 수 있는 정보를 제공한다. encoding은 표현 데이털르 어떤 식으로 압축했는지에 대한 정보를 제공한다. 옵션 중 하나인 identity는 압축을 하지 않는다. language는 데이터의 언어를 표현한다. length는 데이터의 길이, 바이트 단위를 표현한다. 협상 협상 헤더는 클라이언트가 선호하는 표현을 요청하는 것으로, 요청시에만 사용한다. Accept, Accept-Charset, Acce..

article thumbnail
HTTP 웹 기본 지식 - HTTP 상태코드

상태 코드 클라이언트가 요청을 보내면 응답을 하는데, 거기서 응답 코드에 따라 어떤 상태인지 나타내는 상태 코드라는 것이 있다. 1xx, 2xx, 3xx, 4xx, 5xx가 있는데 각각의 상태 코드는 뜻하는 바가 다르다. 그래서 해당 상태 코드를 보고 어떠한 점이 잘못된지 알고 수정하면 된다. 1xx 처리 중이라는 뜻으로 거의 사용하지 않는다고한다. 2xx 요청을 성공적으로 처리했다라는 뜻을 가진다. get을 이용해 멤버를 조회했을 때 응답 메시지에 200 OK를 볼 수 있다. post를 이용해 멤버를 등록하면 201 Created를 볼 수 있다. 여기서 생성된 리소스의 위치는 응답 메시지의 Location을 보면 알 수 있다. 202 Accepted는 요청이 접수됬는데 처리가 완료되지 않았다는 뜻이다...

article thumbnail
HTTP 웹 기본 지식 - HTTP 메서드 활용

앞에서 배운 HTTP 메서드들은 클라이언트에서 서버로 데이터를 전송할 때 각자의 쓰임새에 맞게 사용된다. HTTP 메서드 활용 강의 파트에서는 클라이언트에서 서버로 데이터를 전송할 때, 데이터 전달 방식과 그에 따른 상황에 따라 어떤 메서드가 사용이 되는지 배우게 된다. 데이터 전달 방식 데이터 전달 방식에는 크게 2가지가 있다. 쿼리 파라미터를 통한 데이터 전송 쿼리 파라미터란 우리가 앞에서 배운 ? 다음에 뭐가 나온 것들이라고 생각하면 된다. 주로 정렬 필터(검색어)에 사용된다고 한다. 아마 이건 우리가 검색창에 어떤 것을 검색하면 검색한 부분을 ? 뒤에 넣어서 데이터를 조회하는게 아닐까한다. 그래서 GET을 사용한다고 말하는 것 같다. 메시지 바디를 통한 데이터 전송 회원 가입, 상품 주문 등 다양..

article thumbnail
HTTP 웹 기본 지식 - HTTP 메서드

API URI 설계 URI를 설계할 때 가장 중요한 점은 리소스 식별이다. 회원 조회, 등록, 수정, 삭제가 리소스가 아니라 회원 자체가 리소스이다. 그래서 회원 리소스를 URI에 매핑시킨다. 그렇다면 회원 조회 : /members/{id} 회원 등록 : /members/{id} 회원 수정 : /members/{id} 회원 삭제 : /members/{id} 이렇게 나타낸다. 여기서 조회, 등록, 수정, 삭제를 어떻게 구분할까? 회원이라는 리소스를 가지고 어떠한 행위를 한다. 행위는 조회, 등록, 수정, 삭제를 의미한다. 리소스와 행위를 분리하는 것은 중요하다. 아무튼 여기서 이제 행위는 어떻게 구분할까? --> HTTP 메서드 사용 HTTP 메서드 GET 저번에 배웠던 요청 메시지처럼 GET 요청 메시지..

article thumbnail
HTTP 웹 기본 지식 - URI와 웹 브라우저 요청 흐름 & HTTP 기본

URI, URL, URN URI는 Uniform Resource Identifier의 약자이다. 확인하는 방법?을 통합하여 URI라고 부르는 것 같다. 확인하는 방법에는 URL과 URN이 있다. URN(Resource Name) 자원을 확인할 때? 이름을 부여한다. 이름으로 부여하게 되면 찾기 정말 어렵기 때문에 거의 사용하지 않는다. URL(Resource Locator) 우리가 평상시에 사용하던 URL이 이 URL이다. URL은 자원이 있는 위치를 지정한다. scheme://[userinfo@]host[:port][/path][?query][#fragment] https://www.google.com :443 /search ?q=hello&hl=ko 프로토콜, 호스트명, 포트 번호, path, 쿼리 ..

article thumbnail
HTTP 웹 기본 지식 - 인터넷 네트워크

IP(Internet Protocol) IP는 우리가 흔히 말하는 IP주소의 그 IP이다. IP의 역할은 지정한 IP주소에 데이터를 전달한다. 여기서 패킷이라는 통신 단위로 데이터를 전달한다. 패킷에는 출발지 IP, 목적지 IP 등이 있고 전송 데이터가 있다. 하지만 IP프로토콜은 다음과 같은 한계를 가지고 있다. 비연결성 패킷이 도착할 곳의 서버가 없거나, 종료(?)되있어도 패킷을 전송한다. 비신뢰성 중간에 패킷이 사라질 수도 있다 패킷을 1 2 3 순서대로 보냈는데, 2 1 3 이런 식으로 순서가 보장이 안된 체 도착할 수 있다. 프로그램 구분 만약 한 곳에 서로 다른 애플리케이션이 같이 들어올 때 구분지을 방법이 없다 TCP UDP 우리는 TCP/IP을 많이 들어보았을텐데, 이것은 프로토콜이 아니라..

article thumbnail
스프링 핵심 원리 - 빈 스코프(2022.03.21 수정)

싱글톤 빈 우리가 평소에 쓰던 스프링 빈은 기본적으로 싱글톤 스코프로 생성된다. 싱글톤은 클라이언트 A, B, C가 동시에 요청하든 따로 요청하던지 간에 같은 객체를 반환한다. @Test void singletonBeanFind() throws Exception{ AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(SingletonBean.class); System.out.println("================================"); SingletonBean singletonBean1 = ac.getBean(SingletonBean.class); SingletonBean singletonBean2 ..

article thumbnail
스프링 핵심 원리 - 빈 생명주기 콜백(2022.03.12 수정)

콜백 메서드가 필요한 이유 애플리케이션 시작할 때 외부 네트워크와 연결을 하고, 종료 시점에 연결을 모두 종료하는 상황 애플리케이션 시작 시점에 NetworkClient를 생성하면서 connect를 통해 연결을 함 종료 시점에는 disconnect를 통해 연결을 끊기 빠른 결론 처음 이 부분을 공부했을 때, 머릿 속으로 도저히 이해가 되질 않았다. 그래서 이 글을 본 분들이나 미래의 나에게 빠른 이해를 돕고 싶다. 유치할 수도 있지만 빠르게 이해하기 위해서 각 코드 사이마다 숫자를 넣어보았다. 실행 순서를 알기 위함이지 의미 있는 숫자들은 아님!! BeanLifeCycleTest.class public class BeanLifeCycleTest { @Test void lifeCycleTest() thro..

article thumbnail
스프링 핵심 원리 - 의존관계 자동 주입(2022.03.12 수정)

다양한 의존관계 주입 방법 의존관계 주입은 생성자 주입, setter 주입, 필드 주입, 일반 메서드 주입이 있다. 생성자 주입 생성자를 통해 의존 관계를 주입 받는 방법 생성자가 딱 1개만 있으면 @Autowired를 붙이지 않아도 자동 주입 된다. private final MemberRepository memberRepository; private final DiscountPolicy discountPolicy; @Autowired public OrderServiceImpl(MemberRepository memberRepository, DiscountPolicy rateDiscountPolicy) { this.memberRepository = memberRepository; this.discountP..

728x90

검색 태그