묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]***************************APPLICATION FAILED TO START***************************Description:Web application could not be started as there was no org.springframework.boot.web.servlet.server.ServletWebServerFactory bean defined in the context.Action:Check your application's dependencies for a supported servlet web server.Check the configured web application type.이런오류가 발생합니다
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
index.html 500오류
에러뜨고 안돼여 ㅠㅠ<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <ul> <li><a href="basic.html">서블릿 basic</a></li> <li>서블릿 <ul> <li><a href="/servlet/members/new-form">회원가입</a></li> <li><a href="/servlet/members">회원목록</a></li> </ul> </li> <li>JSP <ul> <li><a href="/jsp/members/new-form.jsp">회원가입</a></li> <li><a href="/jsp/members.jsp">회원목록</a></li> </ul> </li> <li>서블릿 MVC <ul> <li><a href="/servlet-mvc/members/new-form">회원가입</a></li> <li><a href="/servlet-mvc/members">회원목록</a></li> </ul> </li> <li>FrontController - v1 <ul> <li><a href="/front-controller/v1/members/new-form">회원가입</a></li> <li><a href="/front-controller/v1/members">회원목록</a></li> </ul> </li> <li>FrontController - v2 <ul> <li><a href="/front-controller/v2/members/new-form">회원가입</a></li> <li><a href="/front-controller/v2/members">회원목록</a></li> </ul> </li> <li>FrontController - v3 <ul> <li><a href="/front-controller/v3/members/new-form">회원가입</a></li> <li><a href="/front-controller/v3/members">회원목록</a></li> </ul> </li> <li>FrontController - v4 <ul> <li><a href="/front-controller/v4/members/new-form">회원가입</a></li> <li><a href="/front-controller/v4/members">회원목록</a></li> </ul> </li> <li>FrontController - v5 - v3 <ul> <li><a href="/front-controller/v5/v3/members/new-form">회원가입</a></li> <li><a href="/front-controller/v5/v3/members">회원목록</a></li> </ul> </li> <li>FrontController - v5 - v4 <ul> <li><a href="/front-controller/v5/v4/members/new-form">회원가입</a></li> <li><a href="/front-controller/v5/v4/members">회원목록</a></li> </ul> </li> <li>SpringMVC - v1 <ul> <li><a href="/springmvc/v1/members/new-form">회원가입</a></li> <li><a href="/springmvc/v1/members">회원목록</a></li> </ul> </li> <li>SpringMVC - v2 <ul> <li><a href="/springmvc/v2/members/new-form">회원가입</a></li> <li><a href="/springmvc/v2/members">회원목록</a></li> </ul> </li> <li>SpringMVC - v3 <ul> <li><a href="/springmvc/v3/members/new-form">회원가입</a></li> <li><a href="/springmvc/v3/members">회원목록</a></li> </ul> </li> </ul> </body> </html>plugins { id 'java' id 'war' id 'org.springframework.boot' version '3.3.4' id 'io.spring.dependency-management' version '1.1.6' } group = 'hello.servlet' version = '0.0.1-SNAPSHOT' java { toolchain { languageVersion = JavaLanguageVersion.of(21) } } 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' //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' testRuntimeOnly 'org.junit.platform:junit-platform-launcher' } tasks.named('test') { useJUnitPlatform() }왜 화면이 안넘어갈까요???ㅠ ㅠㅠ
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
AOP Self Invocation 해결방법..?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]여기에 질문 내용을 남겨주세요.이 영상에서 나온것처럼 최상단 서비스에서만 @Transactional 걸어주면(예전 영상에서 나온 한 클래스 내부의 2개의 트랜잭션처리[AOP Proxy때문에 this로 인한 Self Invocation]이 일어나는 경우)를 해결할 수 있을까요?레포지토리 내부에서 트랜잭션을 걸지 않고 엔티티매니저로 CRUD하는 작업을 여러개 작성해놓으면 memberRepository 내부에서 내부 메서드를 호출해도 둘 다 트랜잭션 처리가 될까요?
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
트랜잭션 및 커넥션 관련 질문 드립니다.
안녕하세요. 앞서 db1강의에서 트랜잭션 관련 내용을 바탕으로 커넥션 관련해서 제가 이해하는 바가 맞는지 질문드립니다..! 트랜잭션을 시작하고 JdbcTemplate.update() 등등이 호출되면, 먼저 데이터베이스에 접근할 수 있는 커넥션을 얻는다.이때 내부적으로 DataSourceUtils.getConnection()을 호출해서 트랜잭션 동기화 매니저에서 관리하는 커넥션을 가져오거나, 새로운 커넥션을 생성(등록된 dataSource로 부터 커넥션을 생성)한다. 그리고 나서 SQL 쿼리를 실행한다. 이때 커넥션을 통해 데이터베이스와 통신한다.즉, JdbcTemplate을 통해 update 작업을 수행할 때, 커넥션을 사용하여 데이터베이스에 접근하여 SQL 쿼리를 실행하고, 그 결과로 데이터베이스의 내용이 업데이트된다.트랜잭션을 시작하지않고 JdbcTemplate.update() 등등이 호출되면, 이때도 먼저 데이터베이스에 접근할 수 있는 커넥션을 얻는다.이때 내부적으로 DataSourceUtils.getConnection()을 호출해서 트랜잭션 동기화 매니저에서 관리하는 커넥션을 가져오거나, 새로운 커넥션을 생성(등록된 dataSource로 부터 커넥션을 생성)한다. 그리고나서 SQL쿼리를 실행한다. 이때 커넥션을 통해 데이터베이스와 통신한다.마찬가지로, 커넥션을 사용하여 데이터베이스에 접근하여 SQL 쿼리를 실행하고, 그 결과로 데이터베이스의 내용이 업데이트된다.트랜잭션을 사용하지 않고 JdbcTemplate.update()를 호출하면, 커넥션은 기본적으로 자동 커밋 모드로 동작하여, 쿼리가 실행된 후 즉시 데이터베이스에 반영된다.트랜잭션이 있든 없든 JdbcTemplate은 항상 커넥션을 사용하여 데이터베이스에 접근하고, 쿼리를 실행하여 그 결과로 데이터베이스의 내용을 수정하거나 조회하는 작업을 수행한다. 트랜잭션 및 커넥션 관련해서 이렇게 이해하면서 정리해보았는데, 이렇게 이해하면 될까요?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
단순하고 실용적인 컨트롤러 v4
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.FrontControllerServletV4Map<String, Object> model = new HashMap<>(); //추가 String viewName = controller.process(paramMap, model);//모델뷰를 다 여기에 넣음여기서Map<String, Object> model = new HashMap<>(); /model.put()을 해주지않았는데model에 파라미터와 값들이 비어있지않나요? model을 파라미터로 전달해주는게 의미가있나요?:
-
미해결처음하는 파이썬 백엔드 FastAPI 입문 (FastAPI부터 비동기 SQLAlchemy까지) [풀스택 Part1-2]
Fast API 개발환경설정 자료
강의 자료 다운로드 받고 압축 풀고 확인 해 봤는데,Fast API 개발환경설정 강의에서 보여주시는 00_FASTAPI_START 설명 파일(ppt자료?)이 없습니다.혹시 파일 누락된것이 아닐까요?확인 부탁드립니다.!
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
오류 처리 흐름과 ExceptionResolver관련 질문
질문 1. 오류 처리 흐름을 아래와 같이 이해하였는데 맞는지 여부BasicErrorController를 활용한 오류 처리 흐름WAS(여기까지 전파) ← 필터 ← 서블릿 ← 인터셉터 ← 컨트롤러(예외 발생)WAS(/error) → 서블릿 → BasicErrorController에서 오류 처리 → View or JSON 반환ExceptionResolver를 활용한 오류 처리 흐름ExceptionResolver(response.sendError() 처리) ← 필터 ← 서블릿 ← 인터셉터 ← 컨트롤러(예외 발생)WAS(/error) → 서블릿 → BasicErrorController에서 오류 처리 → View or JSON 반환질문 2. ExceptionResolver 관련 설명을 아래와 같이 이해하였는데 맞는지 여부예외 발생 시 서블릿 컨테이너까지 예외가 전달되지 않고, 스프링 MVC의 ExceptionResolver 에서 예외를 처리한다. -> response.sendError() 가 아닌 예외(Exception)이 WAS에 전달되지 않는다.WAS 입장에서는 정상 처리된 것이다. -> response.sendError() 는 WAS 입장에서 정상 처리 된 것으로 인지한다.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
html 복사 ..
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]html 복사하면 뭔가 줄이 자꾸 어긋나거나 하면서 안 맞는데 혹시 다른 방법이 없을까요 ..?제가 수기로 적는수밖에없을까요 ..여기에 질문 내용을 남겨주세요.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
httpAPI가 먼가요?
GET쿼리 파라미터 ,post-HTMLFORM방식도 Httpapi아닌가요?
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
제대로 이해했는지 확인하고싶습니다.
가장 처음에 했던 트랜잭션은 각각의 리포지터리에서 @Transactional을 걸어줘서 별도로 커밋, 롤백 되게끔 만들었습니다. 이후, 마지막에는 LogRepository에 @Transactional(propagation = Propagation.REQUIRES_NEW)를 사용해서 트랜잭션 동기화 매니저에서 다른 커넥션을 가져와서 별도로 커밋, 롤백 되게끔 만들었습니다. 여기서 궁금한 점은 처음과 마지막의 트랜잭션의 구성은 다르지만 결과값은 똑같은 게 맞을까요? 다른 점이 있다면 혹시 무엇인지 알려주시면 감사하겠습니다.
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
@Transactional 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.원래는 service단에 @Transactional 을 걸어주는게 맞지만 지금은 강의하는거기때문에 JpaItemRepositoryV2에 @Transactional을 선언해준건가요 ?
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
엔티티 설계 질문
JPA 엔티티 설계에 대한 질문입니다. 상품 엔티티가 있는데 상품을 구분하는 카테고리가 아래와 같이 2종류 있다고 가정하면상품 배송 카테고리 (직접배송, 퀵배송, 일반택배배송, 픽업가능) -> 1:N 가능상품 종류 카테고리 (명품, 의류, 전자제품 등등) -> 1:N 가능 어떻게 설계하는 게 좋을까요?상품 Entity상품 id상품이름배송 카테고리 리스트종류 카테고리 리스트=> 상품 테이블, 상품 배송 카테고리 테이블, 상품 종류 카테고리 테이블 (총 테이블 3개 생성됨) 상품 Entity상품 id상품이름카테고리 리스트 (배송 카테고리와 종류 카테고리를 한 리스트에 다 넣어놓음)=> 상품 테이블, 상품 카테고리 테이블 (총 테이블 2개 생성됨)
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
bizException 테스트 코드에서 db에 save되는지 궁금합니다.
@Test void bizException() { //given Order order = new Order(); order.setUsername("잔고부족"); //when try { orderService.order(order); } catch (NotEnoughMoneyException e) { log.info("고객에게 잔고 부족을 알리고 별도의 계좌로 입금하도록 안내"); } //then Order findOrder = orderRepository.findById(order.getId()).get(); Assertions.assertThat(findOrder.getPayStatus()).isEqualTo("대기"); }@Transactional public void order(Order order) throws NotEnoughMoneyException { log.info("order 호출"); orderRepository.save(order); log.info("결제 프로세스 진입"); if (order.getUsername().equals("예외")) { log.info("시스템 예외 발생"); throw new RuntimeException("시스템 예외"); } else if (order.getUsername().equals("잔고부족")) { log.info("잔고 부족 비즈니스 예외 발생"); order.setPayStatus("대기"); throw new NotEnoughMoneyException("잔고가 부족합니다"); } else { log.info("정상 승인"); order.setPayStatus("완료"); } log.info("결제 프로세스 완료"); }예외가 터지는데 save의 insert쿼리가 나가는지 궁금합니다. 테스트 코드가 성공했고 (테스트코드) Order findOrder = orderRepository.findById(order.getId()).get(); 이 코드에서 findOrder이 성공적으로 가져왔습니다. 그러면 서비스 코드에서 orderRepository.save(order)이 성공적으로 커밋이 된건가요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
Unknown host 'admin'. 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.위와 같은 오류가 뜨는데 인텔리제이와 스프링 자바 버전 둘 다 17로 맞췄고스프링 초기값은 다음과 같이 맞춰서 제너레이트를 했는데 위 오류 때문에 실행도 시킬 수가 없네요 어떻게 해결해야 할까요?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
ArgumentResolver 지정타입
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]@ModelAttribute 에서 argumentResolver로 지정해둔 타입은 제외라고 했는데,이해가 안되는점은 @ModelAttribute도 argumentResolver로 파라미터를 받는다고 배웠는데그럼 컨버터 실행하는 파라미터(@RequestBody, HttpEntity)가 존재할때 제외된다는 말씀인가요?
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
비교연산자 <,> 사용을 하지 않고, gt or lt 를 사용하는 이유?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]<li> 1>10 = <span th:text="10 < 1"></span></li>로 표현하여도, 비교연산자로 처리가 가능하였는데, 왜 gt나 lt 로 사용하여야 하나요?
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
첫번째 테스트 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]test2.mv도 만들고 h2버전 build.gradle에 입력두 해봤는데 해결이 안되네요 ㅠㅠ
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
회원 서비스 테스트 회원가입() assertThat()
[질문 내용]assertThat()메소드의 도큐먼트에서는 assertThat(실젯값).isEqualTo(기댓값)이라고 정의되어 있지만,5분 13초 쯤에 김영한 강사님께서 회원가입() 메소드를 테스트하는 과정에서 assertThat() 메소드를 작성하실때assertThat(member.getName()).isEqualTo(findMember.getName());라고 하셨는데실제로는 assertThat(findMember.getName()).isEqualTo(member.getName());이렇게 정의하는게 맞지 않나요?확인부탁드립니다!
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
assertEquals(), assertThat()
[질문 내용] 강사님께서 assertEquals() 메소드는 괄호 안에 assertEquals(expected기댓값, actual실제값), assertEquals(member, result) 하셨고, assertThat(member).isEqualTo(result); 작성하셨는데 제가 assertThat 메소드 도큐먼트를 확인하니 assertThat(actual실제값).isEqualTo(expected기대값) 으로 정의 되어있어서 그렇게 된다면, assertThat(result).isEqualTo(member) 해야 올바르게 작성하는 코드 아닌가요?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
FrontController - v1 회원목록
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.회원가입하고 회원목록 조회할때이런에러가 나옵니다 member 안에들어있는 값을 불러오지 못하는거같습니다