inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

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

섹션7의 PRG Post/Redirect/Get 질문입니다.

해결됨

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

섹션 7의 PRG Post/Redirect/Get에서요, 7:30에 retrun "basic/item"; 이 부분을 리다이렉트로 수정하시는데요, 혹시 basic/item 뷰페이지로 이동되지 않고 그대로 남는 이유가, 포스트요청이라서 리턴값을 뷰페이지로 취급하지 않는 것 아닌가해서요. 겟요청이였으면 저렇게 리턴을 했어도 뷰페이지로 자동 리다이렉트까지 되었지 않았을까요...? 그대로 남는 이유를 새로고침으로 인한 중복 오류를 중심으로 말씀해주시지만 리턴값과 연결해서 설명해주시지 않으셔서 헷갈리네요.

  • spring
  • mvc
오르골 댓글 1 좋아요 1 조회수 257

pip로 패키지를 설치했음에도 import 오류가 납니다. 어떻게 해야 할까요?

해결됨

실무에서 사용하는 클라우드 보안 프로그래밍 (AWS, Python, Terraform)

기존 질문이 삭제되어 헷갈리실 다른 분들을 위해 자문자답 형태로 남겨둡니다. Python의 경우 어느 곳에서 다운로드 받느냐에 따라 다양한 경로에 다양한 버전이 생길 수 있습니다. 첨부해주신 사진을 봤을 때, /usr/bin/python3 를 통해 boto3를 import 하시려면, /usr/bin/pip3 를 통해 boto3를 다운로드 해주셔야 될 것 같습니다.( /usr/bin/python3 를 입력해서 실행했을 때와 python3 를 입력했을 때 버전을 비교해보시면 좋습니다.) 간단한 해결 방법으로는 /usr/bin/python3 가 아닌 그냥 python3 로 실행해주시면 될 것 같습니다. 만약 해결되지 않는다면, 현재 boto3가 설치된 경로에 있는 Python 실행 파일을 통해 파일을 실행해주시면 됩니다. 이런 번거로운 절차가 귀찮으시면, 1.3. Python 실행 단축키 설정 을 참고하셔서 실행 설정을 해주시고, vscode에서 cmd + shift + p 입력 후, Python: Select Interpreter 를 입력해주신 후에 실행하고 싶은 Python3 경로를 선택해주시면 됩니다. 또는, 우측 하단에 아래 그림과 같이 나오는 부분에서 버전을 클릭하시면 위 그림이 나오게 됩니다. 이후에는 cmd + enter 를 통해 쉽게 실행 가능합니다! 해보시고 안되시면 다시 말씀 부탁드리겠습니다.

  • python
  • aws
  • Terraform
  • devsecops
천강민 댓글 1 좋아요 0 조회수 698

msw server 구성

해결됨

Next + React Query로 SNS 서비스 만들기

안녕하세요 강사님 수업 잘듣고 있습니다 .. ! msw 쪽 수업을 듣다가 궁금한 점이 있어서 질문 남기게 되었습니다 msw 공식 홈페이지 ( https://mswjs.io/docs/integrations/node) 에서 node 관련 server 를 지원해주는데 express로 따로 https 파일을 구성하신 이유가 있으신지 궁금합니다.. ! 공식홈페이지를 따라 갈지, express로 서버를 구성해야하는지 선택이 어려워서요..! 조언을 듣고 싶습니다

  • next.js
  • msw
댓글 1 좋아요 0 조회수 233

@Transactional 롤백,,?

해결됨

스프링 DB 2편 - 데이터 접근 활용 기술

안녕하세요 강사님. 프로젝트 진행중에 간단한 테스트 작업 중 이상한 결과가 나와서 질문드립니다..! @Transactional @SpringBootTest @ActiveProfiles("test") class ProductListResponseDtoTest { @Autowired ProductRepository productRepository; @Test @DisplayName("주문 상세가 주어졌을 때 ProductListResponseDto 변환") public void ofWithOrderDetail() { Product product = Product.builder() .price(1000L) .name("빵빵이") .productNo("123") .build(); productRepository.save(product); OrderDetail orderDetail = OrderDetail.builder() .product(product) .price(product.getPrice()) .quantity(2L) .build(); // when ProductListResponseDto result = ProductListResponseDto.of(orderDetail); // then assertThat(result).extracting("productId", "productNo", "name", "price", "quantity") .contains(1L, "123", "빵빵이", 1000L, 2L); } @Test @DisplayName("상품과 수량이 주어졌을 때 ProductListResponseDto 변환") public void ofWithProductAndQuantity() { Long quantity = 2L; Product product = Product.builder() .price(1000L) .name("빵빵이") .productNo("123") .build(); productRepository.save(product); // when ProductListResponseDto result = ProductListResponseDto.of(product, quantity); // then assertThat(result).extracting("productId", "productNo", "name", "price", "quantity") .contains(1L, "123", "빵빵이", 1000L, 2L); } } @Transactional를 통해 각 테스트가 롤백되어 productId가 모두 1L 될 것으로 예상하였습니다. 그런데 기대와 달리 실패를 하였는데요. 첫번째 테스트(ofWithOrderDetail)의 productId의 값이 2L 되었습니다. insert문과 에러 메세지입니다. Hibernate: insert into product (category_id, created_at, deleted_at, discount_rate, is_own, is_subs, name, price, product_no, stock, thumb_img, updated_at, product_id) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, default) 2024-01-29T22:28:07.219+09:00 INFO 3636 --- [ main] p6spy : #1706534887219 | took 4ms | statement | connection 3| url jdbc:h2:mem:~/Marketbridge insert into product (category_id,created_at,deleted_at,discount_rate,is_own,is_subs,name,price,product_no,stock,thumb_img,updated_at,product_id) values (?,?,?,?,?,?,?,?,?,?,?,?,default) insert into product (category_id,created_at,deleted_at,discount_rate,is_own,is_subs,name,price,product_no,stock,thumb_img,updated_at,product_id) values (NULL,NULL,NULL,NULL,NULL,NULL,'빵빵이',1000,'123',NULL,NULL,NULL,default); 2024-01-29T22:28:07.299+09:00 INFO 3636 --- [ main] p6spy : #1706534887299 | took 0ms | rollback | connection 3| url jdbc:h2:mem:~/Marketbridge ; Hibernate: insert into product (category_id, created_at, deleted_at, discount_rate, is_own, is_subs, name, price, product_no, stock, thumb_img, updated_at, product_id) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, default) 2024-01-29T22:28:07.309+09:00 INFO 3636 --- [ main] p6spy : #1706534887309 | took 0ms | statement | connection 4| url jdbc:h2:mem:~/Marketbridge insert into product (category_id,created_at,deleted_at,discount_rate,is_own,is_subs,name,price,product_no,stock,thumb_img,updated_at,product_id) values (?,?,?,?,?,?,?,?,?,?,?,?,default) insert into product (category_id,created_at,deleted_at,discount_rate,is_own,is_subs,name,price,product_no,stock,thumb_img,updated_at,product_id) values (NULL,NULL,NULL,NULL,NULL,NULL,'빵빵이',1000,'123',NULL,NULL,NULL,default); 2024-01-29T22:28:07.317+09:00 INFO 3636 --- [ main] p6spy : #1706534887317 | took 0ms | rollback | connection 4| url jdbc:h2:mem:~/Marketbridge ; java.lang.AssertionError: [Extracted: productId, productNo, name, price, quantity] Expecting ArrayList: [2L, "123", "빵빵이", 1000L, 2L] to contain: [1L, "123", "빵빵이", 1000L, 2L] but could not find the following element(s): [1L] at com.objects.marketbridge.order.service.dto.ProductListResponseDtoTest.ofWithOrderDetail(ProductListResponseDtoTest.java:44) at java.base/java.lang.reflect.Method.invoke(Method.java:568) at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) of 메서드 입니다. @Getter public class ProductListResponseDto { private Long productId; private String productNo; private String name; private Long price; private Long quantity; @Builder private ProductListResponseDto(Long productId, String productNo, String name, Long price,Long quantity) { this.productId = productId; this.productNo = productNo; this.name = name; this.price = price; this.quantity = quantity; } public static ProductListResponseDto of(Product product, Long quantity) { return ProductListResponseDto.builder() .productId(product.getId()) .productNo(product.getProductNo()) .name(product.getName()) .price(product.getPrice()) .quantity(quantity) .build(); } public static ProductListResponseDto of(OrderDetail orderDetail) { return ProductListResponseDto.builder() .productId(orderDetail.getProduct().getId()) .productNo(orderDetail.getProduct().getProductNo()) .name(orderDetail.getProduct().getName()) .price(orderDetail.getProduct().getPrice()) .quantity(orderDetail.getQuantity()) .build(); } } 현재 Product 엔티티의 Id는 @GeneratedValue(strategy = GenerationType.IDENTITY) 로 이루어져 있습니다. 추가적으로 @ActiveProfiles("test")에 해당하는 yml의 일부는 아래와 같습니다. datasource: url: jdbc:h2:mem:~/Marketbridge driver-class-name: org.h2.Driver username: sa password: jpa: hibernate: ddl-auto: none show-sql: true properties: hibernate: format_sql: true default_batch_fetch_size: 100 defer-datasource-initialization: true h2: console: enabled: true 이런 경우는 처음이라 어디가 잘못됐는지 찾지 못하겠네요 ㅠㅠ

  • spring
  • mvc
  • jpa
  • querydsl
  • spring-data-mybatis
  • spring-jpa
모깅 댓글 1 좋아요 0 조회수 437

한글 파일명 첨부파일 다운

미해결

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

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요.안녕하세요영어로된 첨부파일 다운받는 과정까지 잘됩니다. 그런데 첨부파일명이 한글인 것을 다운클릭하면 안되고 화면에 다깨진 글씨만 보여줘서 마치 content_disposition추가하기 전처럼 뜨네요.... 방법이 없나요

  • spring
  • mvc
댓글 1 좋아요 0 조회수 428

섹션7. 상품상세

미해결

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

<div class="col"> <button class="w-100 btn btn-primary btn-lg" onclick="location.href='editForm.html'" th:onclick="|location.href='@{/basic/items/{itemId}/edit(itemId=${item.id})}'|" type="button">상품 수정</button> </div> 여기서 타임리프 문법에서 th:|location.href='@{/basic/itesm/${ item.id }/edit 로 하면 http://localhost:8080/basic/items/$%7Bitem.id%7D/edit 이런식으로 url이 생기는데, 왜 그런건가요? 이전에 상품목록-타임리프 강의에서는 <td><a href="item.html" th:href="@{/basic/items/{itemId}(itemId=${item.id})}" th:text="${item.id}">회원 아이디</a></td> <td><a href="item.html" th:href="@{|/basic/items/${item.id}|}" th:text="${item.itemName}">상품명</a></td> 이렇게 URL 표현식으로 쓸 수 있다고 배웠어서요! 감사합니다!

  • spring
  • mvc
euneun 댓글 2 좋아요 0 조회수 290

세션 질문

미해결

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

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 이전 강의에서 세션을 직접 만들 때는 세션저장소에는(sessionId, Member 객체) 쿠키에는 (session_cookie_name, sessionId) 이런 식으로 mapping이 되었는데, 이번 강의에서 보면 session.setAttribute에서 (session_name, Member객체)와 같이 mapping이 되는 것을 볼 수 있습니다. 세션 id를 별도로 저장을 하는 과정이 없는데 자동으로 (session_name, sessionID)를 세션저장소에 저장해준다 라고 이해해도 괜찮을까요?

  • spring
  • mvc
sde101573 댓글 1 좋아요 1 조회수 278

jsp를 사용하면 왜 war 파일을 사용하나요?

미해결

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

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 안녕하세요! 김영한 선생님의 스프링 mvc 1편 - 6강을 듣다가 궁금한 점이 있어서 질문 올립니다. jsp를 사용하면 왜 war 파일을 사용해야하나요? 서블릿 컨테이너가 필요한거면 springboot안에 내장 서버가 있으니깐 그것을 이용하면 되는 거 아닌가요? jar와 war 배포 차이점에 대한 자세한 설명 부탁드립니다

  • spring
  • mvc
올빼미 댓글 1 좋아요 1 조회수 801

Spring boot 3 gradle에 jstl 수정해도 에러 발생하네요

해결됨

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

members.jsp <%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <html> <head> <title>member list</title> <meta charset="UTF-8"> </head> <body> <a href="/index.html">메인</a> <table> <thead> <tr> <th>id</th> <th>username</th> <th>age</th> </tr> </thead> <tbody> <c:forEach var="item" items="${members}"> <tr> <td>${item.id}</td> <td>${item.username}</td> <td>${item.age}</td> </tr> </c:forEach> </tbody> </table> </body> </head> </html> build.gradle plugins { id 'org.springframework.boot' version '2.4.3' id 'io.spring.dependency-management' version '1.0.11.RELEASE' id 'java' id 'war' } configurations { compileOnly { extendsFrom annotationProcessor } } group = 'org.example' version = '1.0-SNAPSHOT' repositories { mavenCentral() } dependencies { testImplementation platform('org.junit:junit-bom:5.9.1') testImplementation 'org.junit.jupiter:junit-jupiter' implementation 'org.springframework.boot:spring-boot-starter-web' compileOnly 'org.projectlombok:lombok:1.18.28' annotationProcessor 'org.projectlombok:lombok:1.18.28' //providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat' testImplementation 'org.springframework.boot:spring-boot-starter-test' //JSP 추가 implementation 'org.apache.tomcat.embed:tomcat-embed-jasper' implementation 'jakarta.servlet:jakarta.servlet-api:6.0.0' //스프링부트 3.0 이상 implementation 'jakarta.servlet.jsp.jstl:jakarta.servlet.jsp.jstl-api:3.0.0' //스프링부트 3.0 이상 implementation 'org.glassfish.web:jakarta.servlet.jsp.jstl:3.0.1' //Error 스프링부트 3.0 이상 } test { useJUnitPlatform() } 안녕하세요. spring boot 3 에서 jstl 사용을 위해 gradle에 위 내용처럼 추가하였는데 NoClassDef Err 발생합니다. 2024-01-29 15:07:48.054 ERROR 9200 --- [nio-8080-exec-4] a.c.c.C.[.[.[.[frontControllerServletV1] : Servlet.service() for servlet [frontControllerServletV1] in context with path [] threw exception [java.lang.NoClassDefFoundError: jakarta/servlet/jsp/tagext/TagLibraryValidator] with root cause java.lang.ClassNotFoundException: jakarta.servlet.jsp.tagext.TagLibraryValidator at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641) ~[na:na] at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) ~[na:na] at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520) ~[na:na] at java.base/java.lang.ClassLoader.defineClass1(Native Method) ~[na:na] at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1012) ~[na:na] at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150) ~[na:na] 프로젝트 클린, gradle refresh 다해봤는데 안되네요

  • spring
  • mvc
developer_BackEnd 댓글 4 좋아요 2 조회수 1930

에러 발생

미해결

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

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 조건에 맞지 않게 입력해도 상품에 등록되는 에러가 발생하였습니다. 해결시도 1.에러 프로퍼티의 문제였나 2.맵핑의 문제였나 3.validate의 오류인가 3가지를 시도하였는데 해결하지 못하였습니다. https://drive.google.com/file/d/1bMqOTrLsq7HF0NjU8I6er9jHgW9NvEBW/view?usp=drive_link 코드입니다

  • spring
  • mvc
봉준 댓글 1 좋아요 0 조회수 499

FrontControllerServletV5 null 오류

미해결

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

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] java.lang.NullPointerException: Cannot invoke "hello.servlet.web.frontcontroller.ModelView.getViewName()" because "mv" is null at hello.servlet.web.frontcontroller.v5.FrontControllerServletV5.service (FrontControllerServletV5.java:5 7) ~[classes/:na] at jakarta.servlet.http.HttpServlet.service (HttpServlet.java:61 4) ~[jakarta.servlet-api-6.0.0.jar:6.0.0] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:20 5) ~[tomcat-embed-core-10.1.16.jar:10.1.16] at org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:14 9) ~[tomcat-embed-core-10.1.16.jar:10.1.16] at org.apache.tomcat.websocket.server.WsFilter.doFilter (WsFilter.java:5 1) ~[tomcat-embed-websocket-10.1.16.jar:10.1.16] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:17 4) ~[tomcat-embed-core-10.1.16.jar:10.1.16] at org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:14 9) ~[tomcat-embed-core-10.1.16.jar:10.1.16] at org.springframework.web.filter.RequestContextFilter.doFilterInternal (RequestContextFilter.java:10 0) ~[spring-web-6.1.1.jar:6.1.1] at org.springframework.web.filter.OncePerRequestFilter.doFilter (OncePerRequestFilter.java:11 6) ~[spring-web-6.1.1.jar:6.1.1] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:17 4) ~[tomcat-embed-core-10.1.16.jar:10.1.16] at org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:14 9) ~[tomcat-embed-core-10.1.16.jar:10.1.16] at org.springframework.web.filter.FormContentFilter.doFilterInternal (FormContentFilter.java:9 3) ~[spring-web-6.1.1.jar:6.1.1] at org.springframework.web.filter.OncePerRequestFilter.doFilter (OncePerRequestFilter.java:11 6) ~[spring-web-6.1.1.jar:6.1.1] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:17 4) ~[tomcat-embed-core-10.1.16.jar:10.1.16] at org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:14 9) ~[tomcat-embed-core-10.1.16.jar:10.1.16] at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal (CharacterEncodingFilter.java:20 1) ~[spring-web-6.1.1.jar:6.1.1] at org.springframework.web.filter.OncePerRequestFilter.doFilter (OncePerRequestFilter.java:11 6) ~[spring-web-6.1.1.jar:6.1.1] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:17 4) ~[tomcat-embed-core-10.1.16.jar:10.1.16] at org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:14 9) ~[tomcat-embed-core-10.1.16.jar:10.1.16] at org.apache.catalina.core.StandardWrapperValve.invoke (StandardWrapperValve.java:16 7) ~[tomcat-embed-core-10.1.16.jar:10.1.16] at org.apache.catalina.core.StandardContextValve.invoke (StandardContextValve.java:9 0) ~[tomcat-embed-core-10.1.16.jar:10.1.16] at org.apache.catalina.authenticator.AuthenticatorBase.invoke (AuthenticatorBase.java:48 2) ~[tomcat-embed-core-10.1.16.jar:10.1.16] at org.apache.catalina.core.StandardHostValve.invoke (StandardHostValve.java:11 5) ~[tomcat-embed-core-10.1.16.jar:10.1.16] at org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java:9 3) ~[tomcat-embed-core-10.1.16.jar:10.1.16] at org.apache.catalina.core.StandardEngineValve.invoke (StandardEngineValve.java:7 4) ~[tomcat-embed-core-10.1.16.jar:10.1.16] at org.apache.catalina.connector.CoyoteAdapter.service (CoyoteAdapter.java:34 0) ~[tomcat-embed-core-10.1.16.jar:10.1.16] at org.apache.coyote.http11.Http11Processor.service (Http11Processor.java:39 1) ~[tomcat-embed-core-10.1.16.jar:10.1.16] at org.apache.coyote.AbstractProcessorLight.process (AbstractProcessorLight.java:6 3) ~[tomcat-embed-core-10.1.16.jar:10.1.16] at org.apache.coyote.AbstractProtocol$ConnectionHandler.process (AbstractProtocol.java:89 6) ~[tomcat-embed-core-10.1.16.jar:10.1.16] at org.apache.tomcat.util.ne t.NioEndpoint$SocketProcessor.doRun (NioEndpoint.java:174 4) ~[tomcat-embed-core-10.1.16.jar:10.1.16] at org.apache.tomcat.util.net.SocketProcessorBase.ru n (SocketProcessorBase.java:5 2) ~[tomcat-embed-core-10.1.16.jar:10.1.16] at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:119 1) ~[tomcat-embed-core-10.1.16.jar:10.1.16] at org.apache.tomcat.util.threads.ThreadPoolExecutor $Worker.ru n (ThreadPoolExecutor.java:65 9) ~[tomcat-embed-core-10.1.16.jar:10.1.16] at org.apache.tomcat.util.threads.TaskThread $WrappingRunnable.ru n (TaskThread.java:6 1) ~[tomcat-embed-core-10.1.16.jar:10.1.16] at java.base /java.lang.Thread.ru n (Thread.java:83 3) ~[na:na] --- package hello.servlet.web.frontcontroller.v5; import hello.servlet.web.frontcontroller.ModelView; import hello.servlet.web.frontcontroller.MyView; import hello.servlet.web.frontcontroller.v3.ControllerV3; import hello.servlet.web.frontcontroller.v3.controller.MemberFormControllerV3; import hello.servlet.web.frontcontroller.v3.controller.MemberListControllerV3; import hello.servlet.web.frontcontroller.v3.controller.MemberSaveControllerV3; import hello.servlet.web.frontcontroller.v5.adapter.ControllerV3HandlerAdapter; import jakarta.servlet.ServletException; import jakarta.servlet.annotation.WebServlet; import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @WebServlet(name = "frontControllerServletV5" , urlPatterns = "/front-controller/v5/*") public class FrontControllerServletV5 extends HttpServlet { private final Map<String,Object> handlerMappingMap = new HashMap<>(); private final List<MyHandlerAdapter> handlerAdapters = new ArrayList<>(); public FrontControllerServletV5() { initHandlerMappingMap(); initHandlerAdapters(); } private void initHandlerMappingMap() { handlerMappingMap.put("/front-controller/v5/v3/members/new-form", new MemberFormControllerV3()); handlerMappingMap.put("/front-controller/v5/v3/members/save", new MemberSaveControllerV3()); handlerMappingMap.put("/front-controller/v5/v3/members", new MemberListControllerV3()); } private void initHandlerAdapters() { handlerAdapters.add(new ControllerV3HandlerAdapter()); } @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { Object handler = getHandler(request); if (handler == null) { response.setStatus(HttpServletResponse.SC_NOT_FOUND); return; } MyHandlerAdapter adapter = getHandlerAdapter(handler); ModelView mv = adapter.handle(request, response, handler); MyView view = viewResolver(mv.getViewName()); view.render(mv.getModel(),request,response); } private Object getHandler(HttpServletRequest request) { String requestURI = request.getRequestURI(); return handlerMappingMap.get(requestURI); } private MyHandlerAdapter getHandlerAdapter(Object handler) { MyHandlerAdapter a; for (MyHandlerAdapter adapter : handlerAdapters) { if(adapter.supports(handler)){ return adapter; } } throw new IllegalArgumentException("handler adapter를 찾을 수 없습니다. handler = "+handler); } private static MyView viewResolver(String viewName) { return new MyView("/WEB-INF/views/" + viewName + ".jsp"); } } --- 이런 오류가 발생하는데 어디가 문제인제 잘 모르겠습니다..왜 이런걸까요?ㅠㅠㅠ

  • spring
  • mvc
김나무 댓글 1 좋아요 0 조회수 377

JPA 17분 오류 발생

미해결

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

강의 17분에서 통합테스트 돌렸는데 이런 오류가 뜹니다. 어딜 하나 건드려서 지금 오류가 전부 뜨는 것 같은데 클래스가 너무 많아서 어디가 오류인지도 잘 모르겠습니다.. 답변 기다리겠습니다. Hibernate: select m1_0.id,m1_0.name from member m1_0 where m1_ 0.name =? 2024-01-28T22:17:30.817+09:00 WARN 11685 --- [ main] o.h.engine.jdbc.spi.SqlExceptionHelper : SQL Error: 42104, SQLState: 42S04 2024-01-28T22:17:30.817+09:00 ERROR 11685 --- [ main] o.h.engine.jdbc.spi.SqlExceptionHelper : Table "MEMBER" not found (this database is empty); SQL statement: select m1_0.id,m1_0.name from member m1_0 where m1_0.name=? [42104-214] org.hibernate.exception.SQLGrammarException: could not prepare statement [Table "MEMBER" not found (this database is empty); SQL statement: select m1_0.id,m1_0.name from member m1_0 where m1_0.name=? [42104-214]] [select m1_0.id,m1_0.name from member m1_0 where m1_0.name=?] at org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelegate.java:64) at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:56) at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:108) at org.hibernate.engine.jdbc.internal.StatementPreparerImpl$StatementPreparationTemplate.prepareStatement(StatementPreparerImpl.java:187) at org.hibernate.engine.jdbc.internal.StatementPreparerImpl.prepareStatement(StatementPreparerImpl.java:76) at org.hibernate.sql.exec.internal.JdbcSelectExecutorStandardImpl.lambda$list$0(JdbcSelectExecutorStandardImpl.java:102) at org.hibernate.sql.results.jdbc.internal.DeferredResultSetAccess.executeQuery(DeferredResultSetAccess.java:226) at org.hibernate.sql.results.jdbc.internal.DeferredResultSetAccess.getResultSet(DeferredResultSetAccess.java:163) at org.hibernate.sql.results.jdbc.internal.JdbcValuesResultSetImpl.advanceNext(JdbcValuesResultSetImpl.java:254) at org.hibernate.sql.results.jdbc.internal.JdbcValuesResultSetImpl.processNext(JdbcValuesResultSetImpl.java:134) at org.hibernate.sql.results.jdbc.internal.AbstractJdbcValues.next(AbstractJdbcValues.java:19) at org.hibernate.sql.results.internal.RowProcessingStateStandardImpl.next(RowProcessingStateStandardImpl.java:66) at org.hibernate.sql.results.spi.ListResultsConsumer.consume(ListResultsConsumer.java:198) at org.hibernate.sql.results.spi.ListResultsConsumer.consume(ListResultsConsumer.java:33) at org.hibernate.sql.exec.internal.JdbcSelectExecutorStandardImpl.doExecuteQuery(JdbcSelectExecutorStandardImpl.java:361) at org.hibernate.sql.exec.internal.JdbcSelectExecutorStandardImpl.executeQuery(JdbcSelectExecutorStandardImpl.java:168) at org.hibernate.sql.exec.internal.JdbcSelectExecutorStandardImpl.list(JdbcSelectExecutorStandardImpl.java:93) at org.hibernate.sql.exec.spi.JdbcSelectExecutor.list(JdbcSelectExecutor.java:31) at org.hibernate.query.sqm.internal.ConcreteSqmSelectQueryPlan.lambda$new$0(ConcreteSqmSelectQueryPlan.java:110) at org.hibernate.query.sqm.internal.ConcreteSqmSelectQueryPlan.withCacheableSqmInterpretation(ConcreteSqmSelectQueryPlan.java:303) at org.hibernate.query.sqm.internal.ConcreteSqmSelectQueryPlan.performList(ConcreteSqmSelectQueryPlan.java:244) at org.hibernate.query.sqm.internal.QuerySqmImpl.doList(QuerySqmImpl.java:518) at org.hibernate.query.spi.AbstractSelectionQuery.list(AbstractSelectionQuery.java:367) at org.hibernate.query.Query.getResultList(Query.java:119) at hello.hellospring.repository.JpaMemberRepository.findByName(JpaMemberRepository.java:34) at hello.hellospring.service.MemberService.validateDuplicateMember(MemberService.java:33) at hello.hellospring.service.MemberService.join(MemberService.java:27) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:568) at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:343) at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:756) at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:123) at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:391) at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:756) at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:708) at hello.hellospring.service.MemberService$$SpringCGLIB$$0.join(<generated>) at hello.hellospring.service.MemberServiceIntegrationTest.join(MemberServiceIntegrationTest.java:30) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:568) at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:727) at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60) at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131) at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:156) at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:147) at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:86) at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(InterceptingExecutableInvoker.java:103) at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.lambda$invoke$0(InterceptingExecutableInvoker.java:93) at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106) at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64) at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45) at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37) at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:92) at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:86) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:217) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:213) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:138)

  • java
  • spring
  • mvc
  • spring-boot
이성현 댓글 1 좋아요 0 조회수 464

요약 정리 파일

미해결

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

혹시 선생님이 코드 치시는 부분 말고 요약 정리 하신 부분은 따로 파일이 없는 건가요? ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 여기에 질문 내용을 남겨주세요.

  • java
  • spring
  • mvc
  • spring-boot
김학준 댓글 1 좋아요 0 조회수 469

ResponseBody 문자 반환은 JSON 형식으로 반환하는게 아닌건가요?

미해결

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

API가 객체를 JSON 형태로 바꿔서 반환하는 방식인데 ResponseBody 문자 반환의 경우 HTTP 바디에 문자 그대로 반환. ResponseBody 객체 반환의 경우 컨버터를 이용해 JSON 형태로 바꿔 반환 결국 두 경우 다 API 방식이지만 JSON 형태로 바꾸는건 객체 반환의 경우만 이렇게 이해하면 될까요? 아니면 후자만 API 방식인걸까요 ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요.

  • java
  • spring
  • mvc
  • spring-boot
Banksy 댓글 1 좋아요 0 조회수 414

MemberService 매개변수

미해결

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

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 안녕하세요 MemberService 스프링빈 부분에서 return new MemberService(memberRepository); 가 아닌 return new MemberService(memberRepository()); 인 이유가 있을까요?

  • java
  • spring
  • mvc
  • spring-boot
이지현 댓글 1 좋아요 0 조회수 320

(path parameter) VS (query parameter)

해결됨

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

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 리소스의 식별이냐, 정렬/필터와 같은 페이지네이션을 위함이냐와 같이 컨벤션에 따라 달라지는거 같은데, 실제로 작동하거나 기능에 있어서의 차이도 있을까요?

  • spring
  • mvc
980513k 댓글 1 좋아요 0 조회수 235

인라인 부분 에러 해결방법이 있을까요?

미해결

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

vscode로 사용중이고 이전거까지는 강의 따라가는데 문제 없었습니다. 무엇이 문제일까요? 컨트롤러와 뷰 부분 다 복붙입니다~

  • spring
  • mvc
learnlearnlearn 댓글 2 좋아요 0 조회수 419

일반적인 실무에서의 Model에 할당되는 값

해결됨

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

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 1. 선생님께서는 Model에 값을 추가할 때 항상 Member이나 Item과 같은 "객체"를 추가하셨는데 item.getId()나 member.getUsername() 같은 "단순 타입"을 추가하는 경우도 있나요? 2.만약 없다면 "객체"를 모델로 추가하는 것이 정형화된 방법인가요?

  • spring
  • mvc
경민 댓글 1 좋아요 0 조회수 202

외부 파이썬 함수 수행하기 관련 질문 드립니다.

미해결

Airflow 마스터 클래스

안녕하세요. 좋은 강의 감사히 잘 들었습니다. 강의에서 궁금한 점이 있어서 질문 드립니다. 1) 첫 번째 질문 강의 제목 : 외부 파이썬 함수 수행하기 환경 구성 : macOS, Docker, Airflow 2.7 문의 내용 : 강의 초반에 언급한 환경변수로 설정하는 방법 상세 내용 : 강의 후반에 알려주신 내용은 방법을 이해했습니다. 다만 초반에 알려주신 항목 중 sys.path 는 명시적 구현이라 쉽게 가능했으나, 환경변수 쪽은 찾아봐도 쉽게 이해가 안 돼서 질문하게 됐습니다. 복습하면서 여러 방법을 알면 좋을 것 같아서 질문 드립니다. 2) 두 번째 질문 강의 제목 : 없음 환경 구성 : Docker 설치 시 생성하는 디렉터리 이외에 추가 디렉터리 생성 후 볼륨 마운트. 예를 들어 utils 라는 디렉터리를 생성 후 docker-compose.yaml 의 volumes 에 ${AIRFLOW_PROJ_DIR:-.}/utils:/opt/airflow/utils 를 추가 할 경우 문의 내용 : 추가로 디렉터리 생성할 경우 plugins 디렉터리 외에서 py 파일을 읽어야 하는 경우 상세 내용 : 첫 번째 질문과 유사하게 환경변수에 관한 질문일 것 같습니다. 새로운 디렉터리를 생성해서 작업할 때 경로를 인식 시켜야 하는데, sys.path 로만 하는 것은 번거로운 것 같아서 어떤 방식으로 접근을 하면 좋을지 조언을 듣고 싶습니다. 간략하게 정리하면 plugins 디렉터리 이외의 환경도 같이 사용을 하는 방법이 궁금합니다. 3) 세 번째 질문 강의 제목 : 없음 환경 구성 : 1, 2와 동일 문의 내용 : 새로운 패키지 설치 할 때 설치 방법 및 운영 관리 노하우 상세 내용 : docker compose 할 때 yaml 에 PIPADDITIONAL_REQUIREMENTS 부분에 설치할 패키지 목록을 입력해서 설치를 하고 있습니다. 이렇게 해도 되는 것 같긴한데, 나중에 더 많은 패키지를 설치하게 될 경우 좋지 않은 형태라고 생각이 들었습니다. 실제로 현업에서 업무를 하실 때 다양한 패키지를 어떤 식으로 설치 및 운영 관리 하시는지 궁금합니다. 감사합니다. 다른 강의도 기대하겠습니다.

  • python
  • 데이터-엔지니어링
  • airflow
화이팅 댓글 2 좋아요 0 조회수 526

파이썬 face-recognition 모듈 설치 오류

미해결

pip를 통해서 face-recognition 모듈을 설치하려는데 아래 사진과 같은 오류가 계속 발생합니다. pip 버전은 제일 최신 버전 파이썬 버전은 3.11.4 인터넷 보니 CMake를 설치하래서 일단 CMake 버전은 3.28.1입니다 아 dlib도 pip말고 직접 설치하래서 했더니 밑에 빨간 글자를 제외하고 위에 'subprocess.CalledProcessError' 부분과 똑같은 오류가 발생하더군요 이걸로 계속 고통받다 마지막으로 질문해봅니다 ㅠ

  • python
  • 파이썬
댓글 1 좋아요 0 조회수 419

인기 태그

인프런 TOP Writers

주간 인기글