월 19,800원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
JSP파일 인식
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]사진처럼 JSP코드에서 자바코드가 인식이 안되네요...라이브러리 설치하라는데로 했는데 뭐가 문제인지알수있을까요?build.gralde 파일plugins { id 'java' id 'war' id 'org.springframework.boot' version '3.2.1' id 'io.spring.dependency-management' version '1.1.4' } group = 'hello' version = '0.0.1-SNAPSHOT' java { sourceCompatibility = '17' } configurations { compileOnly { extendsFrom annotationProcessor } } repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' //JSP 추가 시작 implementation 'org.apache.tomcat.embed:tomcat-embed-jasper' implementation 'jakarta.servlet:jakarta.servlet-api' //스프링부트 3.0 이상 implementation 'jakarta.servlet.jsp.jstl:jakarta.servlet.jsp.jstl-api' //스프링부트 3.0 이상 implementation 'org.glassfish.web:jakarta.servlet.jsp.jstl' //스프링부트 3.0 이상 //JSP 추가 끝 compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok' //providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat' testImplementation 'org.springframework.boot:spring-boot-starter-test' } tasks.named('test') { useJUnitPlatform() }
- 해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
RequestMapping에 대해서 궁금한점이 있습니다.
@RequetMapping의 경우 기존 Handler가 Class단위로 매핑되던것에서 -> Method단위로 매핑된다고 하셨는데 그러면 해당 부분을 동작할때 내부에서 리플렉션을 활용해서 invoke형식으로 작동되는 방식인건가요
- 해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
섹션2. 서블릿 / Hello 서블릿 에서
로그 기록에서 Receive[] 를 찾는 부분입니다.강사님의 로그 기록이 나오지 않습니다.Ultimate 버전을 구매하면 나온다는 내용이 구글 검색에서 보이는데요,아무래도... 해당 로그를 보려면 Ultimate 버전을 구매해야겠죠?
- 해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
@RequestMappingHandlerAdapter 관련 질문
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]V5강의에서 HandlerAdapter가 HandlerMapping를 통해 모든 핸들러를 조회한 뒤 적절한 핸들러를 호출한다고 이해했습니다 그런데 이 강의에서는 정확히 어떤 역할을 하는 지 궁금합니다.SpringMemberFormControllerV1, SpringMemberListControllerV1를 V5 강의에서 보여주신 V3,V4로 생각하면 될까요?
- 미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
viewResolver
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]핸들러 어댑터가 핸들러를 사용해서 ModelAndView를 return하면 Dispatcher Servlet이 내부에서 자동으로 InternalResourceViewResolver(이 예시기준)에 ModelAndView의 viewName을 인자로 넘겨서 다시 View를 DispatcherServlet이 돌려받는 건가요??
- 미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
질문 있습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.save 메소드를 보면 Model을 파라미터로 받고있는데요 앞서 MVC를 직접 구현하는 단계에서는 Map<String,Object> model을 FrontController에 구현해서 받았었는데, 어노테이션 기반에서도 Model이 Dispatcher 서블릿에 구현되어 있는건가요?
- 해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
폼에서 저장 페이지로 넘어갈 때의 POST에 대한 궁금증
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]HTTP GET 방식 기능 : 조회HTTP POST 방식 기능 : 처리 , 저장 , 등록 , ...와 같이 알고 있습니다. 즉 사진에서 노란색 밑줄 친 코드는 현재 폼에서 입력된 데이터를 /servlet/members/save 경로에서 "처리"할 것을 요구하는 코드로 이해했습니다./servlet/members/save 경로에 해당되는 MemberSaveServlet 클래스에선 폼에서 발생한 데이터를 "저장"시키는 역할을 하고요. 그런데 다음과 같이 실제 폼에서 username과 age를 입력한 후 submit을 누르면 다음과 같이 /servlet/members/save페이지가 "조회"되면서 데이터가 "저장"되는 두 가지 작업이 동시에 일어나는 것을 확인할 수 있었습니다. 저는 POST 방식은 데이터 "조회"가 아닌 데이터 "처리"로 알고 있어서 폼에서 데이터를 입력하면 페이지에는 아무런 변화가 없고 그냥 데이터가 "저장"만 되는 것으로 알고 있었습니다그래서 /servlet/members/save 페이지를 "조회"해서 데이터가 잘 "저장"됐는지 확인하려면 GET 을 통하여 해당 페이지로 넘어가게끔 추가로 로직을 구성해야되는 것으로 생각하였습니다.[핵심 질문]이에 따라 앞으로 POST 방식을 쓰는 경우 페이지가 "조회"되면서 데이터 "처리"가 동시에 순차적으로 일어난다고 봐도 될지 궁금합니다 !
- 해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
save() 테스트 시 findById() 사용 이유
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용][선생님 테스트 로직]@Test void save() { Member member = new Member("hello", 20); Member savedMember = memberRepository.save(member); Member findMember = memberRepository.findById(savedMember.getId()); assertThat(findMember).isEqualTo(savedMember); }다음의 코드와 같이 선생님께서는 save() 테스트를 할 때 findById() 로직도 사용하시는 것을 확인할 수 있었습니다.하지만 findById() 로직은 아직 테스트를 거쳐서 검증받지 못한 로직이므로 findById()를 쓰는 것이 아닌 순수 save()만 가지고 테스트를 해야하지 않을까 하는 궁금증이 생겼습니다! [제 테스트 로직]@Test void save() { Member member = new Member("hello", 20); Member savedMember = memberRepository.save(member); assertThat(member).isEqualTo(savedMember); }그래서 이런 식으로 테스트 하는 것이 어떠한지 선생님께 질문 드리고 싶습니다!들여쓰기가 안 되어서 올라갔네요 ㅠㅠ..!! 수정해서 다시 올렸습니다 !
- 미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
스프링 핸들러매핑, 핸들러 어댑터, 컨트롤러
안녕하세요!스프링 MVC와 관련하여 궁금한 점이 있습니다.스스로 만든 프레임워크에서는 다양한 형태의 헨들러를 다루기 위해 핸들러 어댑터 목록과 핸들러 매핑을 도입한 것으로 이해하고 있습니다. 스프링 MVC의 경우 99.9% RequestMappingHandlerMapping 과 RequestMappingHandlerAdapter를 쓴다고 강의자료에 나와 있는데요, 그렇다면 사실상 핸들러(컨트롤러)도 하나의 통일 된 형태를 가지고 있는건가요? 감사합니다.
- 미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 11:54초에 보면 HandlerAdapter에 의해서 handle 메소드가 실행되고, 우리가 앞서 정의했던 핸들러가 호출이되는데 여기서 핸들러 어댑터 안에 있는 ((HttpRequestHandler) handler).handleRequest(request,response); 이 부분은 우리가 메소드를 스프링 빈에 등록해서 생성된 것인가요? 아니면 우리가 메소드 이름을 일부러 맞춰준건가요?
- 미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
V5 save에서 500오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]회원 가입 페이지와 회원목록은 잘 나오는데 save에서 계속 500 오류가 뜨네요 ㅠㅠ 강의랑 똑같이 따라친거같은데 왜 오류가 발생하는지 모르겠습니다.오류코드는 이렇게 뜹니다.2024-01-11T19:21:07.392+09:00 ERROR 31571 --- [nio-8080-exec-2] a.c.c.C.[.[.[.[frontControolerServletV5] : Servlet.service() for servlet [frontControolerServletV5] in context with path [] threw exception
- 해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
중복과 별도 클래스 선언
안녕하세요! 설계와 구현 부분과 관련하여 궁금한 점이 있습니다!중복이란 여러 클래스에서 반복적으로 나타나는 코드 덩어리라고 보면 되나요?중복되는 부분을 묶어서 별도의 클래스로 묶는건가요?클래스로 묶으면 유지보수하기가 더 좋아져서 그런건가요?감사합니다!
- 미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
Execution failed for task ':ServletApplication.main()'.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]java 17, gradle 8.5 를 사용하고 있는데 갑자기 실행이 안됩니다. Execution failed for task ':ServletApplication.main()'.> Process 'command '/Users/gangminhui/Library/Java/JavaVirtualMachines/corretto-17.0.9/Contents/Home/bin/java'' finished with non-zero exit value 1* Try:> Run with --stacktrace option to get the stack trace.> Run with --info or --debug option to get more log output.> Run with --scan to get full insights.> Get more help at https://help.gradle.org.Deprecated Gradle features were used in this build, making it incompatible with Gradle 9.0.You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins.For more on this, please refer to https://docs.gradle.org/8.5/userguide/command_line_interface.html#sec:command_line_warnings in the Gradle documentation.BUILD FAILED in 2s3 actionable tasks: 1 executed, 2 up-to-date
- 미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
Controller 비즈니스 로직
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]현재 강의 기준으로는 Controller에서 비즈니스 로직을 수행한다고 봐야 하나요?? 아니면 Controller안에 service매서드가 있으니 비즈니스 로직 서비스를 호출한다고 봐야 하나요?
- 해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
JSON 파싱과 매핑에 차이
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]일반적인 문자열 데이터에 불과했던 JSON을 파싱을 통하여 객체로 변환해주어 JSON 객체로서 내부의 각 데이터에 접근할 수 있다고 알고있습니다.그런데 강의를 듣다가 매핑이란 개념도 등장하는데 JSON 매핑과 파싱에 차이가 무엇인지 궁금합니다!
- 미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
질문있습니다.
Controller V3에서 Map<String,String> paramMap이 HttpServletRequest를 대체하고 있는데 이 과정이 잘 이해가 가지 않습니다. paramMap이 어떻게 매개변수를 받을 수 있는건가요? 그리고 쿼리문 말고도 Body도 받을 수 있는지 궁금합니다.
- 미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
MemberRepositoryTest() 의 save() 질문
안녕하세요.강의를 보기 전에 테스트를 먼저 작성해보고 강의를 보았는데 제가 생각했던 테스트 코드와 차이가 있어서 질문 드립니다.(당연히 다양한 방법의 테스트 코드가 나올 수 있음은 알고 있습니다. ) 저의 경우, MemberRepositoryTest()에서 save 메서드를 테스트할 때 findById처럼 같은 클래스 내의 다른 메서드를 사용해서 테스트하게 되면 오류가 났을 때 어떤 부분인지 바로 알기 힘들 것 같아 다른 메서드를 사용하지 않는 방식으로 테스트 코드를 작성했습니다. 그러나 강의를 보면 위와같이 다른 메서드를 사용해서 테스트해도 상관없는 듯 하여 통상적으로 테스트 코드를 작성할 때 다른 메서드를 같이 사용해도 상관이 없는건지, 궁금증이 생겨 질문을 남기게 되었습니다.
- 미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
단순 호기심으로 인한 질문입니다!
서블릿은 의존관계가 필요가 없는가?고찰 : 1번질문은 사실 질문을 올려봤는데 질문에 대한 답변이없어서 묻힌거같아 한번더올려봅니다!영한님께서도 다른분이 질문하셨을때 서블릿은 의존관계가 필요없다고 말씀하셨습니다. 그 이유를 한번 생각해봤는데, 의존관계라는게 쉽게말하면 객체가 다른객체를 알고있음을 말하는거같습니다. 서블릿도 결국 java기반의 웹프로그래밍을 동적으로 도와주는 객체라는것입니다. 다시말하자면 서블릿과 서블릿끼리 의존관계라는게 요청을 의미하는데 사용자가 다른사용자의 요청을 알고있어도 그냥 무덤덤하게 "아 저사람은 저걸시켰구나"라고 넘어갈수도있지만, 개인정보이기때문에 굳이 의존관계가 없어도됨을 나타내는거같습니다. 2.현업에 계신분들이 봤을때 메모리용량을 얼마나 설정해야하는지?고찰 : 서블릿에 대하여 요청당 하나의 스레드라고 알고있습니다. 사용자의 요청을 서블릿1이라고 했을때, 사용자2는 서블릿2 .... 사용자3000은 서블릿3000이라고했을때 @Controller는 선언될때 객체자체는 heap영역에 생성되지만 class정보는 method area영역에 생성이되고 결국 thread는 힙이든 메소드든 공유를하기때문에 수십만건의 쓰레드가와도 controller를 공유하여 처리할수있다는점입니다. servlet는 singleton이기때문에 사용자의 정보를 알고있어 요청이 끊기기 전까지 알고있어야합니다. 이때, 2-1)DB에 수천만 또는 수억의 사용자들이 요청이온다면 정보를 저장해야할텐데 DB가 그정도까지 지원하나요?2-2) 2-2번질문은 제가 질문하다가 떠오른생각인데 요청이끊긴다고해서 개인정보가 삭제되는것이아니라 일정활동이 없으면 휴먼계정으로 판단되어 DB에서 삭제가되는거였군요.. 방금 게임에 대한 정보를 생각했답니다 1번은 제가 이해한게 맞는지와 2-1)번은 단순히 현업에 제가있지않아봐서 호기심으로 질문드립니다!
- 미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
index.html이 webapp 아래에서도 welcom page로 잡히는 이유가 궁금합니다.
https://docs.spring.io/spring-boot/docs/2.3.1.RELEASE/reference/html/spring-boot-features.html#boot-features-spring-mvc-welcome-page 다음 링크를 읽어보면 SpringBoot의 정적 자원 접근을 위한 default 설정이 /static, /public, /resources 밑으로 되어있다고 나와있습니다.그런데 default 설정을 건든적이 없음에도 어떻게 webapp폴더 아래에 있는 index.html파일을 찾아내서 welcom page로 사용하는건지 궁금합니다.
- 미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
th:action 질문 있습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.코드를 작성하실 때, th:action을 비워두셨습니다.그리고 그 뒤 설명하실 때, "수정하기를 누르고 소스를 보면 action이 비워져 있는데, 이대로 저장하게 되면 이 경로 그대로 들어가게 됩니다"라고 말씀하셨습니다.설명하시는 의미는 대강 이해하겠는데 정확히 이해가 잘 안됩니다. 구체적으로 어떤 과정을 거쳐서 강사님이 말씀하신 대로 수행이 되는건가요?설명 부탁드립니다.