본문 바로가기

전체 글147

[모각코 9회차] 상품관리 REST API 클론 프로젝트(feat.React) 목표: 상품관리 REST API 클론 프로젝트상품추가App.js const [items, setItems] = useState([]); //기본상태 const handleAddClicked = (id) => { //같은 아이디 찾기 const product = products.find((v) => v.id === id); const found = items.find((v) => v.id === id); const updatedItems = //상품확인...모든속성 복사, 개수 +1/없으면 기존 아이템 반환 //기존것 복사 + 새로운 상품 추가 found ? items.map((v) => (v.id === id ? { ...v, count: v.count + 1 } : v)) : [ ...items, { .. 2022. 8. 30.
[모각코 8회차] Spring Security with JWT 목표: 시큐리티 파트2Stateful과 StatelessStateless기반의 JWT에 대해 알아보기 전에 Stateful과 Stateless방식의 차이점을 알아보자 Stateful Session 사용 Session Cluster필요(수평확장 어렵) 단일 사용자의 다중 로그인 컨트롤, 사용자 유효성 체크, 강제 로그아웃 기능 구현 쉬움 Stateless Session 사용 x, 근데 서버는 사용자를 식별할 수 있어야 함 Session Cluster필요x(수평확장 쉬움) 단일 사용자의 다중 로그인 컨트롤, 사용자 유효성 체크, 강제 로그아웃 기능 구현 어려움 JWT (Json Web Token) Stateless 상태를 유지하며, 서버에서 사용자를 식별할 수 있는 수단을 제공 서버에서 사용자 인증되면 JW.. 2022. 8. 25.
[모각코 7회차] Spring Security Internals 목표: 스프링 시큐리티 파트1Thread Per Request 모델과 ThreadLocal Thread Per Request 모델 병렬처리 기법 중 하나 WAS는 ThradPool을 생성하는데 HTTP 요청이 들어오면 Queue에 적재되고, ThreadPool 내의 특정 Thread가 Queue에서 요청을 가져와 처리 WAS의 최대 동시 처리 HTTP 요청의 갯수는 ThreadPool의 갯수와 같음 ThreadLocal 동일 Thread 내에서는 언제든 읽고 쓸 수 있는 변수 final static ThreadLocal threadLocalValue = new ThreadLocal(); public static void main(String[] args) { System.out.println(getCur.. 2022. 8. 19.
[모각코 6회차] 주문관리 API 목표: 주문 API 만들기 실습 ERD Entity Order Entity는 아이디, 주문시간, 주문상태, 메모, 회원, 주문아이템을 필드로 갖으며 작성자와 생성시간을 제공하는 BaseEntity를 상속 받음 Order 엔티티에서 setMember와 addOrderItem 연관관계 편의 메서드를 제공 오더와 멤버는 다대일 관계 오더와 오더아이템은 일대다 관계 @Entity @Table(name = "orders") @Getter @Setter public class Order extends BaseEntity { @Id @Column(name = "id") private String uuid; @Column(name = "order_datetime", columnDefinition = "TIMESTAMP.. 2022. 8. 11.
JSP를 Thymeleaf로 바꾸기 드디어 JSP를 Thymeleaf로 다 바꿨다! 처음에 들었던 강의를 따라 jsp를 사용했었는데 김영한님 스프링 강의를 들으며 타임리프를 알게 되었고 스프링과 통합이 잘 되어있다는 점과 jsp는 거의 사용하지 않는 추세여서 바꿔야겠다고 생각했다. 미루고 미루다 검증로직에서 에러메세지를 보여주는 기능을 적용하고 싶어서 바꾸기 시작했다. 바꾸면서 에러페이지만 엄청봤다. th를 하나씩 빠뜨리기도하고 문법을 잘 몰랐던 부분도 있어서 생각보다 쉽지 않았다. 덕분에 타임리프에 익숙해 질 수 있었다. 의존성 jsp org.springframework.security spring-security-taglibs org.apache.tomcat.embed tomcat-embed-jasper javax.servlet jst.. 2022. 8. 7.
[모각코 5회차] SPA와 CORS 목표: spa와 cors 정리Single Page Application화면 렌더링 서버에서 처리하지 않고 브라우저에서 처리 일반: 모든 페이지 다시 렌더링 사용자 세션 서버에서 관리 쿠키에 담아서 보냄 정보 추가 할 때마다 세션 커짐 요청받는 url에 따른 리소스 반환 웹 어플리케이션 서버 spa: dom 조작해서 특정 영역 렌더링 사용자 데이터 모델 일부 자바스크립트로 관리 로컬스토리지에 담아둠 필요할 때마다 데이터 요청 html5 히스토리 api 이용가능 서버는 뷰를 렌더링하지 않게 됨 -> json 웹 서버 ResponseEntity 보냄 @ResponseBody @GetMapping("/api/v1/customers/{customerId}") public ResponseEntity findCust.. 2022. 8. 4.