목록백엔드 기술 정리 (28)
-
이번에 해볼 것은 이전에 만든 SingupDto의 변수 4가지를 User라는 모델에 담을 것입니다. 이전에 살펴봤든 User라는 모델은 이렇게 많은 변수를 가지고 있었고 SignupDto에는 고작 4가지의 변수만 가지고 있기 때문에 이것들을 다 담으려면 DTO를 이용해서 함수를 하나 만드는 것이 가장 좋습니다. 그러므로 제일 먼저 User클래스에서 @Builder라는 어노테이션을 붙힙니다. 그리고 SignupDto로 이동해서 이렇게 입력합니다. 이 @Builder 어노테이션은 쉽게 말해 클래스에게 빌더 패턴을 적용시켜서 정적 메서드로 구현되는 빌더객체를 생성시켜줍니다. 따라서 우리가 User의 toEntity()메서드를 만들 때 이 @Builder만 User에게 붙혀주어도 여기서 파생되는 여러가지 메서드..
로그인 인풋입니다. 우리는 회원가입할 때 아주 간단히, username, password, email, name 이렇게 4가지 요소만 받아서 사용자 모델을 만들어 볼 것입니다. 우선 저는 web 패키지 내부에 dto.auth라는 패키지를 또 따로 생성하여 SignupDto라는 클래스를 만들었습니다. DTO는 Data Transform Object의 약자로서 통신할 때 필요한 데이터를 담아두는 오브젝트입니다. 여기에 우리는 4가지의 데이터를 담아야겠죠? (username, pw, email, name) 그래서 적어봅시다. 이렇게 적는데, Dto클래스는 위에 @Data라는 어노테이션을 걸면 좋습니다. 저걸 걸게되면 따로 Getter, Setter를 오버라이딩 안해도 되기 때문에 (롬복 라이브러리에 의해) 상..
스프링부트는 시큐리티 기능을 제공하고 있습니다. 사용자가 로그인을 하고 사이트를 들어가려고 할 때 허가 없이 사이트의 정보를 얻으면 안되겠죠? 스프링부트에서는 이 기능을 제공함으로써 허가된 사용자에게 권한을 줄 수 있습니다. 일단 시큐리티 세팅을 해보도록 하겠습니다. 저는 css, html파일은 인스타그램 클론 코딩의 프론트단을 받아서 사용하고 있어서 따로 프론트 쪽 설명은 하지 않습니다. 이렇게 생겼습니다. 근데 중요한건 localhost:8080만 입력해도 8080/login으로 변경이 됩니다. 왜냐하면 pom.xml보면 시큐리티 라이브러리가 이렇게 등록이 되어 있습니다. 이 라이브러리가 어떤 역할을 하냐면, 클라이언트가 우리 서버에 들어오려고 하면 인증되지 않은 모든 사용자를 로그인창으로 Redir..
자 컨트롤러가 있다고 가정해봅시다. @RestController말고 @Controller라고 해보겠습니다. static void lol(@PathVariable int id ... ) { User entity = model.attribute(user.getName()); /** 10000줄 **/ } main이라는 함수에 id를 주소 변수 매핑을 이용하여 파라미터로 가져오고 10000줄에 달하는 코드가 있다고 해봅시다. 그리고 그 밑에 static void lol(@PathVariable int id ... ) { User entity = model.attribute(user.getName()); rawPassword = entity.getPassword(); String password = encode..
Http에서 데이터를 요청할 때 2가지 방식으로 나눌 수 있습니다. 첫 번째로 쿼리스트링(querystring), 두 번째로 주소변수매핑(path variable)이 있습니다. 스프링부트에서는 주로 주소변수 매핑을 사용하고 있는데 서로 어떤 차이가 있는지 한 번 알아보겠습니다. 제가 떡볶이를 좋아하니까 떡볶이 집에 제가 배민으로 주문을 한다고 가정해봅시다. 뭐 먹을지 고민하다가 로제 떡볶이, 치즈 떡볶이 중에서 전 치즈 떡볶이를 시키려고 결정했다고 해봅시다. 이 때 제가 배민에서 떡볶이집 가게를 클릭해서 들어갈 때부터 한 번 살펴봅시다. 이런식으로 제가 떡볶이집 가게를 들어가서 이 가게에 대한 메뉴를 고르려고 할 때 저흰 가게에 대한 정보가 필요합니다. 이때 GET동작방식이 실행되어 가게의 정보를 확인할..
이번 시간엔 Controller에 대해 자세히 다루어보겠습니다. 이전에도 Controller에 대해 설명했지만 이것의 실제 사용에 대한 설명이 미숙한 것 같아 이것이 어떻게 쓰이고 어떻게 데이터를 전달하는지 등을 다루어보려고 합니다. 누군가가 Login요청을 했다고 가정해봅시다. 그러면 원래 스프링부트는 서블릿이라는 것이 만들어져있는데 이 서블릿은 자바로 매핑할 수 있게 만듭니다. 그래서 로그인요청을 하려면 login.java라는 파일을 요청해야 합니다. 회원가입 요청이 들어왔을 때도 join.java를 요청해야할 것입니다. 게시글 쓰기도 요청이 들어올 때 write.java라고 요청해야할 것이니다. 이렇게 요청을 할 때마다 java파일이 호출되기 때문에 이게 너무 번거로운겁니다. 그래서 하나의 java..