프로그래밍/web(10)
-
HTTP 자주 나오는 응답코드 정리
200 OK : 성공적으로 처리됨 204 No Content : 성공적으로 처리했지만 컨텐츠를 제공하지는 않음. 206 Partial Content : 컨텐츠의 일부 부분만 제공. 보통 클라이언트에서 시작 범위나 다운로드 할 범위를 지정하는 경우 자동으로 해당부분만 제공할때 사용하는 코드 301 Moved Permanently : 영구적으로 컨텐츠가 이동했을 때 사용됨 302 Found : 일시적으로 컨텐츠가 이동함 400 Bad Request : 요청 자체가 잘못 되었을때 사용하는 코드 401 Unathorized : 인증이 필요한 리소스에 인증없이 접근할 경우 발생. ex) 로그인 하지 않은 사용자 403 Forbidden : 클라이언트가 인증되지 않았거나 유효한 인증 정보가 부족하여 요청이 거부되었..
2022.01.13 -
[Spring boot] 분산 트랜젝션
분산 트랜젝션이란 ? 2개 그 이상의 네트워크 상의 시스템 간의 트랜잭션. 2개의 Phase Commit으로 분산 리소스간의 All or Nothing 보장 Spring Boot 내에서 XA protocol을 사용해서 two phase commit을 진행한다. XA 트랜젝션 : XA 프로토콜을 사용하는 분산 트랜잭션 phase 1에서는 prepare 요청을 보내고 모든 리소스 (DB)에게 커밋 준비 요청을 한다. 하나의 DB라도 OK가 오지않으면 Rollback을 실행해서 transaction의 ACID를 만족한다. phase 2에서는 모든 DB에서 ok 응답이 올때까지 commit요청을 보내준다. 구현 1. maven 설정 org.springframework.boot spring-boot-starter..
2021.12.07 -
[Spring]Cookie와 활용법(읽기, 생성 및 저장)
쿠키란 ? 쿠키란 하이퍼 텍스트의 기록서(HTTP)의 일종으로서 인터넷 사용자가 어떠한 웹사이트를 방문할 경우 그 사이트가 사용하고 있는 서버를 통해 인터넷 사용자의 컴퓨터에 설치되는 작은 기록 정보 파일을 일컫는다. (출처: 위키백과) 쿠키의 구조 유효기간 : 유효기간이 지나면 쿠키 데이터가 소멸됨. 도메인 : 현재 쿠키가 어떤 서버로 전송되어져야 하는지 지정하는 속성. path : path로 지정한 곳에서 쿠키 데이터르 읽을 수 있음. 디폴트 값으로 쿠키를 생성한 곳에서만 쿠키를 읽을 수 있게 되어있음. Spring Controller에서 쿠키 생성. @RequestMapping("/createCookie") public String createCookie(HttpServletResponse resp..
2021.09.20 -
[JAVA] abstract class vs interface
객체 지향 프로그래밍 프로그램 설계방법론이자 개념의 일종. 프로그램을 단순히 데이터와 처리 방법으로 나누는 것이 아니라, 프로그램을 수많은 '객체(object)'라는 기본 단위로 나누고 이들의 상호작용으로 서술하는 방식이다. 추상화 abstract class(추상 클래스) - 미완 클래스 자체적으로 객체를 생성할 수 없다. - 추상 메소드와 일반 메소드를 둘다 가질 수 없다.(interface는 일반메소드를 가질수 없다) - 추상 메소드가 포함된 클래스를 상속받는 자식 클래스가 반드시 추상 메소드를 구현하도록 구현. - 다형성 구현 가능 - extends를 통해 상속 interface - 클래스가 아니다 자체적으로 클래스를 생성할 수 없다. - 다중 상속같은 기능을 줄 수있다. - 추상메소드, 상수만 가..
2021.08.02 -
[Spring] Spring MVC framework를 사용한 웹은 어떻게 작동할까?
Spring MVC 패턴에서 url을 통해 response를 날린 경우 어떻게 처리 되는지 알아보자. 1. 클라이언트(사용자)가 주소창에 URL을 입력 2. 브라우저는 DNS를 운영하는 서버를 통해 접속하려는 서버의 IP주소를 받아온다. 예를 들어 사용자가 www.naver.com을 접속 시도할 경우, ping 명령어를 통해 확인해보면 DNS 서버에서 125.209.222.142로 IP 주소를 리턴해, 해당 IP주소로 서버에 요청을 받음을 알 수 있다. 3. 브라우저가 DNS서버에서 받아온 IP주소에 위치한 서버에 요청을 보낸다. (해당 IP주소에 위치한 서버가 Spring MVC를 따른다고 가정하자) 4. 4-1. 해당 서버의 Dispatcher Servlet이 request를 받는다. 4-2. Han..
2021.07.19 -
[Spring Boot] 댜양한 의존 관계 주입 DI 방법
스프링을 사용하면서 DI를 사용하는 방법에는 크게 4가지가 있는데 각각의 장단점과 사용 방법에 대해서 알아보자. 1. 생성자 주입 의존성 주입을 생성자에서 수행하는 방법. 생성자는 일반적으로 객체가 생성될때 딱 한번 실행되는 것이 보장된다. 불변 / 필수 의존관계 설정에 사용된다. @Component public class OrderServiceImpl implements OrderService{ private final MemberRepository memberRepository; private final DiscountPolicy discountPolicy ; @Autowired public OrderServiceImpl(MemberRepository memberRepository, DiscountP..
2021.07.01 -
[Spring boot] 싱글톤 패턴의 쓰래드 문제
싱글톤 패턴은 spring에서 기본적으로 사용되는 패턴으로 소프트웨어 디자인 패턴에서 싱글턴 패턴을 따르는 클래스는, 생성자가 여러 차례 호출되더라도 실제로 생성되는 객체는 하나이고 최초 생성 이후에 호출된 생성자는 최초의 생성자가 생성한 객체를 리턴한다. 이와 같은 디자인 유형을 싱글턴 패턴이라고 한다 이런 특성을 가지고 있다. 싱글톤 패턴의 장점은 컨테이너가 서비스 객체를 생성하고 지우는 부담을 줄여주어, 메모리 관리에서 강점을 가진다. 하지만, 쓰래드 문제도 존재해 stateless 한 상태로 만드는 것이 필수적이다. 말로는 감이 잘 안올테니 코드를 통해 확인해보자 StatefulService.java public class StatefulService { // 얘가 문제를 만듦. 무상태로 만들어야..
2021.06.05 -
REST API의 규칙
사내 프로젝트를 진행하면서 프론트 부분을 외주사에 대행하게 되었다. rest api 제공을 위해 학습을 진행하였다. 학습을 위해 아래 페이지를 참고하였다. 참조 : https://dzone.com/articles/7-rules-for-rest-api-uri-design-1 7 Rules for REST API URI Design - DZone Integration URIs, or Uniform Resource Identifiers, should be designed to be readable and clearly communicate the API resource model. These rules will help you succeed. dzone.com # Rule 1 URI의 마지막에 후행 슬래시 /..
2021.05.13