Time does not change us. It just unfolds us.

Web 30

[JavaScript]JSON 형식의 문자열과 Encode 함수

Object(객체)를 Json 문자열로 변환할 때 stringify()를 사용한다. 또한 데이터를 인코드하기 위해 btoa() 함수를 사용한다. var val = btoa(encodeURIComponent(JSON.stringify(row))); 반대로 Json 문자열을 Object로 변환할 때는 parse()를 사용하며 디코드하기 위해 atob()를 사용한다. var row = JSON.parse(decodeURIComponent(atob(val))); encodeURIComponent 함수는 모든 문자를 인코딩한다. URI로 데이터를 전달하기 위해서 문자열을 인코딩하는데 사용한다. Encoding 할 때 한글을 포함한 경우에는 정상적으로 변환되지 않기 때문에 데이터를 감싸는 역할을 한다. 인자명 데이..

Web/Front 2021.10.25

[Web]Url 주소 가져오기

웹 프로젝트에서 페이지에 해당하는 목록을 표시할 때 Url 주소를 가져와 인식하였다. 네이버 페이지로 예시를 보자면, 아래와 같이 책방에 관련된 페이지를 보고 있을 때 책방 메뉴를 시각적으로 표현해주는 기능을 구현했다. url을 주소를 가져오는 함수들은 다음과 같다. 예) http://localhost:8080/project/list.jsp 함수 예시 내용 request.getContextPath() /project 프로젝트 Path만 가져온다 request.getRequestURI() /project/list.jsp 프로젝트 + 파일경로까지 가져온다. request.getRequestURL() http://localhost:8080/project/list.jsp 전체 경로를 가져온다. request.S..

Web/Else 2021.10.25

[Web]사용자 정의 예외 클래스

앞서 예외처리하는 방법에 대해 공부했다면, 이번에는 그 예외를 정의한 부분에 대해 이해해보고자 한다. https://x-ojm.tistory.com/25 [Web]@ContollerAdvice, @ExceptionHandler 예외처리 @RestController public class MyRestController { ... @ExceptionHandler(NullPointerException.class) public Object nullex(Exception e) { System.err.println(e.getClass()); return "myService"; } } @Exce.. x-ojm.tistory.com 프로젝트에 사용된 예시로 해당 유저가 존재하지 않을 때 발생하는 예외다. Excepti..

Web/Else 2021.10.25

[Web]@ContollerAdvice, @ExceptionHandler 예외처리

@RestController public class MyRestController { ... @ExceptionHandler(NullPointerException.class) public Object nullex(Exception e) { System.err.println(e.getClass()); return "myService"; } } @ExceptionHandler같은 경우는 @Controller, @RestController가 적용된 Bean내에서 발생하는 예외를 잡아서 하나의 메서드에서 처리해주는 기능을 한다. 즉, 메소드 위에 선언되며, 등록한 예외를 Catch하여 처리할 수 있다. 위 예제와 같이 @ExceptionHandler라는 어노테이션을 쓰고 인자로 캐치하고 싶은 예외클래스를 등록하..

Web/Else 2021.10.22

[Web]WAS

WAS란 Web Application Server약자로 웹서버와 웹컨테이너가 결합된 개념이다. 일종의 미들웨어로, 클라이언트의 요청 중 보통 웹 애플리케이션이 동작하도록 지원하는 목적을 가진다. 즉, 동적 페이지 제공. WAS는 Servlet(HttpServlet을 상속받은 클래스)을 사용하여 동적인 페이지를 생성할 수 있다. Web Container 유무로 WEB 서버와 WAS를 구분할 수 있다. 또 다른 차이로는 WEB 서버는 HTML 문서와 같은 정적 컨텐츠를 처리하는 것이고 (HTTP를 통해 읽힐 수 있는 문서), (정적 데이터) WAS는 asp,php,jsp 등 개발 언어를 읽고 처리하여 동적 컨텐츠, 웹 응용 프로그램 서비스를 처리한다. (동적 데이터) 따라서 DB와 연결되어 데이터를 주고 받..

Web/Else 2021.10.22

[Web]RESTful

REST란? HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하고, HTTP Method(POST, GET, PUT, DELETE)를 통해 해당 자원에 대한 CRUD Operation을 적용하는 것을 의미 REST는 Representational State Transfer라는 용어의 약자로서 웹의 장점을 최대한 활용할 수 있는 아키텍처 최근의 서버 프로그램은 다양한 브라우저와 안드로이폰, 아이폰과 같은 모바일 디바이스에서도 통신을 할 수 있어야 한다. REST 아키텍처는 Hypermedia API의 기본을 충실히 지키면서 범용성을 보장한다. REST의 특징 1. Uniform (유니폼 인터페이스) Uniform Interface는 URI로 지정한 리..

Web/Else 2021.10.22

[Web]MSA

MSA란 마이크로 서비스 아키텍처(Micro Service Architecture)의 약자로 단일 프로그램을 각 컴포넌트 별로 나누어 작은 서비스의 조합으로 구축하는 방법이다. MSA는 API를 통해서만 상호작용할 수 있다. 즉, 마이크로 서비스는 서비스의 end-point(접근점)을 API 형태로 외부에 노출하고, 실질적인 세부 사항은 모두 추상화한다. 내부의 구현 로직, 아키텍처와 프로그래밍 언어, 데이터베이스, 품질 유지 체계와 같은 기술적인 사항들은 서비스 API에 의해 철저하게 가려진다. vs MSA 장점 기존 monolithic architecture과 비교해보면 빌드/테스트 시간이 길다. 선택적 확장이 불가능 (전체 확장필요) 하나의 서비스가 모든 서비스에 영향 한 Framework와 언어에..

Web/Else 2021.10.22

[Web]Spring Boot 관련 개념 참고 링크

이번 프로젝트를 진행하면서 사용한 기능들의 기본 개념이해를 위해 참고한 링크들이다. 구동 시점에 특정 코드 실행 https://www.daleseo.com/spring-boot-runners/ ApplicaitionRunner : SpringBootApplication이 포함된 프로그램에서 특정 Bean을 Application 실행 후 실행하도록 하는 인터페이스 https://jinseongsoft.tistory.com/238 스프링 어플리케이션 시작 종료 시 https://zepinos.tistory.com/41 [Spring Boot] 애플리케이션 실행 후 특정 코드를 수행하는 방법 (Application Runner 사용법) 들어가며 필요에 따라 스프링부트 애플리케이션이 처음 실행되고 난 시점에 특..

Web/Else 2021.10.22

[Web]ResponseEntity

HTTP(HyperText Transfer) 프로토콜 구조 하이퍼텍스트(HTML) 문서를 교환하기 위해 만들어진 TCP/IP 기반 protocol(통신 규약). 웹상에서 네트워크로 서버끼리 통신을 할때 어떠한 형식으로 서로 통신을 하자고 규정해 놓은 "통신 형식" 혹은 "통신 구조" Stateless 요청/응답 (request/response) 구조 start line / headers / body 로 구성 headers : general / request / entity header 로 구성 https://velog.io/@teddybearjung/HTTP-%EA%B5%AC%EC%A1%B0-%EB%B0%8F-%ED%95%B5%EC%8B%AC-%EC%9A%94%EC%86%8C Web에서 HTTP 프로토콜..

Web/Else 2021.10.22

[Web]Feign Client

이번 프로젝트에서 FeignClient를 이용하여 개발해서 개념을 이해하고자 공부해보았다. 특히 공통 헤더를 추가하기 위해 커스터마이즈한 Configuration을 설정하는 부분에 대해 정리하였다. Feign Client란? 1) Feign Client는 web service 클라이언트를 보다 쉽게 작성할 수 있도록 도와줌. 2) interface를 작성하고 annotation을 붙여주면 세부적인 내용 없이 사용할 수 있기 때문에 코드 복잡도가 낮아짐. 3) Netflix 에서 만들어진 Http client binder 4) spring-cloud-starter-openfeign으로 스프링 라이브러리에서 사용할 수 있음. feign client 라이브러리 넣기 org.springframework.clou..

Web/Front 2021.10.22