스프링부트 - Spring Security JWT인증하기
·
Spring
JWT는 이전 포스트에서 다뤘기 때문에 간단하게 소개만 하겠다.사용자 인증 정보를 JSON형태로 담아 서명한 토큰 세션을 사용하여 로그인 할 때로그인 정보가 서버(세션)에 저장되어 있다.JWT로그인을 사용하여 인증할 때로그인 정보가 클라이언트(브라우저)에 저장되어있다.그래서 서버 입장에서 요청을 보내는 사람이 누구인지 알 수 없다.클라이언트가 스스로 누구인지 증명을 해야하는데 이 JWT를 이용해서 증명한다. 보통 4가지의 파일을 가지고 가야된다.JwtUtil.java ( 토큰 생성 및 검증 도구 클래스)JwtAuthFilter.java (요청마다 토큰을 꺼내서 검증하는 필터)JwtLoginController.java (로그인 시 토큰 발급하는 컨트롤러)SecurityConfig.java (필터 등록 및 ..
스프링부트 - 타임리프(Thymeleaf)
·
Spring
오늘은 스프링부트의 뷰 템플릿 타임리프에 대해서 알아보겠다. 뷰 템플릿?만약 우리가 로그인 시 페이지에 000님 반갑습니다! 라는 문구가 뜨게 하는데 이것은 html파일을 하나의 사용자마다 따로따로 다 만들까?그렇지 않다. 그럼 왜 웹 서비스를 여나그래서 우리는 view템플릿을 사용해서 하나의 페이지에 변수를 동적으로 할당하여 페이지에 나타낸다.타임리프는 view템플릿엔진 중 하나라고 보면 된다.타임리프는 서버 사이드 렌더링이라고 한다. 웹 페이지를 사용자에게 보여주는 방식은 크게 서버 사이드 랜더링(SSR) 클라이언트 사이드 렌더링(CSR)두개가 있다. 서버 사이드 렌더링?사용자가 웹 페이지를 요청했을 때, 서버에서 해당 페이지의 모든 내용을 렌더링(HTML 문서 형태로 완전히 만들어서)클라이언트(웹..
[스프링부트] - 인터셉터(interceptor)
·
Spring
인터셉터(Interceptor)란?말 그대로 "어떤것을 가로챈다" 라는 뜻이다. 컨트롤러로 들어오는 요청(메서드(URI))에 접근하는 과정에서 무언가를 제어할 필요가 있을 때 사용이 된다. 정확히는 컨트롤러에 접근하기 전과 후로 나뉜다. Filter와의 차이점?인터셉터보다 필터가 먼저 동작한다.인터셉터는 필터와 다르게 메서드로 제어를 한다.Interceptor클래스 → 메서드로 제어를 하기 위한 클래스 파일InterceptorConfig클래스 → 어떤 URI에 대해서 동작할 것인지 설정을 위한 클래스 파일PostViewLogInterceptor.javapackage com.example.interceptor.interceptor;import jakarta.servlet.http.*;import lomb..
[스프링부트] - JPA 연관관계
·
Spring
JPA에서 연관관계는 객체간의 관계를 표현하고 DB테이블 간의 관계를 연결하는 역할을 한다. 두가지의 접근방향이 있는데단방향(One-way)양방향(Bidirectional)연관관계로 표현할 수 있는 종류는 4가지다.다대일(N:1)일대다(1:N)일대일(1:1)다대다(N:N)@Entity@Datapublic class Team { @Id int teamId; String teamName;}@Entity@Datapublic class Player { @Id int playerId; String playerName;}여기 Team 엔티티와 Player 엔티티가 있다. @ManyToOne(N:1) 단방향자 여기서 우리는 DB의 N:1을 생각하면 쉽다.※한개의 Team이 여러명..
[스프링부트] - JPA를 알아보자
·
Spring
JPA란?Jakarta Persistence API는 ORM(Object Relation Mapping)기술 표준으로 사용되는 인터페이스의 모음이다.즉 실제로 구현된 클래스가 아니라 실질적으로 구현된 클래스와 매핑시켜주기 위한 프레임워크(도구)이다.강의에서 들은 사용 단계이다.테이블 생성하고 활용할 때 -> Entity 클래스에서 그 역할을 함(Entity클래스는 테이블을 생성한다. 가방 역할을 함엔티티클래스는 DTO 그자체로 볼 수 있다.)데이터 제어 -> RepositoryfindById(), findAll(), save(), count()페이징연관관계 N:1 @ManyToOne1:N @OneToMany1:1 @OneToOne조건 검색 -> QueryMthod 특징DAO와 DB테이블의 의존성 문제를..
[스프링 부트] -Spring JDBC
·
Spring
Spring의 데이터베이스 엑세스 방법은 크게 3가지가 있다.DAOMapperRepositoryData Access Layer에서 JDBC는 DAO를 이용하여 데이터베이스에 접근한다.DAO가 있기 위해서는 DTO가 있어야한다.DTO(Data Transfer Object) 컨트롤러와 뷰 그리고 비즈니스 계층간의 데이터 교환을 위한 자바 Bean이다.DTO는 따로 로직을 가지고 있지 않는 순수한 데이터 덩어리라고 보면 된다.Getter와 Setter를 만들어준다. DAO(Data Access Object)DAO는 단순히 CRUD만 하기 위한 객체이다.DAO에서 비즈니스 로직이 들어가면 안된다. 예를 들어 "주문 금액이 10만원 이상인 사용자의 목록을 가져와서, 각 사용자의 등급을 업데이트한다" 와 같은 로직..
[스프링 부트] - AJAX 요청 파라미터 전달
·
Spring
AJAX 요청으로 파라미터 전달하는법을 배웠다.get :경로 뒤에 ?를 붙여서 데이터 전post: FromData와 JSONData를 이용하여 데이터 전달 Form으로 데이터를 Post로 제출하기RegisterController.java@Controllerpublic class RegisterController { @GetMapping("/register") public String showForm() { return "register"; } @PostMapping("/register") @ResponseBody public String handleRegister( @RequestParam String name, @RequestParam String age, @Reques..
[스프링부트] - DI, IoC 와 Bean
·
Spring
오늘은 DI와 IoC에 대해서 알아보자DI: 의존성 주입(자바로 객체 주입)IoC: 제어의 역전(자바로 객체를 사용할 때 new 연산자 이용해서 생성)이렇게 개념적으로 말하면 모른다.일단 DI와 IoC를 알아보기 전에 스프링 서브렛부터 보자스프링에서는 객체를 Bean이라고 부른다(그냥 그렇다고 한다..)생성한 Bean(객체)를 컨트롤러에 가져오는 것을 DI(의존성 주입)이라고 부른다.Was는 우리 스프링에서 실행하는 톰캣이라고 생각하면 된다. 📜빈 등록자바나 C++을 사용할 때를 생각해보자 우리는 매번 new키워드를 이용해서 동적으로 객체를 만들고 끄고 하면 굉장히 복잡할 것이다.그래서 우리는 이러한 @Service나 @Component가 붙은 클래스들은 컨테이너에 보관을 해주는 것이다.이것이 바로 빈..
[스프링부트] - Maven 개발환경 준비하기 feat. VSCode
·
Spring
필자는 VSCode를 사용하여 Maven 웹 프로젝트를 생성하려고 한다. 일단 시작전에 확장 탭에서 Spring Initializr Java SupportExtension Pack for Java, Maven for JavaLombok Annotaions Support for VS Code(고추모양) VSCode에서 ctrl + shift + p를 누르면 아래와 같이 뭐 요상한게 생성되는데 뭔지는 잘 모르겠다.그래서 여기 젤 위에 Spring Initializr를 검색해서 Create a Maven Project를 클릭한다.그 후 필자는 SpringBoot 3.4.4를 클릭하였다. 사실 다른건 뭐가뭔지는 모르겠다. 추가로 스냅샷이랑 M3는 알아내면 수정하겠다.※웹 프로젝트를 할거니 Java를 선택한다..
[SpringBoot/스프링부트] - 서버 템플릿 엔진
·
Spring
1. 서버 템플릿 엔진이란?웹 개발에 있어 템플릿 엔진이란, 지정된 템플릿 양식과 데이터가 합쳐져 HTML문서를 출력하는 소프트웨어를 이야기 한다.쉽게 말해 웹 사이트의 화면을 어떤 형태로 만들지 도와주는 양식이라고 보면 된다. 요즘 개발을 시작한 사람들은 리액트(react), 뷰(View)의 View파일들을 떠올릴 수 있을 것이다.모두 결과적으로 지정된 템플릿과 데이터를 이용하여 HTML을 생성하는 템플릿 엔진이다.※템플릿이란?미리 정의된 틀을 의미하며, 특정 데이터를 삽입하여 동적으로 변환할 수 있는 문서를 말한다.웹 개발에서 템플릿은 HTML 코드에 변수를 포함하여 동적인 페이지를 생성할 수 있도록 설계된 파일을 의미한다.2.서버 템플릿 엔진서버 템플릿 엔진은 DB 혹은 API에서 가져온 데이터를 ..