WEB

    Thymeleaf 사용하기

    jsp만 배우고 사용하면서 익숙해진 것을 계속 쓰고 싶었지만 Spring Boot를 사용하게 되면서 Thymeleaf를 사용하게 되었습니다. 우선적으로 Spring boot에서 jsp 사용을 권장하고 있지 않습니다. 아마 내장톰캣이기 때문에 war로 패키징을 해야 하기 때문에 Spring boot를 사용하고 있는 입장에서는 약간 🤨입니다. Thymeleaf를 사용하기 위해서 의존성을 먼저 추가 해줍니다. build.gradle implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' application.yml에도 관련 설정을 해주어야 합니다. jsp를 사용할 때 처럼 위치와 파일형식을 알려줍니다 application.yml spri..

    JPA Pageable 사용하기

    Page까지 왔다는건... 기본적인 CRUD를 알고 계신 상태로 이해하고 작성하겠습니다! 할일 : 간단한 리스트 데이터에 Page, Sort 구현하여 API를 구현한다. Service Entity자체를 반환하는건 절때로 하지 않기 때문에 Response dto를 만들어서 반환하기로 합니다. Repository에서 받아온 Page UserEntity를 Response에 맵핑해줘야 하기 때문에 반환할때 생성자에 stream을 사용하여 각각 맵핑 해줍니다! 여기서 finAny().orElse("") 는 user의 이미지가 필수는 아니기 때문에 NPE이 발생할 수 있기 때문에 null일 경우 String 타입의 null을 반환하게 했습니다. 이부분은 좀더 찾아서 업데이트 하도록 하겠습니다! public Page..

    Spring boot + JWT + RefreshToken 구현하기

    아주 기본적인 코드까지 모두 있습니다.. 왜냐면... 저도 기술 블로그들을 보면서 빠져있는 부분을 보면 나같은 초보는 어쩌라고 하며 슬퍼했기 때문에,,, 사실 Security의 여러가지 Filter를 사용하여 JWT 방식을 이용하는게 맞지만 프로젝트 크기,, 기간상 불필요하다 판단하게 되어서 JWT 만을 사용하여 구현하였다. 나중에 Security도 같이 구현하여 올리도록 하겠음! 이번에는 git에 올려 코드까지 공유하기로 했다! 처음보면 약간 복잡하다고 생각되고 나또한 그랬다 ㅠㅠ,, (부끄러운) 구현코드를 보면서 이해하고 혹시 이상한곳은 PR해주시면 감사하겠습니다...(간절,,) git 주소 (실무에서 실제로 사용하면서 수정하고 있습니다 ~!) git clone https://github.com/ae..

    Spring boot에서 JSP 사용하기

    구조 구조를 보면 resources와 같은 경로에 webapp을 만들어 주시면 됩니다. 안에 WEB-INF는 똑같이 만들어주시고 application.yml에 설정에 따라 안에 있는 폴더 이름은 변경할 수 있습니다. application.yml spring: mvc: view: prefix: /WEB-INF/jsp/ suffix: .jsp build.gradle // JSTL implementation 'javax.servlet:jstl:1.2' // JASPER implementation 'org.apache.tomcat.embed:tomcat-embed-jasper' springboot에서 jps를 사용하려면 외장톰캣을 의존성으로 추가해줍니다. jsp는 극혐이니 jstl도 추가해줍니다. 기본 탬플릿 ..

    객체 지향 프로그래밍 - 객체, 캡슐화

    인프런 객체 지향 프로그래밍 입문 - 최범균를 공부하며 적은필기 노트입니다. 직접 실전에서 Java를 쓰게 되면서 객체 지향 프로그래밍에 중요성이 뼈를 강타했다... 공부하자! "Software maintenance is not keep it working like before it is keep being useful in a changing world" - Jessica Kerr 유지보수는 그대로를 관리하는 것이 아니라 유용하게 변경하는 것이다. 그러므로 분석과 수정이 빠르게 되어야 한다. 비용과 변화 낮은 비용으로 변화할 수 있어야 한다. 1. 패러다임 객체 지향, 함수형, 리액티브 등 2. 코드, 설계, 아키텍처 DRY, TDD, SOLID, DDD, ... 클린 아키텍처, MSA, ... 3. ..

    Enum Type 사용하기

    이번에 스타트업에 취업하면서 많은 걸 배우는 동시에 많은 게 싫어졌다. 하지만 버티고 나면 추억이고 나의 경력이 되겠지 ... ㅠ 꿻 우선 처음 프로젝트를 들어가서 처음으로 사용해 봤다. 학원에서 많이 사용하지 않는다고 배웠지만 이번에 사용하면서 가독성면에서 매우 좋다고 느꼈기 때문에 나중을 위해 정리한다! Spring Boot 에서 api 설계 중 배송 기능을 만들면서 배송상태 관리를 하는데 1,2,3... 등 숫자로 표현되어 1이 무엇인지 2가 무엇인지 일일이 찾아보기 번거로웠다. 또한 코드 리뷰 때 어떤 건지 헷갈릴 거 같아 Enum타입을 사용하기로 했다. @Getter public enum SomethingStatus { PAYMENT_COMPLETE(0), PREPARING(1), CANCEL(..

    React + Node.js 연동하기

    하루종일 삽질한거 정리합니다. 분명 언젠가 또 쓸것이어니.... 우선 vscode로 작성하였습니다. vscode 터미널에서 npx create-react-app lasttest lasttest는 프로젝트 이름입니다. 만든후 터미널에서 해당 프로젝트 루트 경로에서 npm start로 실행이 되는지 확인합니다. 이 친구가 뜬다면 바로 node.js랑 연동할게요. npm install express --save 설치해주세요 express는 NodeJS의 웹프레임워크 입니다. 간편하게 웹서버를 구축할 수 있죠 그다음에 서버와 클라이언트 폴더를 나누어 줄껀데요 root경로에 server폴더를 만들어준 다음에 server.js 파일을 만들어주세요 const express = require('express'); co..

    Mapper Interface?

    면접보기 위해 과제를 해야 했다. 프로젝트를 파일을 받았는데 계속 구현해오던 구조와는 많이 달라서 시간을 많이 썼다. 하지만 역시나 인터넷을 자세히 보고 엄청난 시행착오를 한 후에 적응할 수 있었다. 언제 다시 쓸 수 있을지 몰라 기록해 두기로 했다. Mapper의 SQL ID와 Mapper Interface의 메서드명과 정확히 매칭해준다면 자바에서 메서드를 호출하기 때문에 오타에 대한 걱정이 없다. 개발을 배우면서 쓰던 구조는 대충 이런식이었다. 그러나 이번에 받은 과제는 Mapper Interface, Service class, sql.xml 이렇게 3가지로 있었다. 처음 본 구조 1.propertis에서 알리아스를 이용해 sql에서 dto로 연결해주던 것을 annotation을 사용하면 아주 간단하..

    [JAVA] 의 데이터 타입의 분류

    기본타입 / 참조타입 으로 나뉩니다. (immutable / mutable) 기본타입은 정수, 실수, 문자, 논리 리터럴을 저장하는 타입입니다. 종류 기본타입 메모리 기본값 정수 byte 8bit 1byte 0 char 16bit 2byte 유니코드(\u0000), ASCII, 문자형 short 16bit (2byte) 0 int 32bit (4byte) 0 long 64bit (8byte) 0 실수 (부동 소수점) float 32bit (4byte) 0.0F double 8bit (1byte) 0.0 논리 boolean 8bit (1byte) false 메모리에는 0과 1을 저장하는 최소 기억 단위인 bit가 있습니다. 이 bit 8개를 묶으면 byte가 됩니다. 이 byte가 클수록 표현하는 값으 범..

    Spring 총정리 3.Annotation

    특징 ? - Spring Web MVC Framework는 JAVA1.5부터 Annotation을 지원합니다. - xml설정이 너무 길어짐에 따라 그 대안으로 나타났다. - 기본적으로는 활성화되지 않기 때문에 xml에서 확성화 작업이 필요하다. 장점 ? - 설정이 간편해 짐, view 페이지와 객체 또는 메서드의 맵핑이 명확해 짐. Annotation을 사용하기 위해서는 설정이 필요합니다. 3가지 방법이 있습니다. 1) CommonAnnotationBeanPostProcessor에 클래스 설정파일에 빈객체로 등록하여 어노테이션으로 사용 2) 태그 사용 : 이미 등록된 빈들의 어노테이션을 활성화 3) : 특정 패키지 안의 클래스들을 스캔하고, Annotation을 확인 후 bean 인스턴스를 생성 - 스테..

    Cookie & Session의 차이점

    저장 위치 쿠키 : 클라이언트의 브라우저가 지정하는 메모리 or 하드디스크 세션 : 서버의 메모리의 저장 만료 시점 쿠키 : 속성 설정을 이용해 삭제될 날짜를 정할 수 있다. 세션 : 클라이언트가 로그아웃하거나, 설정된 기간동안 반응이 없으면 무효화 되기 때문에 시점을 알 수 없다. 리소스 쿠키 : 클라이언트에 저장되고 클라이언트의 메모리 사용 세션 : 서버에 저장되어 서버 메모리로 로딩 되기 때문에 세션이 생길 때마다 리소스 차지 용량제한 쿠키 : 클라이언트도 모르게 설정될 수 있기 때문에 도메인당 20, 하나의 쿠키당 4KB로 제한 세션 : 클라이언트가 접속하면 서버에 의해 생성되어 개수나 용량 제한 없음 저장형식 쿠키 : Text 세션 : Object

    Spring 총정리 2.Spring 3대 작동원리

    Servlet에서 1:1mapping을 보안해서 자동으로 분기, 자동으로 생성화면 이동이 가능합니다. 여기서 이 Controller는 다양한 요청을 제어하여 J2EE Pattern: frontController 라고 합니다. Business Layer에서 handler mapper를 잊고 그리지 않았는데 알아두어야 합니다. Handler Mapping : dispatcherSevlet으로 받은 요청 -> Controller 보냄-> 요청이 어떤 매핑인지 그 방법을 정해주는 클래스 입니다. Spring 3대 작동원리에 대해 알아보겠습니다. 1. DI/IoC - Bean Spring 사용할 수 있도록 등록 - Life-Cycle을 따라가지 않고 사용 POJO를 Spring bean혹은 @Annotation을..