묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
공통처리의 어려움
안녕하세요 영한님 항상잘듣고있습니다.! 공통처리가 어려운이유중 "아무데나 다 호출이되기때문에"라고 말씀하시는 (2:11) 부분이 클라이언트의 요청을 new-form컨트롤러, save 컨트롤러, list컨트롤러세개중 아무데서나 받을수 있기 떄문에라고 이해했는데 맞을까요?!
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
rs.next()가 지칭하는바가 무엇인지 여쭤봐도 될까요...?
안녕하세요 ㅎㅎㅎ 항상 강의 잘 듣고 있습니다. 감사합니다. HTTP 강의 수강 이후에 RFC문서도 좀 보면서 웹에 빠져들고 있어서 Spring 공부도 하고 있습니다....! 다름이 아니라 순수 JDBC강좌 10분 20초경에 나오는 rs.next()의 의미가 무엇인지 잘 모르겠습니다 ㅠㅠ conn으로 연결을 실행하고 pstmt로 sql문을 전송 Generated ID KEY를 받아옴 rs로 Generated된 key값을 받아옴 까진 이해가 되는데 rs.next()가 의미하는 바가 무엇인지 모르겠습니다. 그래서 뒤에부터 값을 설정한다는게 어떻게 flow가 흘러가는건지 잘 이해가 안가는데 부가 설명을 부탁드려도 될까요 ㅠㅠ 추가로) getLong, getString, setLong ---- 등등의 메소드 이름에서 뒤에 붙는것들은 (Long, String...) DB에서 생성된 Column의 Attribute라고 봐도 될까요? 감사합니다.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
ReturnValueHandler
안녕하세요 영한님 강의를 듣던 도중 궁금한것이 생겨 질문드립니다. 강의 노트 179페이지에 보면 "String으로 뷰 이름을 반환해도, 동작하는 이유가 바로 ReturnValueHandler 덕분이다." 라고 나와있는데 String으로 뷰이름을 반환해도 동작하는 이유는 ViewResolver 때문이 아닌가요? ReturnValueHandler 안에 ViewResolver 가 포함되는것인가요? 좋은 강의 너무 감사드립닌다. 답변기다리겠습니다.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
탈락되면 어떻게 되나요?
마지막에 들어주신 예시 content type : text/html@RequestBody HelloData data 의 경우는 3개의 컨버터를 모두 지나쳐서 탈락하게 된다고 하셨는데요. 그러면 어떻게 되나요? 객체일 때는 null이 넘어오고 primitive 타입일 때는 기본값이 넘어오는 건가요?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
view를 사용하지 않는다?
안녕하세요 강사님, 질문 드리겠습니다. HttpEntity나 @ResponseBody를 통해 응답 처리를 할 때는 view를 사용하지 않는다는 말이 이해가 잘 안 되는데요. 이전처럼 view의 논리적 이름을 반환한 후 렌더링 해주는 식의 처리를 하는 것이 아니라, 그냥 http body에 필요한 데이터만 담아서 전달해주고 뷰에 대한 부분은 클라이언트 측에서 알아서 하도록 일임한다는 식의 흐름이 맞나요?? 위 내용이 맞다면 여기에서 뷰 리졸버는 아예 사용되지 않는 것인가요? 감사합니다.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
template, webapp
안녕하세요 강사님, 말씀하셨던대로 이번 강의에서 대부분의 의문이 해결되었습니다. 그런데 이번 강의에서도 뷰 파일의 저장 위치가(template or webapp) 달라지는 부분에 대해서는 별다른 언급이 없더라구요. 이 부분도 뒷부분을 듣다보면 알게 되나요??
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
콘솔창 색깔 바꾸는 방법
콘솔창 글씨가 다 흰색이니까 구분이 잘안가서 강사님처럼 바꾸고 싶어서 찾아봤습니다 프로젝트에 application.properties 파일을 사용하시면 이렇게 입력해주시고 서버를 재시작하면 적용됩니다 복붙-> spring.output.ansi.enabled=ALWAYS 프로젝트에 application.yml 파일을 사용하시면 (yml 파일은 띄어쓰기 주의) 이렇게 입력해주시고 서버를 재시작하면 이렇게 글자색이 바뀐채로 출력됩니다 프로젝트마다 application 파일에 코드 복붙하는게 귀찮을거 같아서 찾아본 결과 VM Options에서 -Dspring.output.ansi.enabled=ALWAYS 를 추가해주면 인텔리제이를 실행 했을 때 전체 프로젝트에 적용이 된다고 하는데 전 아무리 해도 적용이 안돼서 포기했습니다 혹시 전체 프로젝트에 적용하는 방법을 아시는분이 계시면 댓글로 알려주시면 감사하겠습니다
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
Json 매핑
Json 객체 매핑 시 setter가 없어도 되는데 http 요청 데이터 - API 메시지 바디 - JSON에서는 setter가 있어야 한다고 하셨는데 어떤게 맞는 걸까요?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
PrintWriter writer = response.getWriter();
이 코드가, response 객체 안에 Writer를 담당하는 객체가 또 있고 그 객체를 writer라는 변수로 따로 저장해서 writer를 이용하는 방식인가요? 생소한 패턴이라서 헷갈리네요.. 혹시 response 객체가 어떻게 구성돼 있는지 확인할 수 있는 방법이 있을까요?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
서버가 계속해서 작동되지않습니다
위에 사진과 같이 톰캣서버가 계속해서 작동을하여야하는데 종료가되는거같습니다 ㅠㅠ 해결방법이있을까요?
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
static root 실제 저장 위치
안녕하세요. start.spring.io 를 통해 생성한 프로젝트에는 resources/static 폴더가 존재하는데, 강의에서는 따로 webapp 폴더를 만들어 그곳에 html 파일을 담는데요. resources/static/index.html과 webapp/index.html 을 2 개 모두 만들어 두고, URL=/ 로 접근해 보면 후자가 뜨는 것은 테스트를 통해 확인할 수 있었습니다. webapp/index.html 이 없으면 URL=/ 에 대응해 전자의 페이지가 뜹니다. 즉, webapp이 더 우선하는 것으로 생각됩니다. 질문은 : resources/static 영역이 있는데 강의에서는 왜 굳이 이와 같이 webapp을 따로 만들어 그곳에 html 파일들을 구성하신 것인지요? 감사합니다.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
new-form.jsp 요청시 jsp파일 자체가 다운로드 되어버립니다
이 전까지의 강의는 아무런 문제가 없다가 이번 편에서 아래처럼 URL을 요청했더니 /jsp/members/save.jsp 화면으로 넘어가지 않고 스크린샷 하단에 보시다시피 jsp파일 자체가 다운로드되어버립니다.. 구글링을 해봤는데도 마땅히 해결방법을 모르겠어서 질문남깁니다. 혹시 해결책을 아신다면 답변 부탁드리겠습니다
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
컨텍스트 스위칭 질문
요청 마다 매번 쓰레드를 생성하는 방식의 단점 중 하나로 컨텍스트 스위칭 비용을 말씀하셨는데요. 컨텍스트 스위칭은 쓰레드 풀을 사용하더라도 똑같이 발생하는 비용 아닌가요? 쓰레드를 미리 만들어 놓는다고 cpu가 다른 스레드로 갈아탈(?) 때 컨텍스트 스위칭이 일어나지 않는 것은 아틸 텐데요. 답변 부탁드립니다. 감사합니다.
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
안녕하세요.
안녕하세요, 먼저 정말 기다리던 강의를 드디어 볼 수 있게돼서 감사하다는 말씀을 드립니다! 강의를 따라가던 중 문제가 발생하여 조언을 구하고자 질문을 드립니다. 김영한 팀장님의 기존 인강에서는 [Settings] -> [Build Tools] -> [Gradle] 에서 Build and run using / Run tests using 모두 'IntelliJ IDEA'로 설정 후 강의를 진행하셔서 저도 그렇게 강의를 모두 수강했고 현재 혼자 개발 중인 서비스도 'IntelliJ IDEA' 로 설정해서 진행 중입니다. 이번 스프링 MVC 1편 인강에서는 섹션2 - 프로젝트 생성에서부터 Build and run using 을 'IntelliJ IDEA' 로 설정하면 다음과 같은 에러가 발생하고, Run tests Using 을 'GRADLE'로 설정하면 또 다음과 같은 에러가 발생합니다. [Build and run using - 'IntelliJ IDEA' 설정 후 Application Run 한 상황 ] 2021-03-15 11:16:43.740 INFO 12576 --- [ main] travelbeeee.sec02.Sec02Application : Starting Sec02Application using Java 14.0.2 on DESKTOP-SJ3E1UQ with PID 12576 (C:\Users\HyunSeok\Desktop\studyWithMe\gitHub\studyWithMe\스프링MVC1편\sec02\out\production\classes started by HyunSeok in C:\Users\HyunSeok\Desktop\studyWithMe\gitHub\studyWithMe\스프링MVC1편\sec02) 2021-03-15 11:16:43.744 INFO 12576 --- [ main] travelbeeee.sec02.Sec02Application : No active profile set, falling back to default profiles: default 2021-03-15 11:16:44.376 WARN 12576 --- [ main] s.c.a.AnnotationConfigApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'servletComponentRegisteringPostProcessor': Unexpected exception during bean creation; nested exception is java.lang.NoClassDefFoundError: javax/servlet/annotation/WebServlet 2021-03-15 11:16:44.385 INFO 12576 --- [ main] ConditionEvaluationReportLoggingListener : Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled. 2021-03-15 11:16:44.406 ERROR 12576 --- [ main] o.s.boot.SpringApplication : Application run failed org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'servletComponentRegisteringPostProcessor': Unexpected exception during bean creation; nested exception is java.lang.NoClassDefFoundError: javax/servlet/annotation/WebServlet at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:537) ~[spring-beans-5.3.4.jar:5.3.4] at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) ~[spring-beans-5.3.4.jar:5.3.4] at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-5.3.4.jar:5.3.4] at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) ~[spring-beans-5.3.4.jar:5.3.4] at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:213) ~[spring-beans-5.3.4.jar:5.3.4] at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:196) ~[spring-context-5.3.4.jar:5.3.4] at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:745) ~[spring-context-5.3.4.jar:5.3.4] at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:563) ~[spring-context-5.3.4.jar:5.3.4] at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:767) ~[spring-boot-2.4.3.jar:2.4.3] at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:759) ~[spring-boot-2.4.3.jar:2.4.3] at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:426) ~[spring-boot-2.4.3.jar:2.4.3] at org.springframework.boot.SpringApplication.run(SpringApplication.java:326) ~[spring-boot-2.4.3.jar:2.4.3] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1311) ~[spring-boot-2.4.3.jar:2.4.3] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1300) ~[spring-boot-2.4.3.jar:2.4.3] at travelbeeee.sec02.Sec02Application.main(Sec02Application.java:13) ~[classes/:na] Caused by: java.lang.NoClassDefFoundError: javax/servlet/annotation/WebServlet at org.springframework.boot.web.servlet.WebServletHandler.<init>(WebServletHandler.java:39) ~[spring-boot-2.4.3.jar:2.4.3] at org.springframework.boot.web.servlet.ServletComponentRegisteringPostProcessor.<clinit>(ServletComponentRegisteringPostProcessor.java:49) ~[spring-boot-2.4.3.jar:2.4.3] at org.springframework.boot.web.servlet.ServletComponentScanRegistrar$ServletComponentRegisteringPostProcessorBeanDefinition.lambda$getInstanceSupplier$0(ServletComponentScanRegistrar.java:94) ~[spring-boot-2.4.3.jar:2.4.3] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.obtainFromSupplier(AbstractAutowireCapableBeanFactory.java:1231) ~[spring-beans-5.3.4.jar:5.3.4] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1173) ~[spring-beans-5.3.4.jar:5.3.4] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:564) ~[spring-beans-5.3.4.jar:5.3.4] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:524) ~[spring-beans-5.3.4.jar:5.3.4] ... 14 common frames omitted Caused by: java.lang.ClassNotFoundException: javax.servlet.annotation.WebServlet at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:602) ~[na:na] at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178) ~[na:na] at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522) ~[na:na] ... 21 common frames omitted Process finished with exit code 1 [ Run tests Using 을 Gradle로 설정 후 Test 를 빌드한 상황 ] > Task :compileJava UP-TO-DATE > Task :processResources UP-TO-DATE > Task :classes UP-TO-DATE > Task :compileTestJava UP-TO-DATE > Task :processTestResources NO-SOURCE > Task :testClasses UP-TO-DATE > Task :test FAILED FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':test'. > There were failing tests. See the report at: file:///C:/Users/HyunSeok/Desktop/studyWithMe/gitHub/studyWithMe/스프링MVC1편/sec02/build/reports/tests/test/index.html * 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 BUILD FAILED in 1s 4 actionable tasks: 1 executed, 3 up-to-date 설정을 아래 사진과 같이 바꿔주면 문제가 없어서 당장 수업을 듣는데는 지장이 없지만, 구글링을 해봐도 이유를 알아내기 어려워 조언을 구하고자 질문을 남깁니다.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
JSON 형태로 리턴할 때 질문
HelloData 같은 경우는 username과 age 라는 2개의 데이터를 가지고 있어서, dto를 만들어서 반환하는게 맞지만 만약 한 개의 데이터를 json 형식으로 리턴하고 싶을 때는 어떻게 하나요?? 예를들어 username만 리턴하고 싶은 경우에 dto를 만드는 것은 비용적으로 아깝다고 생각이 들어서요
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
Test method 접근제어자 질문드립니다.
안녕하세요. 강의를 듣던 중 테스트 메소드 접근 제어자에 궁금한점이 생겨서 질문드립니다. [회원 리포지토리 테스트] @Test public void save() { ... } [서비스 테스트] @Test void join() { ... } 이전 회원 리포지토리 테스트 코드에서는 위 코드와 같이 public로 선언했었지만, 이번 강의에서 Create Test 단축키로 생성한 테스트 메소드들은 public가 아닌 default로 선언되었습니다. default로 메소드를 선언했을 때 테스트를 수행하는데 문제가 없었는데 강의 코드에서 public으로 메소드를 선언하는 이유는 무엇인가요?
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
Optional 사용 방법에 대해서 질문드립니다.
1) Optional<Member> result = memberRepository.findByName(member.getName()); 2) Member result = memberRepository.findByName(member.getName()).get(); 1. 위 코드에서 2번의 방법보다 1번 같은 사용법을 권장한다고 하셨습니다. 1) memberRepository.findByName(member.getName()) .ifPresent( m -> { throw new IllegalStateException("이미 존재하는 회원입니다."); }); 2) Optional<Member> result = memberRepository.findByName(member.getName()); result.ifPresent( m -> { throw new IllegalStateException("이미 존재하는 회원입니다."); }); 2. 또한 바로 위의 코드에서도 2번의 방법보다 1번의 방법 사용을 권장한다고 말씀하셨습니다. 위 방법들이 권장되는 이유가 궁금합니다. 또 권장되는 Optional 사용법 같은게 따로 문서로 존재하는건가요?
-
미해결윤재성의 만들면서 배우는 Spring MVC 5
[공유] 스프링 form, spring 태그 500 오류
질문게시판을 보니 6달 전에도 저와 같은 문제를 겪으신 분이 있었네요. 제가 겪은 오류는 taglib prefix="form"과 taglib prefix="spring" 사용 시 500 오류가 발생하는 것이었습니다. 인터넷을 일주일을 검색하며 왠만한 여러가지 방법들은 전부 시도해본 것 같습니다. 그래도 해결이 안되었습니다. -------------오류 내용--------------------------- 절대 URI인 [http://www.springframework.org/tags/form]을(를), web.xml 또는 이 애플리케이션과 함께 배치된 JAR 파일 내에서 찾을 수 없습니다. 절대 URI인 [http://www.springframework.org/tags]을(를), web.xml 또는 이 애플리케이션과 함께 배치된 JAR 파일 내에서 찾을 수 없습니다. --------------------------------------------------------------- 보고 또 보았던 오류메세지를 보던 중 문득 'Maven dependencies엔 필요한 jar 파일들이 다 다운로드가 된 것 같은데..., 다 있는데 왜 못 찾는다는 걸까' 하는 생각이 들어 WEB-INF 폴더 하위 lib 폴더 안에 spring webmvc jar 파일을 직접 넣었습니다. 또는 tomcat이 설치된 경로의 lib에 spring webmvc jar 파일을 넣으면 WEB-INF/lib 에 넣지 않아도 잘 실행이 됩니다. 저같은 경우는 이 방법으로 오류가 해결되었습니다. 아직도 이전에 오류가 왜 발생했는지 모르겠고 이렇게 하니까 왜 되는지 모르지만 같은 오류로 고생하시는 분이 있을까 하여 공유드립니다.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
오류 관련해서 질문드립니다.
HelloServlet을 만들고 처음 실행 후 다음과 같은 에러가 나옵니다. 어떻게 해야될지 모르겠어서 질문드립니다. ㅠ
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
서블릿과 서블릿 컨테이너의 역할에 대한 질문입니다.
강의자료 8p에서 WAS에서 HTTP 요청 메세지를 기반으로 request 와 response 객체를 생성해서 서블릿에게 전달한다는 그림이 있는데 강의자료 12p의 HttpServletRequest의 역할에 보면 서블릿이 HTTP 요청 메세지를 파싱하여 HttpServletRequest에 담에서 제공한다고 되어있습니다. 이부분에서 정확히 HTTP 요청 메세지 파싱과 request 와 response 객체의 생성에 대한 책임이 WAS에 있는지 서블릿에 있는지 애매모호해서 질문드립니다!