묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
Error parsing HTTP request header 에러
안녕하세요 v5 추가하고 나니 갑자기 이전 작업들도 안되고 다음 오류가 떠서 질문 남깁니다ㅠㅠ 서블릿, JSP, 서블릿 MVC 중에서 서블릿만 작동되고 JSP는 누르면 파일이 다운로드 되네요 나머지는 Whitelabel Error Page와 404가 뜹니다 뭘 잘못 건드린건지 감도 안잡혀요 검색해보니 인코딩 문제일수도 있다는데 저는 크롬을 사용해서 자동으로 인코딩 될텐데.. 문제를 모르겠어요 ㅠㅠ 제 코드는 아래와 같습니다 https://github.com/yeon-06/inflearnMvc1 오류나는 구간은 branch 따로 분리해두었습니다 오류 코드는 아래와 같습니다 2021-05-20 16:35:32.017 WARN 8656 --- [nio-8080-exec-2] o.s.w.s.r.ResourceHttpRequestHandler : Path with "WEB-INF" or "META-INF": [WEB-INF/views/new-form.jsp] 2021-05-20 16:35:32.045 DEBUG 8656 --- [nio-8080-exec-2] o.a.coyote.http11.Http11InputBuffer : Before fill(): parsingHeader: [true], parsingRequestLine: [true], parsingRequestLinePhase: [0], parsingRequestLineStart: [0], byteBuffer.position(): [0], byteBuffer.limit(): [0], end: [776] 2021-05-20 16:35:32.045 DEBUG 8656 --- [nio-8080-exec-2] o.a.coyote.http11.Http11InputBuffer : Received [] 2021-05-20 16:35:32.045 DEBUG 8656 --- [nio-8080-exec-2] o.apache.coyote.http11.Http11Processor : Socket: [org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper@5b8d04a4:org.apache.tomcat.util.net.NioChannel@7ca16f33:java.nio.channels.SocketChannel[connected local=/0:0:0:0:0:0:0:1:8080 remote=/0:0:0:0:0:0:0:1:65531]], Status in: [OPEN_READ], State out: [OPEN] 2021-05-20 16:35:34.899 DEBUG 8656 --- [nio-8080-exec-3] o.a.coyote.http11.Http11InputBuffer : Before fill(): parsingHeader: [true], parsingRequestLine: [true], parsingRequestLinePhase: [0], parsingRequestLineStart: [0], byteBuffer.position(): [0], byteBuffer.limit(): [0], end: [776] 2021-05-20 16:35:34.909 DEBUG 8656 --- [nio-8080-exec-3] o.apache.coyote.http11.Http11Processor : Error parsing HTTP request header java.io.EOFException: null at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.fillReadBuffer(NioEndpoint.java:1345) ~[tomcat-embed-core-9.0.44.jar:9.0.44] at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.read(NioEndpoint.java:1255) ~[tomcat-embed-core-9.0.44.jar:9.0.44] at org.apache.coyote.http11.Http11InputBuffer.fill(Http11InputBuffer.java:794) ~[tomcat-embed-core-9.0.44.jar:9.0.44] at org.apache.coyote.http11.Http11InputBuffer.parseRequestLine(Http11InputBuffer.java:359) ~[tomcat-embed-core-9.0.44.jar:9.0.44] at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:261) ~[tomcat-embed-core-9.0.44.jar:9.0.44] at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) ~[tomcat-embed-core-9.0.44.jar:9.0.44] at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893) ~[tomcat-embed-core-9.0.44.jar:9.0.44] at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1707) ~[tomcat-embed-core-9.0.44.jar:9.0.44] at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) ~[tomcat-embed-core-9.0.44.jar:9.0.44] at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[na:na] at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[na:na] at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.44.jar:9.0.44] at java.base/java.lang.Thread.run(Thread.java:834) ~[na:na] 2021-05-20 16:35:34.911 DEBUG 8656 --- [nio-8080-exec-3] o.apache.coyote.http11.Http11Processor : Error state [CLOSE_CONNECTION_NOW] reported while processing request java.io.EOFException: null at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.fillReadBuffer(NioEndpoint.java:1345) ~[tomcat-embed-core-9.0.44.jar:9.0.44] at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.read(NioEndpoint.java:1255) ~[tomcat-embed-core-9.0.44.jar:9.0.44] at org.apache.coyote.http11.Http11InputBuffer.fill(Http11InputBuffer.java:794) ~[tomcat-embed-core-9.0.44.jar:9.0.44] at org.apache.coyote.http11.Http11InputBuffer.parseRequestLine(Http11InputBuffer.java:359) ~[tomcat-embed-core-9.0.44.jar:9.0.44] at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:261) ~[tomcat-embed-core-9.0.44.jar:9.0.44] at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) ~[tomcat-embed-core-9.0.44.jar:9.0.44] at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893) ~[tomcat-embed-core-9.0.44.jar:9.0.44] at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1707) ~[tomcat-embed-core-9.0.44.jar:9.0.44] at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) ~[tomcat-embed-core-9.0.44.jar:9.0.44] at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[na:na] at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[na:na] at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.44.jar:9.0.44] at java.base/java.lang.Thread.run(Thread.java:834) ~[na:na]
-
해결됨스프링 핵심 원리 - 기본편
ObjectProvider의 장점이 이해가 안됩니다
안녕하세요 선생님 이해가 안되는 부분이 있어 질문드립니다! "ApplicationContext에 비해 ObjectProvider는 기능이 단순하므로 단위테스트를 만들거나 mock 코드를 만들기는 훨씬 쉬워진다." 라는 말이 이해가 안됩니다.. 스프링 없이 순수 자바 코드만으로 단위 테스트할 경우, 테스트할 코드가 ApplicationContext에 의존하던, ObjectProvider에 의존하던 DL 기능을 사용할 수 없는 건 마찬가지 아닌가요? DL 기능을 구현한다고 하더라도 ApplicationContext이던 ObjectProvider이던 상관없지 않나요? 그래서 ApplicationContext이 아닌 ObjectProvider를 써야하는 이유를 잘 모르겠습니다!
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
로그 글씨 색깔
빌드해서 실행해봤을 때 아래 로그 색깔이 저는 전부 검은색인데 강사님 화면은 색깔이 다 들어가있어서 질문 드립니다. 따로 설정이나 설치해야 하는 플러그인이 더 있는건가요?
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
안녕하세요 질문 드립니다. org.gradle.api.GradleScriptException: A problem occurred evaluating root project 에러가 발생합니다..
마지막 강의에서 queryDsl 설정을 적용했을때 .. 이런 에러가 발생합니다.. 제가 git에서 프로젝트를 올려놓고 프로젝트를 여러환경에서 받아서 그런게 아닐까 생각은 하는데 .. 어떻게 해결을 하면 좋을까요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
insert 쿼리가 log에 안찍혀요!
test를 실행할 때 insert 로그가 안찍혀요... @Rollback(false)를 설정 했을때는 찍힙니다. @Rollback(false)를 설정하지 않아도 찍히게 하고싶은데 어떻게 해야하나요!?? yml 복붙해서 넣어드립니다... spring: datasource: url: jdbc:h2:tcp://localhost/~/jpashop username: sa password: driver-class-name: org.h2.Driver jpa: hibernate: ddl-auto: create properties: hibernate: format_sql: truelogging.level: org.hibernate.SQL: debug org.hibernate.type: trace
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
final관련 질문이 있습니다~
안녕하세요 ~~ 강사님 다름이 아니라 3분 40초에 private static Map<Long, Member> store = new HashMap<>(); 이렇게 작성하셨는데 final키워드를 붙이지 않는 이유에 대해서 궁금해서 질문 드렸습니다! 우선 싱글톤이기 떄문에 래퍼런스도 변경될 일이 없고, 인텔리제이에서도 final 권고 표시가 나오던데, final 키워드를 생략한 이유에 대해서 궁금해서 질문 남깁니다! 감사합니다
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
폼을 통해 받은 데이터를, 직접 만든 Model에 매핑하는 방법
강사님 안녕하세요, 본편 강의를 다 듣고 혼자 토이 프로젝트를 만들다가 막혀서 질문올립니다. 단순하게 Form을 통해서 데이터를 받아 처리하는 내용입니다그런데 감이 없어 어느 방법이 나이스한 방법인지 모르겠습니다. 1. 직접 만든 모델 클래스는 아래와 같이 생겼습니다. 2. List타입의 필드는 HTML FORM의 element들에 같은 name을 가져와서 바인딩하려합니다 @ModelAttribute는 내부적으로 set메소드를 부르니 역시나 매핑이 안 되더라구요.. 그래서 생각해본 방법으로는 하나하나 RequestParam으로 받아서 처리한다 (List는 MultiValueMap으로) setMethod의 파라미터를 String으로 받아 setMethod에서 내부적으로 처리한다 front 데이터를 Json으로 변환하여 파싱한다 (컨트롤러에서 Model에 접근) 커스텀 어노테이션을 만들고, HandlerMethodArgumentResolver를 implement해서 MyModelResolver를 만들고 @Configuration한다 폼을 통해 받은 데이터를 직접 만든 Model에 매핑하는 방법을보통은 어떻게 구현하는건가요? ps. 사실 저는.. 1~3번이, 제 눈에는 코드가 안예뻐 보였습니다...아뇨 사실은 좋은 현업 코드를 본 적이 없기 때문에 뭐가 예쁜지 안 예쁜지도 모르겠습니다4번으로 만들면 앞단에선 지금처럼 쓰기 편하고, 스프링 내부도 공부할 수 있을 것 같아서 시도해봤습니다. 그런데,메시지 바디로 넘어온 쿼리 파라미터형식의 methodName에 매칭되는 setMethodName이 있는지, 데이터는 들어있는지,데이터 타입은 뭔지, 변환해줘야하는지..이런게 너무어렵습니다.. 이렇게 하다보니 제가 뭘 모르는지도 모른다는 생각이 듭니다. 별것도 아닌 것 같은 것을 어떻게 구현하는게 좋은건지 판단도 못 하는 자신이 너무 바보같습니다ㅠㅠ
-
미해결실전! 스프링 데이터 JPA
DTO조회와 PROJECTION의 차이가 궁금합니다 !
안녕하세요 강사님! 활용편 1,2편에 이어서 이번 실전편도 듣고 있습니다. 활용편 2편에서 DTO로 조회하시는 걸 알려주셨는데요. 언듯 보기에는 DTO로 조회하는 것과 프로젝션으로 조회하는것이 비슷해 보이는데, 제가 지금 이해하기로는 - DTO의 경우 엔티티의 모든 필드를 조회해서 DTO에 넣어준다음에 반환 -프로젝션의 경우 프로젝션에 선언한 필드만 조회해서 반환 하는 차이만 있는 걸까요? 아니면 제가 잘못알고있거나 이해하지 못한 부분이 있는지 궁금합니다 ! 만약 단순하게 하나의 엔티티를 조회한다 할 경우, DTO와 프로젝션 어느 쪽을 더 선호하시는 지 궁금합니다 ! 감사합니다 !
-
해결됨스프링 핵심 원리 - 기본편
생성자 주입의 경우엔 @Autowired(required=false)를 쓸 수 없는건가요?
안녕하세요 최고의 강의 항상 잘 듣고 있습니다 : ) 궁금한게 있어 질문드립니다 @Autowired(required=false) : 자동 주입할 대상이 없으면 수정자 메서드 자체가 호출 안됨 라고 강의에서 언급하셨는데, 생성자 같은 경우엔 @Autowired(required=false)가 붙어도 호출이 되고 (required=false)가 적용되지 않는 것 같습니다 실제로 빈으로 등록되지 않은 것을 필드로 두고 @Autowired(required=false)를 적용해보니 UnsatisfiedDependencyException이 터졌습니다. 빈 컨테이너의 의존성 주입 단계에, setter가 없더라도 컨테이너가 setter를 만들어서 setter를 통해 주입하는건가요? 다만 생성자 주입같은 경우엔 빈을 생성하는 과정에서 생성자가 호출되어 싱글톤 패턴으로 빈을 주입하게 되고, setter를 통한 빈 주입 단계에는 주입이 되지 않는건가요? 언제나 감사합니다!
-
미해결스프링 핵심 원리 - 기본편
같은 빈이 2개이상 조회될 경우 궁금한점이 생겼습니다 .!
다시한번 복습하면서 궁금한점이 하나 생겼습니다 .. ! 의존관계 같은 빈이 2개 이상 조회될 경우 우선순위를 정해주는 부분에서 위 코드 대신 롬복을 같이 쓸 경우에 이런 문법은 적용되지 않는건가요 ???
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
JPA DTO 직접조회 질문 드립니다.
안녕하세요 강사님. 강의 복습 중에 질문이 생겨서 문의 드립니다 JPA 에서 DTO 직접조회를 하는데 (일대다 조회) 일반적으로 엔티티를 DTO 로 변환해서 조회하는 방법보다 더 불편하고 유지보수할때 복잡해 보이는데, 실제 운영에서도 DTO를 직접조회해서 사용을 많이 할까요 ??
-
해결됨모든 개발자를 위한 HTTP 웹 기본 지식
Http form data 전송에 관하여 질문이있습니다!
안녕하세요 김영한선생님의 스프링강의와 이번http강의까지 잘들으면 일본에서 밥벌어먹고 사는 이재화라고합니다. 알찬강의에 늘 감사하고있습니다 이번에 제가 맡은 기능개발중에 x-wwwformurlencoded형식으로 되어있는 상대편api에 리퀘스트를 하는곳이있는데요 전송할 전문이 Post메소드를 이용해서 post param에 기타 여러항목들과 최대10메가의 csv데이터를 함께 보내야하는데 이 경우는 content-type을 form multipart로 안하고 x-wwwformurlencoded로 보내는 게 가능한가요? 저는 spring webclient body에 multivaluemap를 생성해서 다른파라메터랑 똑같이 csv를 바이트에서 스트링으로 변환시켜서 맵에 저장하고 맵을 파라메터로 넘겨주면 될까 생각했는데요 이렇게해도 되는걸까요? 구글링해도 이런방식에대한 정보가 별로 없어서 질문드려봅니다
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
gradlew.bat 저 처럼 헤메시는분들이 없기를 바라며
저는 cmd를 사용하지 않고 구글에서 cmmder을 설치하여 사용합니다. 제일 먼저 spring 디렉토리로 이동합니다. cd 디렉토리 그 후 ls -al을 입력해 보면 gradlew.bat 이라는 이름의 bat파일이 보이실 거에요. 복사하여 gradlew.bat build를 해줍니다. 위와 같이 Build Successful이라 뜨면 성공한거구요. ls -al을 해보면 build 폴더가 보이실 거고 cd build를 해주신 다음에 cd libs 해주고 해당 디렉토리에서 java -jar hello-spring-0.0.1-SNAPSHOT.jar 이렇게 해주니 성공적으로 실행이 돼네요. 어찌보면 영상에 나와있는 내용 그대로 글로 적은것 뿐이지만 누군가에게 도움이 돼셨길 바라며
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
JPA가 Mybatis를 완벽히 대체 가능한가요?
주니어 개발자로 현재 SI업체에서 근무하고 있는데, 개발시 Mybatis를 사용합니다. 강의를 듣고 간단하게 JPA를 적용해서 샘플 프로젝트정도를 만들어 보았는데 개인적으로는 매우 마음에 들어서 프로젝트에도 한번 써보고 싶어서 사수에게 건의 하였으나 JPA는 간단한 CRUD에는 좋은데 실제 프로젝트에서는 통계등을 조회해야하는데 매우 많은 조인들이 들어가고 sql 쿼리만 수백줄이 되는데, 이런걸 JPA가 대체하기 어렵다. 라는 답변을 받아서 문의 드립니다. 근데 생각해보면 좀 이상한게 해외에서는 JPA가 더 많이 사용된다는데 해외에는 차트같은게 없나..? 싶은 생각이 들더라구요. 그래서 JPA가 mybatis를 완벽히 대체가 가능한건지, 아니면 둘을 병행해서 써야 하는건지 궁금합니다.
-
해결됨스프링 핵심 원리 - 기본편
@SpringBootTest에서 어떻게 @Autowired가 작동하는지 궁금합니다
안녕하세요~ 유익한 강의 잘 듣고 있습니다! 이해가 안가는 부분이 있어 질문드립니다. 24분 40초 쯤에 보면 @SpringBootTest 클래스에서 @Autowired를 사용하고 있습니다. 이게 어떻게 동작하는지 모르겠습니다. 1. 일전에, ComponetScan의 범위는 AutoAppConfig가 포함된 패키지 이하라고 하셨습니다. 이에 따르면 test, resources는 컴포넌트 스캔의 대상이 아닙니다 2. 의존관계 주입 대상은 컨테이너에 빈이라고 하셨습니다. 그렇다면 @SpringBootTest 클래스(CoreApplicationTest)는 빈 등록 대상이 아니므로 Autowired가 불가능한 것 아닌가요?? 어떤 과정을 거쳐 @SpringBootTest 클래스에 빈이 주입되는지 궁금합니다!
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
servletmvc쪽 질문이 있습니다
안녕하세요 현재 mvc강의를 수강하고 있는 학생입니다 초반에 servlet쪽은 다 따라하고 실행이 잘 되었는데 현재 servletmvc쪽으로 넘어가니 webapp/index.html 쪽부터 시작해서 servletmvc 패키지쪽들은 안되네요 현재 인텔리j 커뮤니티버전 사용중입니다 현재 restart도 해보고 오픈톡방에 질문도 해보았는데 다른분들도 이해가 잘 안된다고 하시네요 ㅠㅠ 현재 404로 못찾고 있습니다 404 -> 맵핑이 제대로 되어있지않다.. 왜이런걸까요??? 메일로 혹시 프로젝트를 보내도 될까요 ?? <현재 오류 내용> Whitelabel Error Page This application has no explicit mapping for /error, so you are seeing this as a fallback. Tue May 11 17:08:07 KST 2021 There was an unexpected error (type=Not Found, status=404).
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
dispatcher 질문
안녕하세요 선생님 선생님께서 강의해주신 내용중에서 궁금한게 있습니다. servlet에서 dispatcher.forward를 통해서 html파일을 호출하셨는데 dispatcher보다는 pagecontext 객체에 forward메서드가 있는데 이것도 브라우저에 response를 주지 않고 바로 제어권이 이동하는 문서로 주소가 바뀌지 않고 이동한다고 알고있습니다. 혹시 이 둘이 다른기능을 하는건가요? 선생님께서 dispatcher를 사용하시는 이유가 궁금합니다.
-
미해결스프링 핵심 원리 - 기본편
DAO 관련 질문드립니다.
안녕하세요. 김영한님. 수업에 직접적으로 언급된 내용은 아니지만 업무를 하다 궁금한게 생겨 이렇게 질문 드립니다. 현재 회사에서 사용하는 Spring 프로그램이 https://www.egovframe.go.kr/wiki/doku.php?id=egovframework:rte2:psl:dataaccess:mybatisguide "3.1 기존 DAO 형태로 사용하는 경우"를 따르고 있습니다. DAO라고 명시된 파일은 mybatis에 접근하는 sqlSession만 작성해서 return하고, 그 전에 Service에서 모든걸 처리하고 필요한 해당 DAO를 Service가 호출 하여 DB에 접근합니다. 궁금한 부분은 강의에서 언급된 @Repository를 사용한 interface 로 Service에서 필요한 로직을 처리하고, Service 마지막에 sqlSession으로 return 해주것과 큰 차이가 있는지 궁금합니다. 왜 굳이 한번더 감싸(?) 주는지 잘모르겠습니다. 이렇게 구현해야 할 특별한 이유가 있을까요?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
상품 삭제 관련해서 질문이 있습니다.
먼저 강의 항상 잘 보고 있습니다 선생님!!! 제가 editForm 아래에 <div class="col"> <button class="w-100 btn btn-danger btn-lg" onclick="location.href='item.html'" th:onclick="|location.href='@{/basic/items/{itemId}/edit/delete (itemId = ${item.id})}'|" type="button">삭제 </button></div> 추가후 컨트롤러에 @GetMapping("/{itemId}/edit/delete")public String editDelete(@PathVariable Long itemId) { itemRepository.delete(itemId); return "redirect:/basic/items/";} 추가하여 지우는걸 브라우저에서 성공 했습니다. 다름이 아니라 DeleteMapping 을 사용하여 지우고 싶은데 form method = "delete"로 해도 안되서 질문을 남겨봅니다. 위에 방식대로 하면 실행이 됩니다만 혹시 DeleteMapping 을 사용해서 할 방법이 있을까요??
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
MemberRepository 와 ItemRepository에서의 em 차이점
김영한 강사님 안녕하세요. 좋은 강의 항상 잘 보고있습니다! ㅎㅎ 다름이 아니라 강의를 쭉 듣던 중 궁금증이 생겼습니다. MemberRepository에서 em은 @PersistenceContext를 붙였는데 ItemRepository에서는 @PersistenceContext를 붙이지 않고 그냥 final 처리만 되어있습니다. 제가 보기엔 둘다 같은 역할을 하는 em인것 같은데 소스코드에서는 왜 다르게 구현하신건지 궁금합니다!