본문 바로가기
관리자

분류 전체보기

(999)
[스프링 웹MVC] 4. HTTP 응답 정보 : 서블릿 - HttpServletResponse HttpServletResponse는 서버에서 클라이언트로 전달하고자 하는 응답 메시지를 작성하기 위한 기능들을 제공하는 객체이다. 기본적으로 HTTP 응답코드 지정, 헤더, 바디 생성 기능을 해준다. 또한 편의기능으로 Content-Type 지정, 쿠키 지정, Redirect 기능을 제공한다. 1. 헤더에 정보 담기 헤더 헤더에 정보를 담을 수 있다. .setStatus(), .setHeader() 등을 사용해보자. 응답 결과는 브라우저의 Network 탭에서 확인할 수도 있지만, postman으로 편하게 조회해볼 수도 있다. HttpServletResponse.SC_OK와 같이 의미를 바로 전달할 수 있는 상수 타입을 사용할 수 있는 것을 확인하자. 그리고 .setHeader()뿐 아니라 setCon..
[스프링 웹MVC] 3. HTTP 요청 정보 : 서블릿 - HttpServletRequest 서블릿이 제공하는 요청에 대한 정보를 담고 있는 HttpServletRequest 객체에 대해서 더 자세히 알아보자. 1. Header 정보 Header Start Line 정보 HttpServletRequest에서는 아래와 같은 다양한 메서드를 제공한다. 브라우저에서 localhost:8080/request-header?username=charlie 로 접속하여 결과를 출력해보자. 그리고 출력 함수를 [Ctrl + Alt + m] 단축키로 printStartLine이라는 메서드로 뽑아내자. RequestHeaderServlet 파일 일부 - printStartLine 메서드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 @WebServlet(..
IntelliJ에서 localhost:8080 단축키로 호출하기; intelliJ hotkey, intelliJ 단축키 추가 생성-external tools IntelliJ에서 서버를 실행하고, localhost:8080을 브라우저로 바로 띄우고 싶은데, 콘솔창에서는 바로 표시가 안된다. 단축키 설정 방법은 다음과 같다. [요약] 1. 설정창 [Ctrl + Alt + S] 을 열고, Tools > External Tools > 추가(+) 버튼을 누른다. 2. 단축키로 지정할 이름을 입력하고, 실행할 프로그램, Argument를 사진과 같이 입력해준다. 3. Tools > External Tools 우클릭 > Add Keyboard Shortcut을 선택하여 기존 단축키와 중복되지 않는 단축키를 설정한다.(Ctrl + Shift + Comma가 비어있다!) 4. 지정한 단축키를 눌러보면, External Tools 항목에 접근하여 지정한 기능을 실행할 수 있다..
[스프링 웹MVC] 2. 프로젝트 생성과 웹서블릿 기본 개념 1. 프로젝트 세팅 프로젝트 생성을 위해 스프링부트 initializer 사이트(start.spring.io)로 이동하여 다음과 같이 프로젝트를 GENERATE한다. IntelliJ에서 초기 세팅은 이전 작성글과 같이 해주면된다. https://whitepro.tistory.com/298 다만 여기서는 lombok을 기본으로 전제로 프로그램을 작성할 것이기 때문에, 사진과 같이 환경설정에서 AnnotationProcessor를 enabled로 변경해주도록 한다. 혹시라도 lombok 관련 오류가 발생한다면, Settings > Plugins > Lombok이 설치되어 있는지 확인한다. 2. 프로젝트 생성 쓰레드를 실행하는 ServletApplication(main method가 있는 파일)에서 @Serv..
[스프링 웹MVC] 1. 웹 애플리케이션 이해 1. 웹서버(WEB)와 웹 애플리케이션 서버(WAS) HTTP와 정적 리소스 거의 모든 통신이 HTTP를 기반으로 한다! HTML, TEXT, 이미지, 음성, 파일, JSON 등 대부분의 데이터가 인터넷의 HTTP라는 프로토콜(규약)을 기반으로 해서 통신한다. 정적 리소스란, 서버 컴퓨터 내에 저장되어 있는 HTML, 이미지, 영상 등으로 클라이언트에서 이런 파일에 대한 요청을 하면, 서버에서는 파일을 전송해주는 방식으로 서버를 구성한다. 클라이언트와 서버간 상호작용을 통해 정보 및 자료가 작성되는게 아니고, 단순히 서버에 존재하는 파일이기 때문에 정적 리소스라는 용어를 사용한다. 정적 리소스를 전달해주는 서버를 웹서버(WEB)라고 한다. WEB 서버와 WAS 반면, 웹 애플리케이션 서버(WAS)란, 웹..
[스프링 기초] 17. 빈 스코프 : 웹 스코프와 프록시 1. 웹 스코프 웹스코프의 특징과 종류 스프링은 주로 웹 기술에 적용되므로, 웹과 관련된 스코프가 따로 지정되어 있다. 웹 스코프는 웹 환경에서만 동작한다는 특징이 있다. 웹 스코프의 종류는 다음과 같다. request : HTTP 요청 하나가 들어오고 나갈 때까지 유지된다. 각 HTTP 요청마다 개별적으로 인스턴스가 생성되고 관리된다. session : HTTP session과 동일한 주기를 갖는다. application : 서블릿 컨텍스트와 동일한 주기를 갖는다. websocket : 웹 소켓과 동일한 주기를 갖는다. 각 스코프는 생명주기만 다르고, 동작 방식은 거의 같다. 강의에서는 request 스코프를 예제로 학습해본다. 웹 스코프 연습해보기 : 웹 Logger 만들기 웹 스코프는 프로토타입 스..
[스프링 기초] 16. 빈 스코프 : Prototype Scope와 Provider 1. 기본 스코프 기본적으로 적용되는 스코프는 앞서 배운바와 같이 싱글톤 스코프이다. 메모리의 낭비 방지, Stateless 설계를 위해서 싱글톤이 필요하다는 것을 배웠었다. 싱글톤 스코프 외에 프로토 타입 스코프도 있다. 프로토타입 스코프 빈은 요청 시마다 개별적인 인스턴스를 반환하기 때문에 사용자의 요청에 따라 계속해서 새로운 객체를 반환해야할 때 쓴다(많이 사용되지는 않는다). @Scope("singleton"), @Singleton("prototype") 으로 빈 스코프를 설정해줄 수 있다(default는 싱글톤 빈). 싱글톤 스코프와 프로토타입 스코프를 아래에서 비교해보자. 싱글톤 스코프 기본적으로 적용되며, 컨테이너의 시작과 종료까지 유지된다. 요청 횟수에 관계없이 1개의 인스턴스만 반환한다...
[스프링 기초] 15. 빈 생명주기 콜백 : initMethod, destroyMethod, @PostConstruct, @PreDestroy 1. 기본 개념 빈 생명주기 콜백은 빈이 생성되거나 소멸되는 시점에 설정해둔 메서드가 실행되게 함으로써 초기 설정을 해주거나, 연결을 종료하는 등의 기능을 한다. 스프링 빈은 '객체 생성 -> 의존관계 주입' 의 2단계를 거치게 되는데(생성자 주입의 경우 한번에 처리), 의존관계 주입 후 값을 설정해주는 단계를 초기화 단계라고 한다. 이 초기화 단계를 알리기 위해 스프링 빈은 의존관계 주입 후 콜백 메서드를 통해서 초기화 시점을 알려주는 다양한 기능을 제공한다. 그리고 스프링은 스프링 컨테이너가 종료되기 전에도 소멸 콜백 메서드를 제공한다. 이렇게 객체의 생성과 초기화가 분리된 이유는 SRP의 원칙을 지키기 위해서이기도 하고, 초기화 작업이 외부와 커넥션을 연결하는 등 무거운 작업을 하기도 하기 때문이다..