묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
MVC 패턴에서의 검증 책임이 누구에게 있는 지 궁금합니다
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]여기에 질문 내용을 남겨주세요.안녕하세요 MVC 패턴에 대해 생각해보다가 고민이 생겨 질문을 남겨봅니다! 강의를 보면 사용자의 입력값 내지 요청에 대한 입증 책임을 가지는 것은 Controller이고, 그 요청에 대한 비즈니스 로직에 관한 검증 책임은 Service쪽에서 가져간다고 보는 것이 맞을까요? 예를 들어 회원가입을 하는 상황이라고 할 때, "닉네임은 한글로만 이루어진다"라는 상황에서 닉네임을 영어로 쳤다고 가정하면 이에 대한 검증은 Controller, "회원 간 중복된 닉네임은 가질 수 없다"라는 상황에선 Service 쪽에서 한다고 보는 것이 맞을까요? 그렇다면... view에서 검증을 하면 안 되는 이유나 비효율적인 예를 하나 들어주실 수 있으실까요??
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
옵셔널 질문입니다.
회원서비스개발강의에서요.memberRepository.findByname(member.getName())이부분이 4분 5초에는 옵셔널이 있어서 옵셔널이라고 했는데요. 근데 강의에서 옵셔널을 지웠는데도 옵셔널인 이유가 뭔가요?
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
김영한 jpa와db설정, 동작확인
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]여기에 질문 내용을 남겨주세요. 김영한 선생님의 jpa 활용 1 보는중에 오류가 발생해서 왜 나는 지를 모르겠어서 제 코드 링크 올려드립니다...아무리 찾아봐도 저랑 같은 오류나시는 분은 없네요 .. 도와주시면 감사하겠습니다https://drive.google.com/file/d/18zaQUCmzeezfy0cITdcP45qDgXifPgJf/view?usp=sharing
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
세션은 공유해서 쓰나요?
세션에 관해 궁금한게 있습니다.예를 들어 사용자1이 서버에 접속을 하여 로그인을 하여서버에서는 getSession()이라는 함수를 통해 처음으로 접속한 사람이므로세션을 새로 만듭니다.이후 바로 사용자2이 서버에 접속하면 getSession()은 있는 세션을 그대로 사용,즉 세션 1개로 모든 사용자들이 공유하게 되는건가요?
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
HTTP 요청 데이터
HTTP 기본 강의에서는 조회성이면 GET 등록이면 POST수정이면 PUT, PATCH 등등 이런식으로 작성하라고 배웠습니다.그런데 여기서 헷갈리는 부분이 있는데요현재 MVC 강의자료에서HTTP 요청 데이터 - API 메시지 바디 - 단순 텍스트HTTP 요청 데이터 - API 메시지 바디 - JSON형식을 사용하는 경우 주로 POST, PUT, PATCH 메서드를 사용한다고 적혀있습니다. 그러면 스프링 컨트롤러를 API 방식으로 설계할 경우 컨트롤러 특성이 조회성 (EX. 12월 거래내역건 조회)이더라도 POST METHOD으로 작성해야하는건가요?아니면 조회성은 GET METHOD로 작성해야하는건가요??올바르게 작성하고 싶은데 너무 궁금하네요.예시 케이스가 있다면 알려주시면 감사하겠습니다
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
test method에 throws Exception을 붙이는 이유가 궁금합니다.
영한님 강의를 보면 라이브 템플릿으로 test 코드 작성하실때method뒤에 throws Exception이 붙는데 위와 같이 선언하면 해당 메서드가 외부로 Exception 예외를 건내줄 수 있다는 의미 아닌가요??
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
ResponseStatusException
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]ResponseStatusException 예외에서 3번째 파라미터에 illeagalArgumentException 예외를 넣어주셧는데 그말은 IlleaglArgumentException 이 컨트롤러에서 터지면 500 에러인데 ResponseStatusException 에 담아줬기 떄문에 404 에러로 바뀌는건가요 ?
-
해결됨스프링 DB 1편 - 데이터 접근 핵심 원리
커넥션 풀 초기화 시점 질문입니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]강의자료 2p 에 커넥션 풀 초기화 부분을 보면 애플리케이션을 시작하는 시점에 커넥션 풀을 미리 확보해 보관한다고 쓰여있는데, 참고 질문의 답변을 보면 실제 커넥션을 조회할때 풀이 초기화 되는것 같습니다. 커넥션 풀의 초기화는 실 커넥션을 조회할때 되는 것 일까요?맞다면 강의자료에 있는 "애플리케이션을 시작하는 시점에 커넥션 풀은 필요한 만큼 커넥션을 미리 확보해서 풀에 보관한다"라는 문구는 어떤 의미로 사용된 말인지 궁금합니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
Jdbc 회원 리포지토리 구현에서 printStackTrace가 문제를 발생합니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 강의에는 이부분에 문제가 없는데, 코드 복붙하라고 하셔서 복붙했더니 저는 이렇게 뜨는데, 원인과 해결방법 있을까요
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
어노테이션이나 글씨 쓸 때 밑에 자동으로 인식되는거 설정하려면 어떻게 하나요?
[질문 내용]1. 위 내용처럼 .을 입력하면 관련된 내용이 밑에 쭉 뜨는데이런거 뜨게 설정하려면 어떻게 할까요? 그리고 어노테이션 글씨(@Controller, @GetMapping) 색만 화면처럼 변경하고 싶은데 어떻게 하면 되나요? (윈도우기준)저는 현재 위에 사진처럼 보입니다ㅠㅠ
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
테스트 코드에서 update 메서드 질문입니다.
[질문 내용]package hello.itemservice.domain.item; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.Test; import org.springframework.stereotype.Repository; import java.util.List; import static org.assertj.core.api.Assertions.*; class ItemRepositoryTest { ItemRepository itemRepository = new ItemRepository(); // 동작이 하나 끝날 때마다 AfterEach 실행 @AfterEach void afterEach() { itemRepository.clearStore(); } @Test void save() { //given Item item = new Item("itemA", 10000, 10); //when Item savedItem = itemRepository.save(item); //then Item findItem = itemRepository.findById(item.getId()); assertThat(findItem).isEqualTo(savedItem); } @Test void findAll() { //given Item item1 = new Item("item1", 10000, 10); Item item2 = new Item("item2", 20000, 20); itemRepository.save(item1); itemRepository.save(item2); //when List<Item> result = itemRepository.findAll(); //then assertThat(result.size()).isEqualTo(2); assertThat(result).contains(item1); } @Test void updateItem() { //given Item item = new Item("item1", 10000, 10); Item savedItem = itemRepository.save(item); Long itemId = savedItem.getId(); //when Item updateParam = new Item("item2", 20000, 30); itemRepository.update(itemId, updateParam); Item findItem = itemRepository.findById(itemId); //then assertThat(findItem.getItemName()).isEqualTo(savedItem.getItemName()); assertThat(findItem.getPrice()).isEqualTo(savedItem.getPrice()); assertThat(findItem.getQuantity()).isEqualTo(savedItem.getQuantity()); } }update 코드에서 savedItem 과 업데이트한 Item 의 값을 검증했는데 테스트 통과했습니다.... 왜 그런지 알 수 있을까요?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
static 을 사용하게 되었을 때
[질문내용] 약 3분 40초 쯤에서 private static 에서 static 을 사용안하면 따로 클래스를 new 를 사용해서 임포트(?) 할 때 store나 sequence 가 새로 생성된다 하셨는데... static을 사용해야만 클래스를 new 로 생성해도 쌓인 값이(?) 유지 되기 때문에 사용하는게 맞을까요?
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
실무에서 스프링부트의 내장 톰캣만으로 서비스가 되는지 궁금합니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]안녕하세요, 김영한 선생님 덕분에 스프링을 너무 재밌게 배우고 있는 학생입니다. 선생님께서 수업 중에, '옛날에는 스프링부트의 내장 톰캣 서버를 사용하지않고, 따로 톰캣과 같은 WAS를 띄워서 서비스를 배포했기 때문에 war 로 말아서 배포했다.' 라고 해주신 말씀이 있습니다. 제가 다니는 회사에서는 war는 현재 사용하지 않지만, 스프링 프레임워크를 고전 방식으로 사용하면서 Jetty 를 WAS로 사용하고, 한 모듈 당 수 십개의 jar 를 넣어서 배포하는 시스템을 가지고 있습니다. 실제로 다른 회사에서는 실무에서 스프링부트의 내장 톰캣 서버 만으로 대규모 서비스가 굴러가는 것인지 궁금합니다.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
Servlet Context의 request, response를 생성하는 주체
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]Servlet Context의 request, response 객체를 만드는 주체가 어떻게 되나요?앞선 강의에서는 WAS라고 하시고 이번에는 Servlet Context라고 하셔서 좀 헷갈립니다.
-
해결됨스프링 DB 1편 - 데이터 접근 핵심 원리
이 테스트 코드가 통과하는 이유
@Test void test(){ Controller controller = new Controller(); Assertions.assertThatThrownBy(()->controller.controller()) .isInstanceOf(RuntimeSQLException.class); } ***************** static class Service{ Repository repository = new Repository(); NetworkClient networkClient = new NetworkClient(); public void service() { repository.call(); networkClient.call(); } } 지금 서비스 로직에서 메서드 두개를 호출했는데 하나는 RuntimeConnectionException이 throw되고 다른 하나는 RuntimeSQLException이 throw가 되는데 테스트 코드가 성공할 수 있나요??
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
requestBodyJsonV1에 대한 질문이 있습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]requestBodyJsonV1에 대한 질문이 있습니다.@PostMapping("/request-body-json-v1") public void requestBodyJsonV1(HttpServletRequest request, HttpServletResponse response) throws IOException { ServletInputStream inputStream = request.getInputStream(); String messageBody = StreamUtils.copyToString(inputStream, StandardCharsets.UTF_8); log.info("messageBody={}",messageBody); HelloData helloData = objectMapper.readValue(messageBody,HelloData.class); log.info("helloData={}",helloData); response.getWriter().write("ok"); }위는 예제 코드입니다. 아래와 같이 inputStream 을 바로 역직렬화 시키는 것이 효율적이라는 생각이 드는데 문자열로바꾸는 특별한 이유가 있을가요?? 단순 로그로 출력해보기 위함일까요?? 아니면 다른 이유가 있어서 일까요??@PostMapping("/request-body-json-v1") public void requestBodyJsonV1(HttpServletRequest request, HttpServletResponse response) throws IOException { ServletInputStream inputStream = request.getInputStream(); HelloData helloData = objectMapper.readValue(inputStream,HelloData.class); log.info("helloData={}",helloData); response.getWriter().write("ok"); }
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
java.io.EOFException: null 와 404 에러
======================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요?(예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 아니오[질문 내용]여기에 질문 내용을 남겨주세요.서블릿 강의 중에 API 메시지 바디 - JSON을 하면서다음과 같이 진행이 안됩니다. 코드는 강사님 코드와 동일하고, 포스트맨에서 POST로 확인 했는데 콘솔에Content-Type: application/jsonUser-Agent: PostmanRuntime/7.34.0Accept: /Postman-Token: 27fdcc4a-f020-49d5-88f6-0b047d72a545Host: localhost:8080Accept-Encoding: gzip, deflate, brConnection: keep-aliveContent-Length: 45{"username": "hello","age": 20}]이렇게 넘어오지만,(아마 application.properties에logging.level.org.apache.coyote.http11=debug설정에 의해서 저런식으로 콘솔에 찍히는 것 같은데 )System.out.println("messageBody = " + messageBody);System.out.println("helloData.username = " + helloData.getUsername());System.out.println("helloData.age = " + helloData.getAge());로는 콘솔에 안찎히는 것을 보니 RequestBodyJsonServlet 클래스로는 데이터가 넘어오지 못하는 것 같습니다.뭐가 문제일까요.. 커뮤니티에서 비슷한 404 관련,java.io.EOFException를 봐서 build.gradle도 리프레쉬 하고@ServletComponentScan 도 확인해봤는데 여전히 안되네요
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
강의와 동일하게 index.html을 넣었는데, localhost:8080 에서 html을 못띄워요
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. hello html 이 떠야 정상인거같은데,서버는 켜져있는거같은데, html을 못찾네요.spring boot version 은 2.7.17 로 했습니다. (java 11 적용하기위해 마지막 남은 2.x 여서)
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
내용정리 화면은 어디서 볼수있나요?
화면에서 보여주시는 내용정리된 노트?는 어디서 볼수있나요?
-
미해결[NarP Series] MVC 프레임워크는 내 손에 [나프1탄]
el 표현식에서 forward(request, response)로 넘어온 값을 찾지 못합니다.
46_MVC03에 JSTL 적용하기를 듣고 만들어 보는 중에 forEach문 items="" 에서이런식으로 찾을 수 없는 변수라고 뜨네요.controller에서 포워드하고 JSTL 쓰기 전 까진<% %>이 안에서 request.getAttribute("members")로 잘 불러왔는데 어떤 점이 문제인지 모르겠습니다.ㅠㅠ