본문 바로가기

전체 글

(144)
Spring MVC 테스트 코드 작성 법 MockMVC이란 MockMVC는 spring MVC 테스트 시 가짜 객체를 만들어, 서버를 직접 실행 시키지 않아도, Spring MVC동작을 재현해주는 클래스이다. MockMVC 객체를 통해, 클라이언트의 HTTP Request를 가정하고, 그에 따른, 서버의 HTTP Response를 테스트할 수 있다. MockMVC 테스트 예시 아래의 /api/message URI를 GET하면 ok상태 코드와 hello JSON메세지를 돌려주는 간단한 Controller를 테스트 해보겠다. @RestController public class GetController { @GetMapping("/api/message") public ResponseEntity getFromMessage() { String jsonM..
JAVA 간단한 HTTP Server 직접 구현하기. 이 글에서는 간단한 기능을 하는 HTTP Server를 소개한다. 특징으로는 Spring과 JAVA에서 제공하는 http 관련 클래스(jdk.httpserver, com.sun.net.httpserver 등등)를 사용 하지 않는다. 기본적으로 JAVA에서 제공하는 네트워크 기능(소켓 통신)만을 이용하여, 서버를 구현한다. http 라이브러리를 사용하지 않기 때문에, HTTP 메세지를 직접 해석하고, 직접 구성해야 하는 수고가 필요하다. 하지만, 이런 수고, 직접 타이핑을 통해 HTTP 프로토콜(리퀘스트, 리스폰스 메세지)에 대한 이해가 높아지는 좋은 기회가 될 것이다. https://coding-business.tistory.com/6 HTTP란 무엇인가/ HTTP1.0, 1.1 특징 HTTP 프로토콜 ..
Java Enum 사용 방법 (+Lombok, 추상 메소드) 개요 목적 Enum이란 연관된 상수들의 관리를 도와주는 도구이다. Enum의 역할과 사용 방법을 예시를 통해서 알아본다. 추가로, Enum의 확장 기능인 Lombok과의 결합, 추상 메소드 활용 방법을 설명한다. Class 상수 → Enum 상수로 변경하기. 상황 : 메세지 타입에 따른 다른 정보를 저장하고 싶다. public class Type { public final int RESISTERNAME = 1111; public final int MESSAGETOSERVER = 2222; public final int MESSAGETOCLIENT = 3333; public final int CLIENTCLOSEMESSAGE = 4444; public Type() { } public int getRESIS..
리퀘스트 메소드와 HTTP 상태 코드 리퀘스트 메소드 종류와 특징 GET 메소드 클라이언트가 서버에 있는 데이터를 요청할 때 사용한다. url기반으로 데이터를 요구하는 방법이다. (사용 방법) (쿼리 스트링 방식) URL 끝에 ? 를 붙이고 그 다음에, 요청 정보를 쿼리 스트링 방식으로 작성해서 보낸다. 쿼리 스트링 방식이란, URL ? 뒤에 Key = value 형식으로 원하는 정보를 서버에게 요청하는 방식이다. 여러 개의 정보를 요청할 때는 &를 붙여서 사용한다. ex) https://comic.naver.com/webtoon/detail**?titleId=796218&no=24&weekday=sat** → 네이버 웹툰 서버에 titleld은 796218&no=24와 weekday는 sat인 데이터를 요청한다. 쿼리 스트링 방식(URL ..
HTTP 프로토콜 이해와 HTTP 버전 별 특징 개요 목적 이번 시간에는 HTTP 프로토콜의 개념과 Request Response 메세지 구성 요소에 대해서 알아본다. 초기와 달리 다양한 기능을 제공하는 HTTP(1.0, 1.1, 2., 3) 버전 별 특징과 차이에 대해서도 알아본다. HTTP 프로토콜 이해 HTTP는 HTML 문서와 같은 리소스들(json, image 등등)을 가져올 수 있도록 해주는 프로토콜이다. HTTP는 웹에서 이루어지는 모든 데이터를 주고 받을 수 있게 하는 통신 규칙을 의미한다. 위 사진처럼 웹페이지를 출력하기 위해서 다양한 데이터가 통신 전달된 것을 확인할 수 있다. image 파일, 웹페이지를 나타내는html 등 다양한 데이터가 Client 웹 브라우저에 전달되었다. image 파일, 웹페이지 모두 0과 1로 이루어진다...
JSON 개념과 특징 JSON 개념과 필요성 네트워크 통신의 가장 큰 목표는 데이터를 잘 전달하는 것이다. “나는 학생, 홍길동입니다.”라는 문자열을 바이트로 변환하여 보내면 간단하게 데이터를 전송할 수 잇다. 하지만, 단순한 문자열이 아닌, 아래와 같은 구조화된 데이터는 어떻게 보내야 할까? 컴퓨터는 빠르지만, 단순하다. 그렇기 때문에, 저런 표 형식이 아닌, 한 줄로 이어진 텍스트 형식이 필요하다. 그래서 구조화 된 데이터를 한 줄의 텍스트로 변환할 수 있는 형식을 제공 하는 것이 JSON이다. {"name": "홍길동","age": 23,"career": {"highSchool": ["올림피아"]"university": ["프로그래밍대회","네이버인턴"]}"advantage": ["성실함","꾸준함","착함"]} 즉 J..
Lombok에 대한 이해와 기능 Lombok이 필요한 이유 자바는 최신의 개발 언어에 비해, 소스 코드가 복잡하고 길다. . 이러한 단점을 외부 라이브러리 Lombok을 통해 해결하였다. 예를 들어, 특정 클래스의 빌드패턴을 만들기 위해서는, 새로운 빌드클래스를 작성하는 번거로움이 있다. 그러나, 롬복을 사용하면 “@Builder” 어노테이션 하나로 대체할 수 있다. 자바 애너테이션(Java Annotation)은 자바 소스 코드에 추가하여 사용할 수 있는 메타데이터(데이터를 모아둔 데이터)의 일종이다. 보통 @ 기호를 앞에 붙여서 사용한다” @Builder안에 많은 데이터가 함축되어 있다. 롬복에서 자주 사용되는 어노테이션을 통해 Lombok의 편리함을 알아보자. @Builder 빌더 패턴의 역할을 한다. import lombok.B..
OSI, TCP/IP 참조 모델 쉽게 이해하기 개요 목적 TCP/IP와 OSI는 네트워크 참조 모델이다. 데이터를 두 모델처럼 계층화하고, 구성하면, 모든 컴퓨터에서도 데이터를 주고 받을 수 있다. 만약 애플 컴퓨터에서 사진 네트워크 데이터를 a-1로 구현했다. 그런데, 윈도우 컴퓨터에서는 사진 네트워크 데이터를 a-2로 구현한다면, 애플 사진 데이터를 읽을 수 없다.(참조 모델을 따르지 않았을 경우 생기는 문제이다.) 즉 어떤 기기에서, 두 참조 모델을 따라서 데이터를 구성하면, 지구 반대편에 있는 어떤 기기에서도 읽을 수 있는 네트워크 데이터를 만든 것이다. TCP/IP와 OSI참조 모델 사이의 차이점은 OSI는 개념적 모델로 실질적 통신에는 사용되지 않는다. TCP/IP는 실질 네트워크 통신에 사용되는 모델이다. 두 모델이 어떤 계층으로 이루어..

반응형