학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 강사님이 해당 서블릿 코드를 작설하실 때에는 response.getWriter().write("ok"); 만으로 postmant 테스트에서 200 ok 와 함께 response body에 ok가 찍히는걸 알 수 있습니다. 하지만 해당 코드로 제 로컬 pc에 실행을 해보니 다 동일하게 잘 전달이 되지만 response body에 아무것도 찍혀 있지 않습니다. 그래서 코드를 response.setContentType("application/json"); response.getWriter().write("{\"status\":\"ok\"}"); 이런식으로 헤더에 본문 내용에 들어갈 타입을 선언하니 잘 출력이 되더라구요 여기서 궁금한점은 왜 차이가 나는가입니다. 제가 아는 선에서는 따로 컨텐트 타입 설정을 안해주면 .getWriter().write()시에 text/plain 타입으로 나가는 걸로 알고 있습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. if(!StringUtils.hasText(item.getItemName())){ // 글자가 없으면 bindingResult.rejectValue("itemName", "required"); } if(item.getPrice() == null || item.getPrice() < 1000 || item.getPrice() > 1000000){ bindingResult.rejectValue("price", "range", new Object[]{1000, 1000000}, null); } if(item.getQuantity() == null || item.getQuantity() >= 9999){ bindingResult.rejectValue("quantity", "max", new Object[]{9999}, null); }; // errors.properties required.item.itemName=상품 이름은 필수입니다. range.item.price=가격은 {0} ~ {1} 까지 허용합니다. max.item.quantity=수량은 최대 {0} 까지 허용합니다. totalPriceMin=가격 * 수량의 합은 {0}원 이상이어야 합니다. 현재 값 = {1} rejectValue()로 price와 quantity를 넘겨서 유효성 검사에서 실패해서 error를 넘겨주는데 왜 전역 에러로는 뜨는데 필드 에러로는 안뜨는거죠?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. if(!StringUtils.hasText(item.getItemName())){ // 글자가 없으면 bindingResult.rejectValue("itemName", "required"); } if(item.getPrice() == null || item.getPrice() < 1000 || item.getPrice() > 1000000){ bindingResult.rejectValue("price", "range", new Object[]{1000, 1000000}, null); } if(item.getQuantity() == null || item.getQuantity() >= 9999){ bindingResult.rejectValue("quantity", "max", new Object[]{9999}, null); }; // errors.properties required.item.itemName=상품 이름은 필수입니다. range.item.price=가격은 {0} ~ {1} 까지 허용합니다. max.item.quantity=수량은 최대 {0} 까지 허용합니다. totalPriceMin=가격 * 수량의 합은 {0}원 이상이어야 합니다. 현재 값 = {1} rejectValue()로 price와 quantity를 넘겨서 유효성 검사에서 실패해서 error를 넘겨주는데 왜 전역 에러로는 뜨는데 필드 에러로는 안뜨는거죠?
ASP.NET Core MVC +ASP.NET Core +REST API +.NET 8.0
12_3강 AutoMapper 설명 중에 MapperConfiguration 설정을 사이트에서 복사해오는 부분이 있습니다. var configuration = new MapperConfiguration(cfg => cfg.CreateMap<Order, OrderD to>(), loggerFactory); 공식사이트에서 new MapperConfiguration 생성시 loggerFactory 가 추가되도록 되어 있습니다. 강의 내용상 아직 DI를 다루지 않았고, 또한 로그가 그렇게 중요한게 아니라면 var configuration = new MapperConfiguration(cfg => cfg.CreateMap<APP_USER, CreatedUserDTO>(), NullLoggerFactory.Instance); 강의 듣는 분들은 이렇게 처리하시면 될 것 같습니다.
[질문] MVC 패턴을 어느 단위로 쪼개서 적용을 해야하는지 궁금합니다. URL이 나뉜다면 적용 각 기능마다 적용 예를 든다면 회원 관련 로직으로 저장,조회,삭제 등이 있는데 각각의 기능마다 MVC를 적용해서 저장 버튼 클릭 -> 저장 로직 실행 후 모델에 정보를 담아서 뷰로 전달 조회 버튼 클릭 -> 조회 로직 실행 후 모델에 정보를 담아서 뷰로 전달 인 것인지 아니라면 저장,조회,삭제를 같은 자바 클래스에서 로직 수행, 모델에 담은 후 각각 뷰로 전달인지 궁금합니다!
앞서 예제로 했던 FrontController의 코드에서는 handlerMapping에서 url에 해당하는 구현체가 핸들러여서 구현체가 곧 핸들러로 이해하고 있었습니다. ai한테 물어보니까 RequestMapping에서의 핸들러는 메소드가 핸들러라 설명하더라구요. 맞는지 궁금합니다. 그럼 RequestMapping을 이용한 핸들러의 알맞는 어댑터는 무조건 RequestMappingHandlerAdapter가 사용되는건가요?
jsp를 이용해서 회원 등록하는 것은 servlet을 사용하는 게 아닌거죠? save.jsp를 보면 MemberRepository memberRepository = MemberRepository.getInstance(); String username = request.getParameter("username"); int age = Integer.parseInt(request.getParameter("age")); Member member = new Member(username, age); memberRepository.save(member); 강의 속에선 request라는 변수를 그냥 쓸 수 있도록 지원했다는 게 무슨 말인지 모르겠습니다. request 변수는 어디서 온 건가요? servlet의 service의 request 파라미터를 쓴거라면 jsp도 servlet을 이용하는 건가요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 스프링 처음 공부하고있습니다. 한번 듣고 어려워서 자바부터 다시 다지고 재도전 하는 중입니다. 생각보다 소요시간이 오래 걸려서 이게 제 길이 아닌건지, 공부 방법이 잘못된건지 질문드립니다.. 강의 1시간 짜리를 듣는다고 했을 때, 4~5시간은 걸립니다 실습에, 복습에, 이해 안가는 코드 공부까지 같이 하는 중입니다.. 이해가 안가서 멈추고 계속 보느라 더 오래 걸리는 것 같아요. 그래도 시간 투자하니 조금은 알 것 같긴 합니다만.. 그치만.. 이게 맞을까요,,?? ㅠㅠ
안녕하세요. application.properties 에 logging.level.org.apache.coyote.http11=debug 를 추가해도 강사님과 같은 결과가 나오지 않는데 뭔가 잘못된 부분이 있을까요? 추가로, IntelliJ Community 버전에서는 application.properties 자동 완성을 사용할 수 있는 플러그인이 따로 없나요?
몇몇 코드들은 강의 중에 바로 복사해 붙여넣어 사용하시는 것 같던데, 혹시 따로 제공되는 코드 파일이 있을까요? 제가 기존에 제공받은 수업 자료 PDF에서 코드를 복사해 붙여넣어 보니 줄바꿈이 이상하게 되거나, 정상적으로 붙여넣기가 되지 않는 경우가 있어서 문의드립니다.
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 대상] 영상 기준: 03:00 ~ pdf 기준: 6.스프링 MVC - 기본 기능.pdf 의 p.48 RequestMappingHandlerAdapter 동작 방식 그림 [질문 내용] 안녕하세요, 영한님. 제가 가진 '호출' 이라는 행위의 동작 방식과 강의(영상 또는 pdf)에서 설명해주신 방식에 괴리가 있어 둘 중 어떤 방식이 적절한 것인지 질문드립니다. 제가 이해한 방식(방식1) RequestMappingHandlerAdapter (이하 핸들러 어댑터)는 Controller (이하 컨트롤러)를 실행(호출)해야 한다. 그런데 클라이언트에게 받은 데이터를 그대로 넘기면 컨트롤러가 받아야 되는 파라미터에 맞지 않는다. 따라서 ArgumentResolver (이하 리졸버)를 호출해서 파라미터에 맞게 변환(빨강, 파랑)해달라고 한다. 핸들러 어댑터는 리졸버로부터 변환된 빨강, 파랑을 받았다. 핸들러 어댑터는 빨강, 파랑을 넘기며 컨트롤러를 호출한다. 강의에서 설명한 방식(방식2) 핸들러 어댑터는 컨트롤러를 호출하기 전, 리졸버에게 빨강, 파랑 파라미터를 요청한다. (리졸버가 작업 모두 완료했다고 가정) 핸들러 어댑터가 컨트롤러를 호출한다. 이때 리졸버가 빨강, 파랑을 컨트롤러에게 넘겨준다. -> 이 부분이 '컨트롤러 호출은 핸들러 어댑터가 하는데 중간에 리졸버가 껴서 파라미터만 넘겨준다'로 받아들여지는데 제가 기존에 알고 있던 '호출' 메커니즘과는 다르다고 생각되어서요. 제가 영한님이 말씀하신 흐름 자체를 잘못 이해한 건지, 아니면 방식1이 적절한 것인지 질문드립니다! 관련 그림
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 인프런 질문 게시판에 있는 내용인데 댓글에 제시된 방법으로 했는데도 해결이 안되므로 글 남깁니다. [질문 내용] 강의 01:36초에 index.html 작성 후 실행하면 Welcome page로 Hello hello가 나와야하지만 에러가 발생해 글 남깁니다.
질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 17:20 부분에 보면 EnhancerBySpringCGLIB 어쩌구 이렇게 나온다는데 프록시로 쓰인다는건 AopCheck Test를 통해서 볼 수도 있고, Assertions로도 확인이 가능한데 저는 로그가 좀 다르게 나옵니다. 다르다기 보다는 19:30:47.432 [Test worker] INFO h.jdbc.service.MemberServiceV3_3Test -- memberService class=class hello.jdbc.service.MemberServiceV3_3$$SpringCGLIB$$0 라고 나오는데, 혹시 EnhancerBySpring~ 이 부분은 어디서 확인이 가능할까요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 자바와 SQL문법도 어느정도 해뵈서 다행히도 영한님이 강의할 때 자바의 문법으로 이해가 됩니다. 하지만 스프링에 관한 것들(MVC, 이노테이션, 내장 서버, 스프링이 뭔지 등등) 이것들이 이해가 잘 안 갑니다. 그냥 이런게 있구나만 알아두고 뒤의 강의에서 다 이해하고 넘어갈 수 있을까요?? 지금은 따라치기만 하면 될까요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] fail을 썻는데 전 빨간 밑줄이 떠요 gpt한테 무르니까 import 써야 한다는데 import쓰고 실행 돌리니까 또 틀렸다고 하고..
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 안녕하세요. Index.html 설정 후 localhost:8080 하여도 welcome page가 뜨지 않습니다. 1:36 확인 부탁드립니다. 감사합니다.