목록스프링부트 (21)
-
시큐리티는 거의 마무리가 되었습니다. 이제 해결해야할 부분은 이미지 처리와 연결, 팔로잉구현, 회원정보 수정, 게시글 올리기 등을 해보겠습니다. ImageController를 만들겠습니다. 그런 다음 이미 프론트단은 거의 구현이 되어 있기 때문에 다음과 같이 만들어서 홈페이지와 인기페이지를 GetMapping으로 구현합니다. 마찬가지로 클래스를 하나 더 만들건데, UserController라고 짓고 회원정보페이지를 들어갈 수 있는 함수를 만듭니다. 그리고 /user/로 들어가서 회원별로 프로필을 들어갈 수 있게 /user/{id}라고 입력하면 입력되는 id값에 따라 페이지를 구분지어서 접속할 수 있습니다. 그러므로 파라미터로 가져올 때도 이런식으로 가져와야 합니다. 이렇게 파라미터를 가져오는 바인딩 방식..
이제는 로그인을 구현해보도록 하겠습니다. 마찬가지로 기본 프론트 양식은 갖추어져 있기 때문에 다듬는 과정으로 진행할 것입니다. signin.jsp의 action과 method를 다음과 같이 바꿉니다. 이렇게 로직을 짜면 로그인할 때 제출 방식이 "POST"가 됩니다. 아마 이런 질문을 하실 수도 있을 것 같습니다. "데이터를 입력하는데 도대체 왜 post방식을 써야 하나요?" 라고 말이죠. 지금 로그인은 데이터를 Insert하는 것이 아니라 데이터를 Select하는 것이 아닌가? 도 생각할 수 있습니다. 맞습니다. 원래는 아시다시피 Select할 때에는 Get방식을 채용해야 합니다. 그런데도 method = "POST"라고 입력한 이유는 username과 pw는 귀중한 정보이기 때문에 GET방식을 쓰게되..
저번 포스팅에서 우리는 Map을 이용해서 return했었습니다. 그런데 문제가 하나 있는데, 길이를 아주 길게 써서 작성하면 정상적으로 오류를 뱉지만 "유효성 검사에 실패했습니다" 메세지도 같이 출력하고 싶은데 그렇지 못띄웁니다. 메세지도 같이 띄우고 싶은데 그러지 못하기 때문에 dto에 클래스를 하나 만듦으로써 공통 응답 처리를 한 번 해보도록 하겠습니다. 이런식으로 web - dto내부에 auth 내부가 아닌 곳에 CMRespDto 클래스를 생성해보겠습니다. 그리고 Getter, Setter대신 롬복 라이브러리를 이용하고 있으므로 Data어노테이션과 No-, All-어노테이션을 답니다. 우리는 message와 errorMap 둘 다를 받고 싶은 것이기 때문에 dto는 이쯤 해두고 ControllerE..
지난 포스팅에 이어서 진행해보도록 하겠습니다. @ResponseBody 어노테이션을 달 경우 Controller가 붙혀져 있다 하더라도 return할 때 데이터를 return할 수 있다고 했었습니다. 그런데 이렇게 분기를 이용해서 return하게되면 file과 데이터를 다 return할 수는 없기 때문에 이 예외를 공통으로 처리하는 Handler가 필요해지게 됩니다. 그러므로 제가 해볼 것은 if문을 통해서 만약 에러가 발생했다면 이를 errorMap에 담아서 에러가 발생했다고 바로 return하지 않고 throw를 이용해서 나타낼 것입니다. 바로 이렇게요. 그리고 서버를 실행하고 오류를 일부러 발생시키면 다음과 같이 출력이 됩니다. 근데 회원가입하시면서 이렇게 뜨는 사이트를 혹시 보신적 있으신가요???..
이번에 해볼 것은 이전에 만든 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를 오버라이딩 안해도 되기 때문에 (롬복 라이브러리에 의해) 상..