inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

173만명의 커뮤니티!! 함께 토론해봐요.

팩토리 메서드를 정적으로 사용하는 이유에 대해서 궁금합니다

해결됨

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

안녕하세요 영한님 강의 잘 듣고 있습니다^^ 전부터 궁금해 왔던 것인데요, 팩토리를 만들 때 정적으로 올리는 이유에 대해서 궁금합니다 영한님이 다른 QnA에서 추천해 주신 내용들을 읽어보았으나 굳이 왜 "정적"영역으로 보내는 가에 대한 의문은 쉽게 풀리지 않습니다 ㅜㅜ 일단 정적 팩토리 메서드로 보내면 생성자들에 대한 응집도가 크게 떨어지는 느낌입니다. "엘레강트 오브젝트"라는 책을 보면 생성자는 10~15개 까지도 만들고 퍼블릭 메서드를 최대한 적게 가져가라고 가이드를 주는데요, 정적 영역으로 보내면 주/부 생성자로 보낼 수 없기 때문에 그 많은 생성자들이 다 흩어지고, 생성자들 간 관계를 맺을 수 없기 때문에 유연성이 떨어지고 코드 중복이 자주 일어나는 효과가 나는 것 같습니다 이는 굳이 정적 영역으로 보내지 않고 주/부 생성자로 구분하면 쉽게 해결될 일이 아닌가? 하는 생각도 들어 질문을 드립니다

  • java
  • spring-boot
  • 웹앱
  • spring
  • JPA
  • jpa
  • 웹앱
득이 댓글 1 좋아요 3 조회수 908

main/resources에서 basic 폴더 찾는 법 관련 질문

미해결

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

BasicItemController.java의 items()에서 return "basic/item";을 수행합니다. 그리고 resources 폴더 하위는 다음과 같이 구성되어 있습니다. static > css폴더, html폴더 templates > basic폴더 return "basic/item"; 했을 때, basic폴더가 static이 아닌 templates폴더 하위에 있다는 것을 어떻게 아나요? static폴더에 있는지, templates폴더에 있는지 다 조회를 해보고 아는 것인가요?

  • mvc
  • MVC
  • spring
도토리 댓글 1 좋아요 0 조회수 479

직접 스프링 빈 등록하기 관련 질문

해결됨

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

자바 코드로 직접 스프링 빈 등록하기에서 SpringConfig 파일에 코드를 작성하시는 부분을 보다가 궁금한게 생겨서 질문합니다. 스프링 컨테이너에 빈을 등록한다는 것은 등록하고자하는 클래스의 실제 객체, 즉 인스턴스를 하나 생성하여 관리한다는 것으로 이해했는데요. 그럼 @Bean annotation을 붙이는 것은 빈으로 등록하겠다는 것을 명시하는 것을 나타내는 것 같은데, 꼭 메서드 형식으로 작성을 해야하는 것인가요? 예를 들어, 강의에 적혀있던 메서드 대신 @Bean public MemberService memberService = new MemberService(); 위와 같이 변수 형태로 선언하면 안되는 것인가요?

  • java
  • spring-boot
  • mvc
  • spring
  • MVC
세승 댓글 1 좋아요 0 조회수 795

th:text에 의해 대체되는 부분 관련 질문

미해결

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

items.html의 일부 코드입니다. <td><a th:text="${item.id}">회원id</a></td> <td><a th:text="${item.itemName}">상품명</a></td> <td th:text="${item.price}">10000</td> <td th:text="${item.quantity}">10</td> 선생님께서는 th:text에 의해 대체될 부분에 '회원id', '상품명', '10000', '10'을 작성하셨습니다. 사실 저는 어차피 대체될 부분이니까 비워둬야 겠다고 생각을 했었는데, (th:text에 대체되더라도) 무엇이 들어가는지를 작성해두는 것이 좋은가요? 그렇다면 혹시 서버에서 렌더링되지 않고 브라우저로 바로 봤을 때 무엇이 들어가는지 알기 위함인 것인가요? 서버를 거치지 않고 브라우저로 바로 봤을 때의 상황까지 고려해주는 것이 좋은가요??

  • spring
  • mvc
  • MVC
도토리 댓글 1 좋아요 0 조회수 521

타임리프에서 URL 표현하는 법

미해결

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

items.html의 일부 코드입니다. <link th:href="@{/css/bootstrap.min.css}"> <button th:onclick="|location.href='@{/basic/items/add}'|"></button> MVC2 강의의 타임리프 편을 듣고 왔는데요, 쿼리 파라미터, 경로변수 없는 단순한 URL(ex. @{/hello} -> /hello)인 경우, @{} 없이 그냥 문자열로 다루면 안 되는 것인가요? 타임리프에서 th:href로 경로를 작성할 때는 단순 경로일지라도 @{}로 경로를 작성하는 것이 원칙인가요?

  • spring
  • mvc
  • MVC
도토리 댓글 1 좋아요 0 조회수 1238

@ModelAttribute Item item에 관한 질문(추가 수정)

해결됨

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

앞선 질문내용이 잘못된것이 있어서 수정합니다. [질문 내용] @ModelAttribute는 지정된 객체를 생성하여, 요청 파라미터의 값을 해당 객체의 프로퍼티를 보고 입력해준다고 알고 있습니다. 그리고 자동으로 model.addAttribute("item", item); 을 실행해 줄텐데 이때 모델에 담기는 item은 기존에 업데이트하려는 item객체가 아니라 @ModelAttribute로 인해 새로 생성된 item을 넣어주게 되는 것 아닙니까? 해당 모델을 return "/basic/item"; 으로 넘겨주게 되면 새로 생성된 item은 updateParam이기 때문에 id값이 없어서 예외가 발생하는 문제가 있습니다. 따라서 redirect를 이용하여 return "redirect:/basic/items/{itemId}" 로 재요청을 하게되면 기존 model이 초기화 되고, itemId로 리포지토리에 있는 item을 찾고 해당 아이템을 model에 추가 하여 "/basic/item" Html From으로 경로 이름을 반환하는 것으로 이해하면 될까요? (추가) 리턴을 pathName으로 바로 해주어도 item.id에 값이 제대로 들어가는 것으로 확인되는데 Model에 담기는것은 updateParam 으로 id값이 없는 것으로 알고 있습니다. 어떻게 잘 작동하는지 궁금합니다.!

  • mvc
  • MVC
  • spring
양지웅 댓글 1 좋아요 0 조회수 989

모델추가 부분에서 왜 에러가 뜨는지 잘모르겠습니다.

미해결

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

지금까지 잘 되다가 모델에 멤버객체를 집어넣는 부분에서 에러가 떠서 진행이 안되네요.. 구글에 쳐도 여거가지 시도를 해도 잘안되서 질문드립니다..

  • mvc
  • MVC
  • spring
배성환 댓글 1 좋아요 1 조회수 349

연관관계의 주인을 양쪽 모두 설정할 경우

해결됨

자바 ORM 표준 JPA 프로그래밍 - 기본편

========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 일대다[1:N] 강의의 16분 29초 쯤에 연관관계의 주인이 양쪽에 모두 있으면 망한다라는 언급이 있으신데, 순서가 꼬이거나 예측이 안된다는게 구체적으로 어떤 의미인지 예시가 있을까요? 정말 단순하게 생각하면 어쨋든 연관관계의 주인이 아닌 쪽에서 mappedby를 통해 읽기 전용으로 설정하지 않아도 Member에서 추가하나 Team에서 추가하나 반영될 수 있다면 오히려 좋지 않나 싶은 의구심이 들어서 질문드립니다 감사합니다 :)

  • jpa
  • java
  • JPA
김윤식 댓글 1 좋아요 0 조회수 4933

quantity 검증에 질문이 있습니다.

해결됨

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

안녕하세요. 우선 좋은 강의 감사드립니다. 수업을 따라 진행하다가, quantity 검증과 관련해 질문이 있습니다. 일부러 수량(quantity)에 큰 값을 넣어봤는데요, 저장을 누르면 이 숫자를 문자로 인식하는 것 같습니다. 99999로 입력하면 올바른 에러가 발생하는데요, 캡쳐본에 있는 값으로 넣게 되면 2023-01-23 12:23:56.797 WARN 21288 --- [nio-8080-exec-2] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.validation.BindException: org.springframework.validation.BeanPropertyBindingResult: 1 errors Field error in object 'item' on field 'quantity': rejected value [9999999999999]; codes [typeMismatch.item.quantity,typeMismatch.quantity, typeMismatch.java .lang.Integer,typeMismatch]; arguments [ org.springframework.context.support .DefaultMessageSourceResolvable: codes [item.quantity,quantity]; arguments []; default message [quantity]]; default message [Failed to convert property value of type 'java.lang.String' to required type 'java.lang.Integer' for property 'quantity'; nested exception is java.lang.NumberFormatException: For input string: "9999999999999"]] 이러한 에러가 발생하게됩니다. 혹시 이런 에러가 발생하는 이유가 있나요? 아 혹시 integer의 최대 숫자보다 커서 문자로 인식이되는건가요? 감사합니다.

  • spring
  • mvc
  • MVC
gayoung78 댓글 1 좋아요 1 조회수 524

F12 개발자 도구 Headers에 왜 Form Data가 있는거죠?

해결됨

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 강사님께서 F12(개발자 도구 창)을 띄워서 Form Data가 넘어오는걸 보여주셨는데 그림을 보면 Headers 메뉴 안에 Form Data 가 있습니다.그런데 HTTP프로토콜에서 Form Data는 쿼리 스트링 형식으로 message body에 들어가서 전달 된다고 알고있는데 개발자 도구에서는 Headers메뉴에 있네용 편의상 Headers메뉴에 message body값도 같이 넣은건지 제가 뭔가 잘못이해하고 있는 건지 궁금합니다.

  • mvc
  • MVC
  • spring
백엔드 주니어 개발자 댓글 1 좋아요 1 조회수 1454

ItemRepository.java의 update() 메서드 관련 질문

미해결

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

public void update(Long itemId, Item updateParam) { Item findItem = store.get(itemId); findItem = updateParam; } update() 메서드 코드를 수정한 것인데, 파라미터로 paramItemDto(id 없이 itemName, price, quantity로만 이뤄진 클래스)를 넘기는 것이 아니라 위와 같이 Item을 넘기는 경우라면, 코드를 이렇게 작성해도 괜찮은 것일까요?

  • mvc
  • MVC
  • spring
도토리 댓글 1 좋아요 0 조회수 510

스프링 필터 오류 페이지

미해결

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

안녕하세요 스프링 필터 오류 페이지 관련 궁금한 것이 있어 질문을 드립니다. 스프링 필터 오류 페이지를 사용하면 오류가 발생하여 was에서 view를 부를 때 필터랑 인터셉터는 자동으로 안부르게 설정 되어져 있는건가요?

  • spring
  • mvc
  • MVC
tjrans303 댓글 1 좋아요 0 조회수 2387

클래스 인식안됨 Truncated class file

해결됨

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? y 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? yy 3. 질문 잘하기 메뉴얼을 읽어보셨나요? y [질문 내용] 여기에 질문 내용을 남겨주세요. Truncated class file 라는 에러가 뜹니다. 하라는대로 다 하는중 이래도 안되네요 캐시도 삭제 그래도 같은 문제 발생 어떻게 해결해야하나요?? 진도가 1강에서 막혀버려서

  • spring
  • mvc
  • MVC
  • java
  • spring-boot
최형택 댓글 1 좋아요 2 조회수 1325

파일 업로드 중 에러 발생

미해결

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

서블릿과 파일 업로드2 를 학습하던 중 삭제가 불가능하다는 예외가 발생하면서 여러 방법을 시도해도 해결되지 않아 문의 드립니다. 개발 환경 window 사용중인 스프링 부트 버전 : 2.7.8 자바 언어 버전 : 11 properties 설정 경로 설정은 위의 사진처럼 했습니다. 에러 로그를 보면 삭제를 할 수 없다고 뜨면서 예외가 발생합니다. 로그 속에 있는 경로로 들어가 직접 파일 제거 시도 -> 서버가 내려갈 경우 파일이 삭제되는 것 확인 가능 해당 부분이 문제라고 생각됩니다. 해결하기 위해 했던 노력 관리자 권한으로 프로그램 실행 결과 : 실패 강의 자료 코드 그대로 옮겨 오기 결과 : 실패 강의 소스 코드 그대로 옮겨 오기 결과 : 실패 경로 바꿔 보기 결과 실패 총 4가지의 시도 결과 전부 실패해 문의 드립니다. 에러 발생 로그 내가 생각하는 로그 핵심 문제 원인 2023-01-22 21:42:00.789 WARN 31328 --- [nio-8080-exec-3] s.w.m.s.StandardServletMultipartResolver : Failed to perform cleanup of multipart items 2023-01-22 20:48:55.796 ERROR 28536 --- [nio-7070-exec-3] o.apache.coyote.http11.Http11Processor : Error processing request java.io .UncheckedIOException: Cannot delete C:\Users\lgh94\AppData\Local\Temp\tomcat.7070.1452951454340902875\work\Tomcat\ localhost \ROOT\upload_ee1add48_92d9_4d5b_8495_af18bb01c136_00000000.tmp at org.apache.tomcat.util.http.fileupload.disk.DiskFileItem.delete( DiskFileItem.java:431 ) ~[tomcat-embed-core-9.0.71.jar:9.0.71] at org.apache.catalina.core.ApplicationPart.delete( ApplicationPart.java:54 ) ~[tomcat-embed-core-9.0.71.jar:9.0.71] at org.apache.catalina.connector.Request.recycle( Request.java:483 ) ~[tomcat-embed-core-9.0.71.jar:9.0.71] at org.apache.catalina.connector.CoyoteAdapter.service( CoyoteAdapter.java:441 ) ~[tomcat-embed-core-9.0.71.jar:9.0.71] at org.apache.coyote.http11.Http11Processor.service( Http11Processor.java:399 ) ~[tomcat-embed-core-9.0.71.jar:9.0.71] at org.apache.coyote.AbstractProcessorLight.process( AbstractProcessorLight.java:65 ) ~[tomcat-embed-core-9.0.71.jar:9.0.71] at org.apache.coyote.AbstractProtocol$ConnectionHandler.process( AbstractProtocol.java:891 ) ~[tomcat-embed-core-9.0.71.jar:9.0.71] at org.apache.tomcat.util.net .NioEndpoint$SocketProcessor.doRun( NioEndpoint.java:1784 ) ~[tomcat-embed-core-9.0.71.jar:9.0.71] at org.apache.tomcat.util.net.SocketProcessorBase.run ( SocketProcessorBase.java:49 ) ~[tomcat-embed-core-9.0.71.jar:9.0.71] at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker( ThreadPoolExecutor.java:1191 ) ~[tomcat-embed-core-9.0.71.jar:9.0.71] at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run( ThreadPoolExecutor.java:659 ) ~[tomcat-embed-core-9.0.71.jar:9.0.71] at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run( TaskThread.java:61 ) ~[tomcat-embed-core-9.0.71.jar:9.0.71] at java.base/java.lang.Thread.run( Thread.java:829 ) ~[na:na] Caused by: java.io .IOException: Cannot delete C:\Users\lgh94\AppData\Local\Temp\tomcat.7070.1452951454340902875\work\Tomcat\ localhost \ROOT\upload_ee1add48_92d9_4d5b_8495_af18bb01c136_00000000.tmp ... 13 common frames omitted 2023-01-22 20:48:55.796 DEBUG 28536 --- [nio-7070-exec-3] o.apache.coyote.http11.Http11Processor : Error state [CLOSE_CLEAN] reported while processing request java.io .UncheckedIOException: Cannot delete C:\Users\lgh94\AppData\Local\Temp\tomcat.7070.1452951454340902875\work\Tomcat\ localhost \ROOT\upload_ee1add48_92d9_4d5b_8495_af18bb01c136_00000000.tmp at org.apache.tomcat.util.http.fileupload.disk.DiskFileItem.delete( DiskFileItem.java:431 ) ~[tomcat-embed-core-9.0.71.jar:9.0.71] at org.apache.catalina.core.ApplicationPart.delete( ApplicationPart.java:54 ) ~[tomcat-embed-core-9.0.71.jar:9.0.71] at org.apache.catalina.connector.Request.recycle( Request.java:483 ) ~[tomcat-embed-core-9.0.71.jar:9.0.71] at org.apache.catalina.connector.CoyoteAdapter.service( CoyoteAdapter.java:441 ) ~[tomcat-embed-core-9.0.71.jar:9.0.71] at org.apache.coyote.http11.Http11Processor.service( Http11Processor.java:399 ) ~[tomcat-embed-core-9.0.71.jar:9.0.71] at org.apache.coyote.AbstractProcessorLight.process( AbstractProcessorLight.java:65 ) ~[tomcat-embed-core-9.0.71.jar:9.0.71] at org.apache.coyote.AbstractProtocol$ConnectionHandler.process( AbstractProtocol.java:891 ) ~[tomcat-embed-core-9.0.71.jar:9.0.71] at org.apache.tomcat.util.net .NioEndpoint$SocketProcessor.doRun( NioEndpoint.java:1784 ) ~[tomcat-embed-core-9.0.71.jar:9.0.71] at org.apache.tomcat.util.net.SocketProcessorBase.run ( SocketProcessorBase.java:49 ) ~[tomcat-embed-core-9.0.71.jar:9.0.71] at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker( ThreadPoolExecutor.java:1191 ) ~[tomcat-embed-core-9.0.71.jar:9.0.71] at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run( ThreadPoolExecutor.java:659 ) ~[tomcat-embed-core-9.0.71.jar:9.0.71] at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run( TaskThread.java:61 ) ~[tomcat-embed-core-9.0.71.jar:9.0.71] at java.base/java.lang.Thread.run( Thread.java:829 ) ~[na:na] Caused by: java.io .IOException: Cannot delete C:\Users\lgh94\AppData\Local\Temp\tomcat.7070.1452951454340902875\work\Tomcat\ localhost \ROOT\upload_ee1add48_92d9_4d5b_8495_af18bb01c136_00000000.tmp ... 13 common frames omitted 2023-01-22 20:48:55.798 ERROR 28536 --- [nio-7070-exec-3] o.a.coyote.http11.Http11NioProtocol : Error reading request, ignored java.io .UncheckedIOException: Cannot delete C:\Users\lgh94\AppData\Local\Temp\tomcat.7070.1452951454340902875\work\Tomcat\ localhost \ROOT\upload_ee1add48_92d9_4d5b_8495_af18bb01c136_00000000.tmp at org.apache.tomcat.util.http.fileupload.disk.DiskFileItem.delete( DiskFileItem.java:431 ) ~[tomcat-embed-core-9.0.71.jar:9.0.71] at org.apache.catalina.core.ApplicationPart.delete( ApplicationPart.java:54 ) ~[tomcat-embed-core-9.0.71.jar:9.0.71] at org.apache.catalina.connector.Request.recycle( Request.java:483 ) ~[tomcat-embed-core-9.0.71.jar:9.0.71] at org.apache.catalina.connector.CoyoteAdapter.log( CoyoteAdapter.java:515 ) ~[tomcat-embed-core-9.0.71.jar:9.0.71] at org.apache.coyote.http11.Http11Processor.service( Http11Processor.java:429 ) ~[tomcat-embed-core-9.0.71.jar:9.0.71] at org.apache.coyote.AbstractProcessorLight.process( AbstractProcessorLight.java:65 ) ~[tomcat-embed-core-9.0.71.jar:9.0.71] at org.apache.coyote.AbstractProtocol$ConnectionHandler.process( AbstractProtocol.java:891 ) ~[tomcat-embed-core-9.0.71.jar:9.0.71] at org.apache.tomcat.util.net .NioEndpoint$SocketProcessor.doRun( NioEndpoint.java:1784 ) ~[tomcat-embed-core-9.0.71.jar:9.0.71] at org.apache.tomcat.util.net.SocketProcessorBase.run ( SocketProcessorBase.java:49 ) ~[tomcat-embed-core-9.0.71.jar:9.0.71] at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker( ThreadPoolExecutor.java:1191 ) ~[tomcat-embed-core-9.0.71.jar:9.0.71] at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run( ThreadPoolExecutor.java:659 ) ~[tomcat-embed-core-9.0.71.jar:9.0.71] at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run( TaskThread.java:61 ) ~[tomcat-embed-core-9.0.71.jar:9.0.71] at java.base/java.lang.Thread.run( Thread.java:829 ) ~[na:na] Caused by: java.io .IOException: Cannot delete C:\Users\lgh94\AppData\Local\Temp\tomcat.7070.1452951454340902875\work\Tomcat\ localhost \ROOT\upload_ee1add48_92d9_4d5b_8495_af18bb01c136_00000000.tmp ... 13 common frames omitted 2023-01-22 20:48:55.799 ERROR 28536 --- [nio-7070-exec-3] org.apache.tomcat.util.net .NioEndpoint : Error running socket processor java.io .UncheckedIOException: Cannot delete C:\Users\lgh94\AppData\Local\Temp\tomcat.7070.1452951454340902875\work\Tomcat\ localhost \ROOT\upload_ee1add48_92d9_4d5b_8495_af18bb01c136_00000000.tmp at org.apache.tomcat.util.http.fileupload.disk.DiskFileItem.delete( DiskFileItem.java:431 ) ~[tomcat-embed-core-9.0.71.jar:9.0.71] at org.apache.catalina.core.ApplicationPart.delete( ApplicationPart.java:54 ) ~[tomcat-embed-core-9.0.71.jar:9.0.71] at org.apache.catalina.connector.Request.recycle( Request.java:483 ) ~[tomcat-embed-core-9.0.71.jar:9.0.71] at org.apache.catalina.connector.CoyoteAdapter.log( CoyoteAdapter.java:515 ) ~[tomcat-embed-core-9.0.71.jar:9.0.71] at org.apache.catalina.connector.CoyoteAdapter.checkRecycled( CoyoteAdapter.java:539 ) ~[tomcat-embed-core-9.0.71.jar:9.0.71] at org.apache.coyote.http11.Http11Processor.recycle( Http11Processor.java:1439 ) ~[tomcat-embed-core-9.0.71.jar:9.0.71] at org.apache.coyote.AbstractProtocol$ConnectionHandler.release( AbstractProtocol.java:1098 ) ~[tomcat-embed-core-9.0.71.jar:9.0.71] at org.apache.coyote.AbstractProtocol$ConnectionHandler.process( AbstractProtocol.java:1056 ) ~[tomcat-embed-core-9.0.71.jar:9.0.71] at org.apache.tomcat.util.net .NioEndpoint$SocketProcessor.doRun( NioEndpoint.java:1784 ) ~[tomcat-embed-core-9.0.71.jar:9.0.71] at org.apache.tomcat.util.net.SocketProcessorBase.run ( SocketProcessorBase.java:49 ) ~[tomcat-embed-core-9.0.71.jar:9.0.71] at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker( ThreadPoolExecutor.java:1191 ) ~[tomcat-embed-core-9.0.71.jar:9.0.71] at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run( ThreadPoolExecutor.java:659 ) ~[tomcat-embed-core-9.0.71.jar:9.0.71] at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run( TaskThread.java:61 ) ~[tomcat-embed-core-9.0.71.jar:9.0.71] at java.base/java.lang.Thread.run( Thread.java:829 ) ~[na:na] Caused by: java.io .IOException: Cannot delete C:\Users\lgh94\AppData\Local\Temp\tomcat.7070.1452951454340902875\work\Tomcat\ localhost \ROOT\upload_ee1add48_92d9_4d5b_8495_af18bb01c136_00000000.tmp ... 14 common frames omitted

  • mvc
  • spring
  • MVC
기호리의우당탕탕백엔드도전기 댓글 2 좋아요 2 조회수 9736

base.html에서 th:block을 div로 바꾸었을 때 관련 질문

미해결

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

base.html 코드 일부분입니다. <!-- 추가 --> <th:block th:replace="${links}" /> <div th:replace="${links}"></div> 두 번째 줄은 th:block -> div로 바꾼 것입니다. th:replace로 인해서 <div> 코드가 2개의 <link>로 대체될 줄 알았는데, 아예 <div> 코드 자체가 출력이 안 되었습니다(소스코드 보기 했을 때). 왜 태그가 대체되는 것이 아니라 아예 출력되지 않는 것인가요..??

  • mvc
  • MVC
  • spring
도토리 댓글 1 좋아요 2 조회수 477

base.html에서 일부 코드 변경 가능 여부 질문

미해결

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

base.html의 코드 일부입니다. <head th:fragment="common_header(title,links)"> <title th:replace="${title}">레이아웃 타이틀</title> ... <!-- 추가 --> <th:block th:replace="${links}" /> </head> <title>을 넘기지 않았더니 exception이 발생했습니다. 태그를 반드시 넘겨야 하는 것이라면, 그래서 <title>이 교체될 것이라면 위 코드에서 <title>, '레이아웃 타이틀'을 작성하지 않아도 되는 것가요? <title> 대신 큰 의미없는 <div>나 (5번째 줄에서 작성한) <th:block>을 사용해도 되는 것인가요?

  • mvc
  • MVC
  • spring
도토리 댓글 1 좋아요 0 조회수 551

V3 new - form

미해결

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

java.io .EOFException: null at org.apache.tomcat.util.net .NioEndpoint$NioSocketWrapper.fillReadBuffer( NioEndpoint.java:1340 ) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.tomcat.util.net .NioEndpoint$NioSocketWrapper.read( NioEndpoint.java:1227 ) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.coyote.http11.Http11InputBuffer.fill( Http11InputBuffer.java:805 ) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.coyote.http11.Http11InputBuffer.parseRequestLine( Http11InputBuffer.java:360 ) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.coyote.http11.Http11Processor.service( Http11Processor.java:271 ) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.coyote.AbstractProcessorLight.process( AbstractProcessorLight.java:65 ) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.coyote.AbstractProtocol$ConnectionHandler.process( AbstractProtocol.java:891 ) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.tomcat.util.net .NioEndpoint$SocketProcessor.doRun( NioEndpoint.java:1784 ) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.tomcat.util.net.SocketProcessorBase.run ( SocketProcessorBase.java:49 ) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker( ThreadPoolExecutor.java:1191 ) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run( ThreadPoolExecutor.java:659 ) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run( TaskThread.java:61 ) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at java.base/java.lang.Thread.run( Thread.java:834 ) ~[na:na] 2023-01-22 12:02:46.767 DEBUG 16928 --- [nio-8080-exec-2] 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:1340 ) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.tomcat.util.net .NioEndpoint$NioSocketWrapper.read( NioEndpoint.java:1227 ) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.coyote.http11.Http11InputBuffer.fill( Http11InputBuffer.java:805 ) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.coyote.http11.Http11InputBuffer.parseRequestLine( Http11InputBuffer.java:360 ) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.coyote.http11.Http11Processor.service( Http11Processor.java:271 ) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.coyote.AbstractProcessorLight.process( AbstractProcessorLight.java:65 ) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.coyote.AbstractProtocol$ConnectionHandler.process( AbstractProtocol.java:891 ) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.tomcat.util.net .NioEndpoint$SocketProcessor.doRun( NioEndpoint.java:1784 ) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.tomcat.util.net.SocketProcessorBase.run ( SocketProcessorBase.java:49 ) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker( ThreadPoolExecutor.java:1191 ) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run( ThreadPoolExecutor.java:659 ) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run( TaskThread.java:61 ) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at java.base/java.lang.Thread.run( Thread.java:834 ) ~[na:na] 2023-01-22 12:02:46.768 DEBUG 16928 --- [nio-8080-exec-2] 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:1340 ) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.tomcat.util.net .NioEndpoint$NioSocketWrapper.read( NioEndpoint.java:1227 ) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.coyote.http11.Http11InputBuffer.fill( Http11InputBuffer.java:805 ) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.coyote.http11.Http11InputBuffer.parseRequestLine( Http11InputBuffer.java:360 ) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.coyote.http11.Http11Processor.service( Http11Processor.java:271 ) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.coyote.AbstractProcessorLight.process( AbstractProcessorLight.java:65 ) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.coyote.AbstractProtocol$ConnectionHandler.process( AbstractProtocol.java:891 ) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.tomcat.util.net .NioEndpoint$SocketProcessor.doRun( NioEndpoint.java:1784 ) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.tomcat.util.net.SocketProcessorBase.run ( SocketProcessorBase.java:49 ) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker( ThreadPoolExecutor.java:1191 ) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run( ThreadPoolExecutor.java:659 ) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run( TaskThread.java:61 ) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at java.base/java.lang.Thread.run( Thread.java:834 ) ~[na:na] 2023-01-22 12:02:46.768 DEBUG 16928 --- [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:1340 ) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.tomcat.util.net .NioEndpoint$NioSocketWrapper.read( NioEndpoint.java:1227 ) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.coyote.http11.Http11InputBuffer.fill( Http11InputBuffer.java:805 ) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.coyote.http11.Http11InputBuffer.parseRequestLine( Http11InputBuffer.java:360 ) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.coyote.http11.Http11Processor.service( Http11Processor.java:271 ) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.coyote.AbstractProcessorLight.process( AbstractProcessorLight.java:65 ) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.coyote.AbstractProtocol$ConnectionHandler.process( AbstractProtocol.java:891 ) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.tomcat.util.net .NioEndpoint$SocketProcessor.doRun( NioEndpoint.java:1784 ) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.tomcat.util.net.SocketProcessorBase.run ( SocketProcessorBase.java:49 ) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker( ThreadPoolExecutor.java:1191 ) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run( ThreadPoolExecutor.java:659 ) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run( TaskThread.java:61 ) ~[tomcat-embed-core-9.0.70.jar:9.0.70] at java.base/java.lang.Thread.run( Thread.java:834 ) ~[na:na] 패키지 위치랑 URI주소 정확하게 맞췄는데도 404 에러에 로그는 저렇게 찍히네요 private static MyView viewResolver(String viewName) { return new MyView("/WEB-INF/views/" + viewName + ".jsp"); }

  • mvc
  • MVC
  • spring
wnwn7311 댓글 2 좋아요 0 조회수 655

<th:block> 태그의 존재 이유 관련 질문

미해결

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

<div th:each="user : ${users}"> <div> 사용자 이름1 <span th:text="${user.username}"></span> 사용자 나이1 <span th:text="${user.age}"></span> </div> <div> 요약 <span th:text="${user.username} + ' / ' + ${user.age}"></span> </div> </div> <th:block> -> <div>로 바꾼 코드입니다. th:block 태그를 사용하지 않고 div 태그 2개를 반복할 수 있는 방법이 존재할 것 같아서 바꿔본 것인데, 가장 바깥 <div> 태그가 출력된다는 점을 제외하면 눈에 보이는 결과물은 동일합니다. 제가 아직 경험이 부족해서 <th:block>가 유용하게 사용되는 경우를 모르는 것이겠죠...? ㅠㅠ

  • mvc
  • MVC
  • spring
도토리 댓글 2 좋아요 1 조회수 1042

오라클 DB연결 bean설정하는 방법 질문합니다.

미해결

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

강의를 듣다가 데이터베이스를 h2 말고 oracle로 사용하고싶어서 변경해봤는데 방법을 잘 모르겠습니다.. 단순하게 db 연결은 가능합니다. public class JdbcTest01 { public static void main(String[] args) { Connection conn = null; Statement stmt = null; ResultSet rs = null; try { conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe", "이름", "비밀번호"); Class.forName("oracle.jdbc.driver.OracleDriver"); String sql = "select * from member"; stmt = conn.createStatement(); rs = stmt.executeQuery(sql); System.out.println(" == 쿼리문 처리 결과 =="); while (rs.next()) { System.out.println("Lprod_id : " + rs.getInt("id")); System.out.println("------------------------------"); } } catch (SQLException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { } finally { if (rs!=null) { try { rs.close(); } catch (SQLException e2) { } } if (stmt!=null) { try { stmt.close(); } catch (SQLException e2) { } } if (conn!=null) { try { conn.close(); } catch (SQLException e2) { } } } } } 그런데.. 빈 설정하는 방법을 잘 모르는 것 같습니다 ㅠㅠ (.getConnection에 유저이름과 비밀번호는 제대로 설정했습니다! 밑에만 바꿨어요!) public class JdbcMemberRepository implements MemberRepository { private final DataSource dataSource; public JdbcMemberRepository(DataSource dataSource) { this.dataSource = dataSource; } @Override public Member save(Member member) { String sql = "insert into member(name) values(?)"; Connection conn = null; PreparedStatement pstmt = null; ResultSet rs = null; try { conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe", "이름", "비밀번호"); pstmt = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS); pstmt.setString(1, member.getName()); pstmt.executeUpdate(); rs = pstmt.getGeneratedKeys(); if (rs.next()) { member.setId(rs.getLong(1)); } else { throw new SQLException("id 조회 실패"); } return member; } catch (Exception e) { throw new IllegalStateException(e); } finally { // 5. 자원 반납 if (rs!=null) { try { rs.close(); } catch (SQLException e2) { // TODO: handle exception } } if (conn!=null) { try { conn.close(); } catch (SQLException e2) { // TODO: handle exception } } } } 프로퍼티스 spring.datasource.url=jdbc:oracle:thin:@localhost:1521:xe spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver spring.datasource.username=이름 spring.datasource.password=비밀번호 디펜던시스 dependencies { implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'com.oracle.ojdbc:ojdbc8:19.3.0.0' implementation 'com.oracle.database.jdbc:ojdbc6:11.2.0.4' testImplementation 'org.springframework.boot:spring-boot-starter-test' implementation 'org.projectlombok:lombok' implementation 'org.springframework.boot:spring-boot-starter-jdbc' runtimeOnly 'com.h2database:h2' } @Configuration @Configuration public class SpringConfig { private DataSource dataSource; public SpringConfig(DataSource dataSource) { this.dataSource = dataSource; } @Bean //스프링빈수동등록 public MemberService memberService() { return new MemberService((MemoryMemberRepository) memberRepository()); } @Bean public MemberRepository memberRepository() { //return new MemoryMemberRepository(); return new JdbcMemberRepository(dataSource); } } 어떤 부분을 추가하고 수정해야하는지 잘 모르겠습니다 ㅠ

  • java
  • mvc
  • MVC
  • spring-boot
  • spring
배성환 댓글 1 좋아요 0 조회수 1039

인기 태그

인프런 TOP Writers

주간 인기글