서버에서는 API 호출에 대한 클라이언트 검증을 위해 요청 클라이언트에 대해 인증 절차를 거치는데 이를 위해 다양한 방식이 존재한다. 이 중 하나의 방식이 jwt 방식인데 Jwt을 알아보기전에 세션 & 쿠키 인증 방식을 먼저 알아보자. 세션 & 쿠키 인증 방식 세션 서버측에서 관리하는 사용자 정보를 말한다. 서버와 클라이언트의 연결이 활성화 된 상태로 클라이언트가 서버에 접속하면 클라이언트 정보를 서버 단에 저장하게 된다. 세션 ID를 발급해서 사용자를 구분한다. 쿠키 클라이언트측에서 관리하는 사용자 정보를 말한다. 키와 값으로 구성된 사용자 정보 파일이다. 유효시간을 명시해 줄 수 있다. 클라이언트의 상태정보를 저장하고 참조할 수 있다. (HTTP의 무상태를 커버할 수 있다) 사용자가 로그인 요청을 한..
ORM Object-Relational Mapping, 객체 관계 매핑 객체와 관계형 DB의 데이터를 자동으로 매핑해주는 것을 말한다. 객체 지향 프로그래밍 _ OOP는 클래스를 사용해서, 관계형 DB는 테이블을 사용해서 설계한다. 이런 차이로 인해 객체 모델과 관계형 모델 간 불일치가 존재할 수 있다. ORM 프레임워크가 이 중간에서 SQL을 자동으로 생성해서 불일치를 해결한다. DB 데이터 Object 객체를 통해 간접적으로 DB 데이터를 다룬다. SQL 쿼리가 아니라 메서드로 데이터를 조작할 수 있다. ORM이 객체간 관계를 바탕으로 sql을 자동으로 생성해주는 것이다. 대표적인 ORM 프레임워크로는 Hibernate가 있다. 즉, ORM은 DB와 OOP사이에서 관계를 매핑해주는 기술이고 JPA는 ..
사용자가 웹 페이지 form(HTML form)을 통해서 자신의 정보를 입력 (INPUT) servlet의 doGet() 또는 doPost() 메서드는 입력한 form data에 맞게 DB 또는 다른 소스에서 관련된 정보를 검색 이 정보를 이용하여 사용자의 요청에 맞는 적절한 동적 컨텐츠(HTML Page)를 만들어서 제공 (OUTPUT) 1. HTML Form input elements(Ex. 텍스트 상자)가 포함된 웹 페이지의 한 부분 사용자가 입력한 정보 (form contents)를 웹 서버로 전송하기 위한 submit element (Ex. 버튼)이 존재한다 action에는 form을 처리하는 서버 쪽 URL을 명시한다 클라이언트(Browser)가 요청하는 URL 정보 요청을 보낼 때 서버의 I..
MVC Architecture 정리 MVC architecture란 무엇일까? Model, View, Controller를 분리한 디자인 패턴을 말한다. Controller 컨트롤러는 데이터와 사용자 인터페이스 요소를 이어주는 중간 다리 역활을 한다. 사용자가 데이터를 수정하는 등 '이벤트'를 처리해야 함을 의미한다. Servlet (service) 요청 객체를 찾는 흐름 : Controller -> Service -> Dao -> DB [요구사항] 모델이나 뷰에 대해서 알고 있어야 한다. View와 Model 사이의 인터페이스 역활을 한다. 모델과, 뷰는 서로의 존재를 모른체 변경을 외부로 알리고, 수신하는 방법만 알고 있으므로 이를 컨트롤러가 중재해야한다. 컨트롤러는 뷰와 모델에 명령을 보낼 수 있다..
DAO DAO : Data Access Object의 약어로 DB에 접근하여 조회, 조작을 담당하는 것들을 통칭한다. DAO를 이용해서 Service와 DB를 이어주는 중간다리 역활을 한다. Persistence Layer이다. (DB에 직접 CRUD를 하는 계층) 왜 DAO로 구분하는 것일까? HTTP Request를 Web App이 받게 되면 매 Req마다 WAS에 전달이되면 매칭되는 Servelt이 메모리에 적재되고, servlet내 Service() 메소드가 호출되어 Thread Pool에 있는 쓰레드를 할당받아서 처리된다. | 이때, 비즈니스 로직이 DB로부터 데이터를 얻어오기 위해 매번 Driver를 로드하고 Connection 객체를 생성하게 되면 엄청 많은 커넥션이 일어나므로 DB에 전담하..
기본적으로 운영환경과 테스트환경은 별도로 두는것이 좋다 웹 서비스의 DB로 h2를 사용해서 구현하고 있지만 테스트시에는 h2를 이용하지 않고 메모리 DB를 이용해서 테스트를 실행할 때 로컬 메모리로 저장해서 테스트 후 종료될 때 전부 삭제되는 방식으로 구현한다 방법 springboot의 test폴더 내에 resources폴더와 하위파일로 application.yml을 생성 spring: # datasource: # url: jdbc:h2:mem:test //해당 url을 이용하면 메모리모드로 테스트를 돌려준다 # username: sa # password: # driver-class-name: org.h2.Driver # # jpa: # hibernate: # ddl-auto: create # prope..
스프링 부트에서 Junit으로 테스트를 진행할 때 예외케이스를 테스트하는 경우 Junit4의 경우 @Test (expected = IllegalStateException.class) public void duplicatedMemberException() throws Exception { //given Member member1 = new Member(); member1.setName("mem1"); Member member2 = new Member(); member2.setName("mem1"); //when : 동일한 이름의 회원이 저장될 경우 IllegalStateException 발생 memberService.join(member1); memberService.join(member2); } 예외가 ..
- Total
- Today
- Yesterday