공부 102

스프링 - webSocket 을 이용해서 채팅 구현하기

webSocket : 2011년에 나온 비교적 최신 기술이며, http 처럼 일종의 통신 규약이다. 한번 연결된 이후에 계속해서 연결 상태가 유지되는 통신이라고 생각하면 된다. 흐름: 1. 스프링 내부에서 webSocket 요청을 받을 endPoint 설정 2. 자바 스크립트 - 스프링간의 webSocket 통신 연결 3. 요청(메시지)이 들어올시 처리될 코드 작성 실제 코드: 0. websocket 을 사용하기 위한 라이브러리 추가 implementation 'org.springframework.boot:spring-boot-starter-websocket' 1. WebSocketConfig 클래스 @Configuration @EnableWebSocket @RequiredArgsConstructor p..

공부/springboot 2024.03.08

SpringMVC(3) : 서블릿 요청에 대한 응답

이 게시글에서는 사용자의 요청을 듣고, 서버가 응답해주는 방법을 정리한다. 사용자의 응답 역시 HTTP 메시지 형식인데, 이를 손쉽게 만드는 방법에 대한 내용이다. HTTP 메시지 header 만들기 @WebServlet(name = "responseHeaderServlet", urlPatterns = "/response-header") public class ResponseHeaderServlet extends HttpServlet { @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //[status-line] respo..

공부/springboot 2023.12.11

SpringMVC(2) : 서블릿 요청 처리

서블릿은 HTTP 통신을 더 쉽게 사용하기 위해 만들어진 자바 기능이다. 따라서 이를 이용한 HttpServletRequest 와 HttpServletResponse 역시 정보를 더 쉽게 추출해내거나 삽입하는 기능을 가지고 있다. 이 게시글에서는 HttpServletRequest 를 이용해 HTTP 요청 메시지의 내용을 꺼내는 다양한 방법과 HttpServletResponse를 이용해 다양한 방식으로 응답을 보내고 쿠키 등의 부가 설정을 하는 방법을 살펴볼 것이다. HTTP 메시지의 구조 HTTP통신을 다루는 기술인만큼 HTTP 통신의 기본 규약을 알아야할 필요가 있다. 이 게시글에서는 오직 http 메시지의 구조만 잠깐 흩고 지나갈것이다. http 통신에 대한 더 깊은 이해를 바라면 이전 게시글을 참조..

공부/springboot 2023.12.08

SpringMVC(1) : 웹 어플리케이션 서버(WAS) 의 이해

웹 서버(Web Server)와 웹 어플리케이션 서버(Web Application Server) 이 둘의 경계는 모호하나 굳이 구분하면 정적인 웹 서버와 동적인 웹 어플리케이션 서버로 나눌수 있다. 정적인 서버는 오직 정적 리소스만 제공하며, 따라서 html, css, js 파일, 이미지 등을 클라이언트에게 전송해주나, DB에 저장된 데이터 등을 이용해 그에 맞는 화면을 클라이언트에게 전송해주는 것은 불가능하다. 반대로 was는 프로그램 코드를 실행하여, 애플리케이션 로직을 수행 그에 맞는 화면을 보여주거나 행동을 하는 것이 가능하다. 웹 어플리케이션 서버가 웹 서버의 개념까지 포함하여 더 많은 기능을 제공한다고 생각하면 편하다. 일반적으로 웹 시스템은 웹 서버 => 웹 어플리케이션 서버 => DB 로 ..

공부/springboot 2023.12.06

MyBatis 란?

기존에 SpringDataJPA만 사용해오다 이번 기회에 MyBatis를 사용할수 있게 되었다. 마이바티스 역시 근본적으로는 JPA와 마찬가지로 프로세스에서 DB에 더 쉽게 접근하기 위한 기술이다. 이 역시 JPA와 마찬가지로 JDBC를 근간으로 한다. 세계적으로는 우리나라와 중국, 일본 정도에서만 주류로 사용되며, 그 외의 국가들은 대부분 JPA(Hibernate) 가 대세이다. 그 이유는 간단한 쿼리문 작성에 JPA가 훨씬 강력한 성능을 뽐내기 때문인데, 반대로 복잡한 쿼리문에서는 MyBatis가 더 강하다. 또한 Persistence Framework 를 통해 데이터베이스와 연동 기술을 개발하는데, MyBatis 는 SQL Mapper 방식, JPA는 ORM(Object Relational Mapp..

공부/MyBatis 2023.10.23

스프링 레거시와 스프링 부트의 차이

스프링은 크게 스프링 레거시와 스프링 부트로 나뉜다. 스프링 레거시는 일반적인 Spring Framework 프로젝트를 말하며, 스프링 부트는 기존의 레거시에서 사용자가 직접 해줘야만 했던 많은 사전 작업들을 미리 설정해두거나, 쉽게 설정할수 있는 프로젝트다. 필자는 본래 스프링 부트로 Spring Framework를 학습했으나 이번 기회에 레거시를 사용해볼 기회가 생겨 그 차이를 정리한다. 일단 대표적인 차이는 다음과 같다. 레거시 부트 자유도 자유롭게 라이브러리 설정 가능. 대신 손이 많이 감 프로젝트 구성 단계에서 범용적인 라이브러리 선택 가능. 외부 라이브러리를 추가할시 사용자가 gradle이나 maven, 또는 직접 추가해줘야하는 작업 필요. 서버 따로 tomcat 같은 웹 어플리케이션 서버를 ..

공부/springboot 2023.10.19

JSP를 사용하면서

최근 인턴생활하고 있는 회사가 JSP, MyBatis, Spring-Legacy, Eclipse를 사용한다. 모두 사용해본적 없는 것들이기에 많은 시행착오를 겪었다. 이에 여기에 새롭게 배운 기본적인 내용들을 정리한다. JSP( Java Server Pages ) 자바 뷰 템플릿. 단독으로 웹 브라우져에 띄워 확인할수 없다. 일부 전용 태그들이 존재한다. 기본 문법 1.Directives (지시자) 속성과 값에 따라 자바 코드를 생성한다. page, taglib, include가 있으며, 주로 jsp 페이지와 관련된 속성이나 라이브러리를 임포트 하는 등의 용도로 사용된다. 2. Scriptlet Elements(스크립트릿) jsp 페이지 안에서 자바 코드를 작성할때 사용한다. 해당 코드는 서블릿 파일이 ..

공부/JSP 2023.10.19

HTTP 헤더와 캐시

HTTP 헤더 용도: HTTP 전송에 필요한 모든 부가 정보(메시지 바디 컨텐츠 타입, 바디 길이, 압축 크기 등등)를 담는다. 필요시 임의의 헤더를 추가할수 있다. 형식: header-field = field-name ":" OWS field-value OWS (OWS : 띄어쓰기 허용) field-name 은 대소문자 구분이 없기에 혼용 가능하다. 과거에는 RFC2616 버전을 사용했으나 2014년부터 RFC7230이상으로 바뀌면서 '엔티티'라는 용어 대신 '표현'(Representation)을 사용한다. 표현 = 표현 메타데이터 + 표현 데이터 메시지 본문(페이로드, 실제 데이터 단)을 통해서 표현 데이터를 전달한다. 표현 헤더는 표현 데이터를 해석할수 있는 정보를 제공한다. 참고로 표현 헤더는 표..

공부/네트워크 2023.09.07

HTTP 메서드

HTTP API의 종류 URI에서 중요한 것은 리소스이며, 행위(작업)는 method 로 따로 기입한다. 리소스란 조회, 수정, 삭제 등의 행위가 아닌, 그 작업의 대상이 되는 것을 말한다. GET : 리소스를 조회할때 사용 POST : 요청 데이터를 서버에서 처리. 주로 새로운 데이터를 등록할때 사용. PUT : 기존 리소스를 대체. 해당 리소스가 없다면 새롭게 생성 PATCH : 리소스 부분 변경. 주로 수정에 사용. DELETE : 리소스 삭제 이외에 기타 메서드로 HEAD, OPTIONS 등이 존재한다. 1. GET 서버에 전달하고 싶은 데이터는 query를 통해 전달한다. 최근 들어 스펙상으로 메시지 바디를 통해 전달할수 있지만, 지원하지 않는 서버가 많기에 권장하지 않는다. 2. POST 요청..

공부/네트워크 2023.09.05

URI와 HTTP의 기본

URI (Uniform Resource Identifier) URL 또는 URN을 하위 분류로 가지는 식별 개념. uniform 은 리소스를 식별하는 통일된 방식, resource 는 자원, 즉 uri로 식별할수 있는 모든 것을, identifier 은 다른 항목과 구분하는데 사용하는 고유의 정보를 의미한다. URL( Unfirom Resource Location) 리소스의 위치를 나타낸다. anchor대신 fragment 라고도 한다. Scheme : http나 https처럼 통신에 사용되는 프로토콜을 나타낸다. Authority : 호스트명이나 ip주소, 사용하는 포트를 나타낸다. 사용자 정보를 기입할수도 있으나 거의 사용하지 않는다. Path : 리소스 경로를 나타내며 계층적 구조를 가진다. Que..

공부/네트워크 2023.09.01