inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

173만명의 커뮤니티!! 함께 토론해봐요.

assertThrows 오류 관련

해결됨

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

안녕하세요. serviceTest를 하던중에 막혀서 이것저것 다 해봤지만 안돼서 질문드립니다. 다음 사진과 같이 assertThrow에서 오류가 발생합니다. 그래서 이전 코드들도 쭉 봤는데 그렇다기엔 try catch 문에서는 정상적으로 작동합니다. 뭐가 문제일까요?

  • spring
  • spring-boot
  • java
  • MVC
Kun 댓글 1 좋아요 0 조회수 770

컨버터에 대해서 질문있습니다.

미해결

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

강의를 들어보니까 이미 스프링에서 다 컨버터를 만들어서 제공해주고 있다고 말씀하시는데요 그러면 실무에서 개발자가 직접 코딩할일은 없고 만들어진 컨버터를 사용하기만 하면 되는건가요?? 개발자가 컨버터를 직접만들어서 사용할 경우가 있는지 궁금합니다.

  • MVC
  • spring
김은재 댓글 1 좋아요 0 조회수 352

message 처리 질문

미해결

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 제가 이번 강의를 듣고 제 토이 프로젝트에 메세지 처리를 추가 하고 싶어서 Bean Validation을 이용한 검증 코딩을 해봤는데요 @Getter @NoArgsConstructor (access = AccessLevel. PROTECTED ) public class LoginRequest { @NotBlank @Size (min = 2 ) @Email private String email ; @NotBlank @Size (min = 8 , max = 20 ) private String password ; } ------------------------------------------------------------------------------------------------- @Getter @NoArgsConstructor (access = AccessLevel. PROTECTED ) public class UserCreateRequest { @NotBlank @Size (min = 2 ) @Email private String email ; @NotBlank @Size (min = 8 , max = 20 ) private String password ; @NotBlank @Size (min = 2 ) private String name ; } 위와 같이 DTO를 만들고 @PostMapping ( "createUser" ) public Result<UserResponse> createUser ( @RequestBody @Valid UserCreateRequest request) throws NotFoundException { return Result. success ( userService .createUser(request)) ; } 컨트롤러에서 @Valid 어노테이션을 줘서 회원가입을 검증하도록 했습니다. 저는 LoginRequest와 UserCreateRequest의 fieldName이 같고 제약 조건도 거의 똑같다고 생각해서 message 처리를 범용성 있게 하면 좋겠다고 생각했고 그래서 validation-properties를 만들고 그 안에 errorCode + objectName + fieldName 보다는 errorCode + fieldName에 관한 메세지 처리를 했는데요 yml server : port : 8060 spring : application : name : potato-velog-user datasource : url : jdbc:h2:mem:testdb driver-class-name : org . h2 . Driver h2 : console : enabled : true settings : web-allow-others : true path : /h2-console messages : basename : validation encoding : UTF-8 eureka : client : register-with-eureka : true fetch-registry : true service-url : defaultZone : http://localhost:8761/eureka validation-properties NotBlank.email = 이메일을 입력해주세요 . NotBlank.password = 비밀번호를 입력해주세요 . NotBlank.name = 이름을 입력해주세요 Size.email = 이메일은 최소 {0} 글자 이상이어야 합니다 . Size.password = 비밀번호는 최소 {0} 글자 최대 {1} 글자 이하여야 합니다 . Size.name = 이름은 최소 {0} 글자 이상이어야 합니다 . Email = 이메일 형식이어야 합니다 . NotBlank = 공백 안돼요 Size = 사이즈 지키세요 그리고 나서 저는 postMan을 이용해 검증을 시도해 봤는데 { "email" : "aaa@naver.com" , "password" : "11111111" , "name" : "a" } 제가 예상했던건 UserCreateRequest의 name이 Size 조건을 만족하지 못헀기 때문에 Size.name에 관한 메세지(이름은 최소 2글자 이상이어야 합니다) 가 나올거라 생각했는데 Validation failed for argument [0] in public com.velog.veloguser.domain.utils.Result<com.velog.veloguser.domain.dto.response.UserResponse> com.velog.veloguser.controller.UserController.createUser(com.velog.veloguser.domain.dto.request.UserCreateRequest) throws javassist.NotFoundException: [Field error in object 'userCreateRequest' on field 'name': rejected value [a]; codes [Size.userCreateRequest.name,Size.name,Size.java.lang.String,Size]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [userCreateRequest.name,name]; arguments []; default message [name],2147483647,2]; default message [크기가 2에서 2147483647 사이여야 합니다]] 위와 같이 DefaultMessage가 ' 크기가 2에서 2147483647 사이여야 합니다' 라고 나옵니다. 저는 왜 메세지가 저렇게 나오는지 이해가 안가고 만약 Size.name에 관한 메세지를 찾지 못했더라도 Size = 사이즈 지키세요 라는 메세지가 validation-properties에 있기 때문에 '사이즈 지키세요' 라는 메세지가 출력되었어야 하는거 아닌가요?

  • MVC
  • spring
윤현식 댓글 4 좋아요 5 조회수 1915

스프링 웹 프로젝트에서 서블릿 필터, 인터셉터, AOP가 선언된 경우 AOP가 동작하는 시점에 대한 질문입니다.

해결됨

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

안녕하세요. 스프링 MVC Part.2 강좌에서 필터와 인터셉터를 배우고나서, 서블릿 필터, 스프링 인터셉터, AOP가 모두 선언이 되어 있는 경우 AOP가 동작하는 시점에 대해 질문을 드리고자 글을 남깁니다. [강의 자료에서 가져온 필터, 인터셉터의 동작 과정] HTTP 요청 -> WAS -> 필터 -> 서블릿(디스패처 서블릿) -> 스프링 인터셉터 -> 컨트롤러 동작 과정을 보다가 문득 든 생각입니다. '그럼 AOP는 어느 구간에서 요청을 캐치해서 동작하는거지?' 예를 들어, 공통 관심 사항(메소드 실행시간 체크)을 처리하는 AOP를 @Around(핵심 기능 실행 전/후 동작)로 선언했다면 AOP가 동작하는 과정은 아래 과정이 맞을까요? HTTP 요청 -> WAS -> 필터 -> 서블릿(디스패처 서블릿) -> 스프링 인터셉터 -> AOP -> 컨트롤러 무조건 위 과정이 맞는지 아니면 공통 관심 사항을 적용하는 방법 ( 메소드 실행 전 , 후 , 전 + 후 ) 에 따라 바뀌는지 궁금합니다 .

  • 스프링
  • MVC
  • spring
  • filter
  • 필터
  • interceptor
  • 인터셉터
  • aop
Henu 댓글 1 좋아요 5 조회수 391

HomeConroller의 핸들러 메소드에서 로그인 정보를 담는 member 객체에 대한 질문입니다.

해결됨

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

안녕하세요, 로그인 처리2 - 필터, 인터셉터 파트의 'ArgumentResolver' 활용편에서 궁금한 사항이 있어 질문 글을 작성해 봅니다. HomeController에서 '/' URL에 대한 핸들러 메소드 선언시 'member' 파라미터에 대해서는 @Login 어노테이션을 선언하여 직접 구현한 LoginMemberArgumentResolver를 통해 세션에 담긴 로그인 객체를 바인딩(?) 시켜주는 과정을 확인할 수 있었습니다. 만약, HomeController에서 '/' URL 요청 매핑 외 다른 URL 요청 매핑을 처리할 수 있는 여러 핸들러 메소드가 선언되고, 기획자 또는 클라이언트의 요구사항에 따라 HomeController에서 처리되는 모든 핸들러 메소드에 대해서는 로그인 객체를 이용하여 무언가 분기 처리를 해야하는 로직이 포함되어 있어야 한다면(분기 처리는 각기 다른 로직을 포함하고 있습니다.) HomeController에 존재하는 모든 핸들러 메소드의 파라미터로 '@Login Member member'가 선언이 되어야 할 것 같다라는 생각이 들었습니다. 이 또한 반복적인 코드가 아닐까 싶은데요. HomeController에서 ' 전역적 '으로 로그인 정보를 포함하고 있는 객체를 선언하고, 이를 핸들러 파라미터로 굳이 선언하지 않아도, 각 핸들러 메소드에서 사용할 수 있는 방법이 있을까요? P.S HTTP 요청 -> WAS -> 필터 -> 서블릿(디스패처 서블릿) -> 스프링 인터셉터 -> 컨트롤러 흐름을 생각해 보면... 서블릿 필터 또는 인터셉터를 통해 매 요청에 세션에 담긴 로그인 정보를 핸들러 메소드에 각각 다시 주입(?) 시켜줘야 할 것 같은데 실무에서 보통 이렇게 처리하는지 아니면 다른 방법이 있는지 궁금합니다. 미리 답변 감사드립니다 .

  • 스프링
  • spring
  • ArgumentResolver
  • MVC
Henu 댓글 1 좋아요 7 조회수 411

th:field 사용시 id와 name을 같이 변경하는 이유가 뭘까요?

해결됨

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

id는 css나 javascript에서 HTML element를 특정할 때 사용하는 거잖아요? 단일 css 파일이나 js 파일을 쓴다고 가정한다면 어플리케이션 전체 html 상에서 그 id는 유일성이 보장되어야지 나중에 화면이 꼬이거나 javascript가 꼬이거나 하는 일이 없을 거 같거든요. 만약 퍼블리셔나 프론트엔드 개발자가 A form에서는 <input id="itemNameA" > B form에서는 <input id="itemNameB"> 라고 잡아놓고 퍼블리싱이나 클라이언트 쪽 개발을 했다면, 나중에 백엔드 개발자가 A form에는 <form th:object = "${itemA}"> <input id="itemNameA" th:field="*{itemName}"> </form> B form에는 <form th:object = "${itemB}"> <input id="itemNameB" th:field="*{itemName}"> </form> 이렇게 해버리면 id를 서로 다른 DTO의 같은 필드명을 사용해버려서 문제가 생길 것 같은데요. 그런데 타임리프 개발자들이 id랑 name 모두 바뀌도록 설정해놓은 것은 무언가 깊은 뜻이 있어서일 것 같은데, 제가 생각하는 문제가 일어날 가능성이 없는 건가요? 제가 무언가 잘못 이해하고 있는 건가요?

  • spring
  • MVC
컴퓨터공부하자 댓글 1 좋아요 2 조회수 385

AOP와 서블릿 필터/스프링 인터셉터의 사용 시점에 대한 질문입니다.

해결됨

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

안녕하세요. 서블릿 필터 - 소개 강의 내용 4:45 부분에서 '웹과 관련된 공통 관심사는 AOP보다 서블릿 필터 또는 스프링 인터셉터를 이용하는 것이 좋다.' 라는 말씀을 언급해 주셨는데요. 스프링 입문 강의 파트에서 AOP에 대해서 맛보기로 다룰 때 예제 코드에서는 특정 메소드의 실행 시간을 출력해 보는 용도로써 AOP 기술을 사용해 본 적이 있습니다. 여기서 궁금한 것은 실무에서. 물론 규모에 따라 다르겠지만, 보편적으로 웹과 관련된 공통 관심사를 서블릿 필터와 스프링 인터셉터로 구현했다면 AOP 를 사용하여 구현할 공통 관심사항에는 메소드 실행시간 외 어떤 것들이 있는지 궁금합니다 . 미리 답변 감사드립니다.

  • 스프링
  • aop
  • MVC
  • spring
  • filter
  • interceptor
Henu 댓글 1 좋아요 4 조회수 359

whitepage에러 질문드립니다

미해결

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

package mvcStructure.basic.request ; import lombok.extern.slf4j. Slf4j ; import org.springframework.stereotype. Controller ; import org.springframework.web.bind.annotation. RequestMapping ; import org.springframework.web.bind.annotation. RequestParam ; import org.springframework.web.bind.annotation. ResponseBody ; import javax.servlet.http.HttpServletRequest ; import javax.servlet.http.HttpServletResponse ; import java.io.IOException ; @Slf4j @Controller public class RequestParamController { @RequestMapping ( "/request-param-v1" ) public void requestParamV1 (HttpServletRequest request , HttpServletResponse response) throws IOException { String username = request.getParameter( "username" ) ; int age = Integer. parseInt (request.getParameter( "age" )) ; response.getWriter().write( "ok" ) ; } @ResponseBody @RequestMapping ( "/request-param-v3" ) public String requestParamV3 ( @RequestParam String username , @RequestParam String age){ log .info( "username = {}, age = {}" , username , age) ; return "ok" ; } //@RequestParam 생략하고 단순 타입이면 자동으로 RequestParam 이라고 요청 파라미터라고 인식한다 @ResponseBody @RequestMapping ( "/request-param-v4" ) public String requestParamV34 ( String username , String age){ log .info( "username = {}, age = {}" , username , age) ; return "ok" ; } @ResponseBody @RequestMapping ( "/request-param-Required" ) public String requestParamRequired ( @RequestParam (required = true ) String username , @RequestParam (required = false ) Integer age){ log .info( "username = {}, age = {}" , username , age) ; return "ok" ; } } 현재소스이고 경로는 아래와 같이 했습닌다 =========================================== properties속성은 아래와 같습니다 ============================ #mvcStructure.~~ 패키지와 그 하위 로그레벨 설정 logging.level.root = info logging.level.hello.springmvc = debug ============================== 현재 접속하면 whitepage가 나는건 왜그런가요

  • springmvc
  • MVC
  • spring
댓글 1 좋아요 0 조회수 249

에러 URL질문있습니다.

미해결

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

현재 error-401치고 들어가면 강의대로라면 4xx 오류 화면 ~~~라고 떠야되는데 404로 뜨고 있는 현상입니다. 왜 그런지 알 수 있을까요?? 현재 ServletExController에 /error-401이 등록되어 있지 않아서 그런건가요?? 만약에 그렇다면 강의에서 404이외에 4xx대의 URL은 4xx.html이 뜬다고 말씀해주셨는데 이해가 되지 않습니다.

  • spring
  • MVC
김은재 댓글 2 좋아요 3 조회수 685

@ModelAttribute 질문 있습니다.

해결됨

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

안녕하세요 영한님 강의 정말 잘 보고 있습니다!! 다름이 아니라 MemberController의 addForm 메서드 파라미터를 @ModelAttribute("member") Member member 위와 같이 받으신 이유가 단순히 아래와 같이 Model을 파라미터로 받아서 직접 추가하는 것과 같은 효과를 내기 때문인가요? @GetMapping("/add") public String addForm(Model model) { model.addAttribute("member", new Member()); return "members/addMemberForm"; }

  • spring
  • MVC
springbom 댓글 2 좋아요 4 조회수 500

라디오 버튼에 기본값 설정

해결됨

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

라디오 버튼의 경우 모두 선택하지 않는 null을 사용할 경우는 거의 없어 보입니다. 따라서 처음 addForm을 표시할 때 부터 제일 앞의 도서가 선택되어있는 상태로 만들고 싶은데 이 경우는 Thymeleaf에서 어떻게 할 수 있을까요? [x] 도서 [ ] 음식 [ ] 기타

  • 라디오버튼
  • spring
  • 기본값
  • MVC
YONGHYUN LEE 댓글 3 좋아요 2 조회수 1191

강의 관련 질문이 있습니다.

미해결

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

항상 좋은 강의 감사드립니다. 1. Member loginMember = memberRepository .findById(memberId) ; if (loginMember == null ) { return "home" ; } 이부분 로직에서 궁금한것이 쿠키가 이미 발급되었다는것은 로그인 입력정보와 일치하는 회원이 회원저장소에 존재한다는것을 전제로 하는데 왜 loginMember과 null인지 한번더 검증하는지 이해가 가질 않습니다. 2. cookie만료와 관련해서 addcookie를 여러번 하면 결국 오버랩되어서 마지막으로 set-cookie로 보낸 쿠키만이 저장되는 것인가요?? 3. loginhome에서 로그아웃을 왜 post메서드로 보내는지 이해가 가질 않습니다. 단지 maxage가 0인 쿠키만 보내고 홈화면으로 리다이렉트로 get하면 되는것 아닌가요???

  • spring
  • MVC
rere 댓글 2 좋아요 1 조회수 1312

java 객체, enum

미해결

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

안녕하세요~ modelattribute로 값을 넘길때, Map, enum, java object 등 다양한 방법으로 예시를 보여주셨는데요 어떤 경우에 어떤 type을 쓰는지 궁금합니다.

  • MVC
  • spring
조용한 바닷가재 댓글 1 좋아요 3 조회수 264

강의 업로드 일정 질문있습니다.

미해결

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

영한님 강의 매우 잘 듣고 있습니다. 9월까지 모든 강의를 다 들을 것 같은데 혹시 "스프링 DB 접근 기술"과 "스프링 부트"는 언제 쯤 나오나요? 감사합니다.

  • MVC
  • java
  • spring
  • spring-boot
댓글 1 좋아요 0 조회수 174

인터셉터 대신 필터를 사용해야되는 특별한 상황이 어떤 상황인지 궁금합니다.

미해결

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

  • 인터셉터
  • 필터
  • MVC
  • spring
펭귄 댓글 1 좋아요 3 조회수 732

미리 사용할 정보를 다음과 같이 구현하면 되는 것인지 궁금합니다!!!

해결됨

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

안녕하세요 강사님. 항상 좋은 수업 감사드립니다. 다름이 아니라 @ModelAttribute를 사용하면 매번 생성하는 문제가 있다고 하셔서 한번 제 생각대로 구현해봤습니다. 이전 Memory에 사용했던 싱글톤 패턴? 형식으로 DeliverCode 값을 초기화한 List를 가지는 클래스를 구현하고 이를 호출하는 식으로 구현하였는데 이런 방식으로 사용하면 되는것인지 궁금합니다. package hello.itemservice.domain.item ; import java.util.Arrays ; import java.util.List ; public class DeliveryCodesCreate { private static final List<DeliveryCode> deliveryCodes = Arrays. asList ( new DeliveryCode( "FAST" , " 빠른 배송 " ) , new DeliveryCode( "NORMAL" , " 일반 배송 " ) , new DeliveryCode( "SLOW" , " 느린 배송 " ) ) ; public static List<DeliveryCode> getInstance () { return deliveryCodes ; } private DeliveryCodesCreate () { } } @ModelAttribute ( "deliveryCodes" ) public List<DeliveryCode> deliveryCodes () { // List<DeliveryCode> deliveryCodes = new ArrayList<>(); // deliveryCodes.add(new DeliveryCode("FAST", " 빠른 배송 ")); // deliveryCodes.add(new DeliveryCode("NORMAL", " 일반 배송 ")); // deliveryCodes.add(new DeliveryCode("SLOW", " 느린 배송 ")); // return deliveryCodes; return DeliveryCodesCreate. getInstance () ; }

  • MVC
  • spring
최한슬 댓글 1 좋아요 18 조회수 380

이 강의를 다 들은 후 어떤 로드맵을 따라갈까요?

미해결

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

이 강의를 들으며 스프링을 처음 공부해봤습니다. 이 강의를 다 들은 후 [스프링 완전 정복]로드맵을 들을지 [스프링부트와 JPA 완전 정복]을 들을지 고민이 되는데, 추천해주실 수 있나요? 현재 저의 상황을 말씀드리자면 이 강의를 듣기 전 장고로 간단하게 개인 프로젝트를 해본 적이 있습니다. 규모는 크지 않고 간단한 CRUD 정도 해봤습니다. 현재 앱개발 외주를 받았는데, UI를 만드는 사람은 따로 있고 저는 백엔드 서버만 개발하면 됩니다. (외주 개발 기간은 2달 +@ 입니다. 기능은 로그인, 회원가입, 결제.. 등이 있고 택배 어플과 유사한 기능을 하는 앱입니다) 이런 상황을 전체적으로 고려했을 때 어떤 로드맵이 더 좋을까요? 참고로 김영한님의 모든 강의는 이미 구매했습니다.

  • spring
  • spring-boot
  • MVC
  • java
댓글 1 좋아요 0 조회수 306

@Valid를 이용하여 BeanValidation과 @InitBinder를 동시에

미해결

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

만약 다음과 같이 인풋을 받았다고 가정하겠습니다. @Valid @ModelAttribute ItemDto itemDto 이 경우에, 각 필드에 대한 검증은 ItemDto 내의 @NotBlank, @Max, @Min과 같은 어노테이션으로 해결하고, ObjectError의 경우 ItemDtoValidator를 만들어 Validator를 구현하여 @InitBinder로 등록해두는 건 안되나요..?

  • spring
  • MVC
댓글 3 좋아요 4 조회수 443

세션 관련 질문 드립니다.

미해결

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

안녕하세요 강의 잘 듣고 있습니다. 실무에서는 서버를 여러대로 운영할텐데 이렇게 로그인 정보를 세션으로 관리를 하나요?

  • spring
  • MVC
jung 댓글 1 좋아요 3 조회수 358

호출 흐름

미해결

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

안녕하세요 전체적인 흐름을 여쭤보고싶은데요. 순서가 1. servlet에 호출 2.비즈니스 로직처리하고 members attribute 설정 3. forward로 해당 jsp 로 이동 4. jsp 내에서 attribute들 입력 5. 해당 jsp response 이고 정적 HTML은 해당 경로파일을 내려보내주는거지만 JSP 는 model data들을 jstl로 세팅한 후에 리스폰스되는데 내부적으로는 세팅된 jsp 파일을 response.writer써준다 생각하면 맞나요?

  • spring
  • MVC
댓글 1 좋아요 0 조회수 293

인기 태그

인프런 TOP Writers

주간 인기글