분류 전체보기 121

한이음 프로젝트 시작, 리뷰(후기)

한이음 한이음 (hanium.or.kr) 한이음 개인정보 최신화 안내 원활한 ICT멘토링 홈페이지 이용을 위해, 기존 등록되어있던 개인정보들을 업데이트 해주세요. 학과, 소속정보, 기술분야 등 정확한 항목들을 입력해주시면 보다 정확한 www.hanium.or.kr 한이음이란? ICT 멘토링 사이트에서 ICT개방형 실무 인재양성 프로그램 을 목표로 실행되고 있는 프로그램이다. 인재양성을 목표로 하면서, 좋은 성과를 이룬 팀들에게는 수상을 진행한다. 본인은 개인으로 간단하게 뭐를 만들어나 봤지, 팀 프로젝트는 한이음을 통해서 처음 접하게 되었다. 멘티들은 본인들이 하고 싶은 주제 등을 처음에 사이트에 올리고, 그 분야에 관심이 있거나 마음에 들어하시는 멘토분들이 그 멘티들에게 매칭을 거는 시스템이다. 그렇기..

CSR(Client Side Rendering), SSR(Server Side Rendering)

2023.08.04 - [Web] - 웹 시스템 구성( Web Server, WAS ) 웹 시스템 구성( Web Server, WAS ) 스프링 웹 MVC에 대해서 알아보기 이전에 웹이 어떻게 돌아가는지, 어떤 구성으로 되어있는지 알고 넘어가야 한다. 웹은 HTTP 를 기반으로 구성되어 있다. HTTP 메세지에 모든 데이터들을 담아서 전 junhyuk-develop.tistory.com CSR, SSR 에 대해서 알아보기 이전에 웹의 기본적인 구성에 대해서 알아보고 오면 좋겠다. CSR, SSR 에 대해 설명하기 이전에 이해에 필요한 부분들을 순차적으로 우선 설명하겠다. 정적 리소스 정적 리소스는 고정된 HTML 파일, CSS, JS, Image, 영상 등을 제공하는 리소스를 의미한다. 주로 웹 브라우저..

Web 2023.08.04

쓰레드(Threads), 멀티 쓰레드, 쓰레드 풀

클라이언트와 서버(WAS) 간에 HTTP 메세지를 통해 요청과 응답을 주고 받는다. 클라이언트가 서버에 HTTP 요청을 해서 커넥션이 연결되고, WAS는 Serlvet(서블릿)을 호출해서 응답 메세지를 작성한다. 여기서 서블릿을 누가 어떻게 호출을 할까? 쓰레드(Threads) 어플리케이션 코드를 하나하나 순차적으로 실행하는 것이 쓰레드이다. 자바 메인 메서드를 처음 실행하면 main이라는 이름의 쓰레드가 실행되는 것 쓰레드가 없다면 자바 어플리케이션 실행이 불가능하다. 쓰레드는 한번에 하나의 코드 라인만 수행한다. 만일, 동시 처리가 필요하다면 쓰레드를 추가로 생성한다. 단일 요청 - 쓰레드 하나 사용 요청이 하나이기 때문에, 휴식하고 있던 쓰레드를 해당 요청에 할당해서 Servlet을 통해 HTTP ..

Web 2023.08.04

서블릿(Servlet), 서블릿 컨테이너(Servlet Container)

서블릿이 왜 필요한지, 어디에 사용되어서 우리에게 도움이 되는지 알기 위해서 간단한 예시를 들어 설명하겠다. HTML Form 형태로 데이터 전송이 발생했다고 가정해보자. POST 방식으로 데이터를 저장하라고 클라이언트에서 서버로 HTTP 요청을 보냈다고 생각하자. 해당 요청을 받게 되면 서버는 어떻게 될까? 해당 데이터인 username= kim, age = 20 를 저장하는 로직을 실행하고 이에 대한 응답 HTTP 메세지를 클라이언트에게 보내야 할 것이다. 여기서 서블릿이 사용된다. 서블릿이 없다면, 해당 작업을 WAS가 직접 구현을 해야한다. 위의 그림과 같이, 서버와 연결, 요청 메세지 파싱, 내용 확인 등등 여러가지 일을 직접 구현해야 하므로 굉장히 귀찮고 쉽지 않을 것이다. ( 이를 구현하는 ..

Web 2023.08.04

웹 시스템 구성( Web Server, WAS )

스프링 웹 MVC에 대해서 알아보기 이전에 웹이 어떻게 돌아가는지, 어떤 구성으로 되어있는지 알고 넘어가야 한다. 웹은 HTTP 를 기반으로 구성되어 있다. HTTP 메세지에 모든 데이터들을 담아서 전송한다. HTML, TEXT, 이미지, 음성, 영상, 파일 등등 전부 다 이에 해당된다. 또한, 서버 간에 데이터를 주고 받을 때도 대부분 HTTP를 사용한다고 생각하면 된다. 즉, 웹의 기본은 HTTP에 대해서 알고 있어야 한다. 2023.06.23 - [Http] - HTTP HTTP 2023.06.23 - [Http] - internet-network(IP, TCP, UDP, PORT, DNS) internet-network(IP, TCP, UDP, PORT, DNS) 인터넷 상에서 컴퓨터들끼리는 어떻..

Web 2023.08.04

컴포넌트 스캔 (@ComponentScan)

컴포넌트 스캔, 의존 관계 자동 주입 지금까지는 스프링 빈을 등록할 때는 설정 정보(Config)에 직접 등록할 스프링 빈을 나열했다. 스프링 빈을 @Bean을 통해서 일일이 등록을 할 수 있지만, 이렇게 되면 굉장히 귀찮게 된다. 이를 해결하기 위해, 스프링은 설정 정보가 없어도 자동으로 스프링 빈을 등록하는 컴포넌트 스캔 기능을 제공한다. 또한, 의존 관계를 자동으로 주입하는 @Autowired 기능도 제공한다. @ComponentScan 지금까지 사용한 AppConfig를 유지하며, 새로운 AutoAppConfig를 만들어보자. @Configuration @ComponentScan(excludeFilters = @Filter(type = FilterType.ANNOTATION, classes = C..

Spring 2023.08.02

싱글톤 패턴, 싱글톤 컨테이너 (Singleton)

웹 애플리케이션과 싱글톤 스프링은 기업에서 많이 사용된다. 대부분의 스프링 애플리케이션은 웹 애플리케이션이다. 웹 애플리케이션은 보통 여러 고객이 동시에 요청을 한다. 여러 고객이 위와 같이 동시에 요청을 하게 되는데, 스프링 없는 순수한 DI 컨테이너인 AppConfig은 요청을 할 때마다 객체를 새로 생성한다. 이렇게 되면 그만큼 많은 객체가 생성되고 소멸되므로 메모리 낭비가 심하다! 이를 해결하기 위해 싱글톤 패턴을 사용해서 해당 객체가 1개만 생성되고 이를 공유하도록 설계하면 된다! 싱글톤 패턴 → 클래스의 인스턴스가 딱 1개만 생성되는 것을 보장하는 디자인 패턴 그래서, 객체 인스턴스를 2개 이상 생성하지 못하도록 막아야 한다. ( private 생성자를 이용해 new 를 못하도록 함 ) 코드를..

Spring 2023.08.02

스프링 컨테이너, 스프링 빈(Spring Container, Spring Bean)

스프링 컨테이너 ApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class); 위의 코드가 스프링 컨테이너를 생성하는 코드이다. 여기서, ApplicationContext를 스프링 컨테이너라고 한다. ( 이는 인터페이스로 구성됨 ) 스프링 컨테이너는 XML이나 애노테이션 기반 자바 설정 클래스로 만들 수 있다. (여기서는 자바 설정 클래스를 기반으로 스프링 컨테이너를 만들 것이다.) 즉, 위의 코드를 통해 ac는 ApplicationContext 인터페이스의 구현체가 된다. [ 엄밀히 말하자면, 스프링 컨테이너를 부를 때는 BeanFactoy, ApplicationContext를 구분해서 이야기한다. 그러나, BeanFac..

Spring 2023.08.02

HTTP Header(헤더)- 캐시, 조건부 요청

2023.07.28 - [Http] - HTTP Header(헤더)의 구조, 쿠키 HTTP Header(헤더)의 구조, 쿠키 HTTP Header는 왜 쓰일까? → HTTP 헤더는 인터넷 상에서 HTTP 프로토콜을 이용해 데이터를 전송하는 HTTP 전송에 필요한 모든 부가 정보를 전달하기 위해 존재한다. ( 메시지 바디의 내용, 메시지 바디 junhyuk-develop.tistory.com Http Header 의 기본적인 구조와 종류, 그리고 추가적으로 쿠키에 대해서 설명한 글이다. 이글을 읽기 앞서 보고 온다면 이해하는데 더 수월할 수 있다. Cache(캐시)가 없다면 어떤 일이 일어날까? 캐시를 사용하면 뭐가 좋을까? 이해를 위해 예시를 하나 들겠다. 캐시가 없는 세상에서, 웹 사이트로부터 하나의 ..

Http 2023.07.31

HTTP Header(헤더)의 구조, 쿠키

HTTP Header는 왜 쓰일까? → HTTP 헤더는 인터넷 상에서 HTTP 프로토콜을 이용해 데이터를 전송하는 HTTP 전송에 필요한 모든 부가 정보를 전달하기 위해 존재한다. ( 메시지 바디의 내용, 메시지 바디의 크기, 압축 형태, 인증, 요청 클라이언트, 서버 정보 , 캐시 관리 정보 등등.. ) HTTP 헤더의 구조는 이전 게시글들을 봤다면 자주 봐왔을 것이다. 해당 그림의 노란 부분을 보면 된다. field-name : (띄어쓰기) field-value (띄어쓰기) 의 형태로 구성된다. [ field-name은 대소문자 구분 없음 ] HTTP는 많은 역사를 지나온 만큼 변화도 있었다. 1999년의 RFC2616 이라는 HTTP 표준이 2014년을 계기로 폐지되면서, RFC7230~7235 로..

Http 2023.07.28