묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
다중 인터셉터의 경우 호출 순서가 어떻게 되는지 궁금합니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요?예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예/3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]여기에 질문 내용을 남겨주세요.<스프링 인터셉터 - 인증 체크> 강의 수강 중 의문이 생겨 질문드립니다. 다중 인터셉터의 경우 ( 편의 상 1, 2 로 표기할게요) 구글링해보니까pre 1 -> pre 2 -> 컨트롤러 호출 -> post 2 -> post 1 -> 요청 처리완료 -> after2 -> after 1이 순으로 호출된다고 하는데 맞을까요? 그리고, 미인증상태로 items/add 를 들어갔을 때 pre2 까지 수행 후 리다이렉트 + return false; 니까 다음 인터셉터는 수행되지 않는다 생각해서 after1 도 수행되지 않을 거라 생각했는데 로그에는 수행이 되더라구요. 컨트롤러에서 예외가 발생한게 아니라, preHandle 에서 false를 반환하는 경우에도 afterCompletion은 수행되는건가요?아니면 두번째 인터셉터의 preHandle이 false를 반환한거라 두번째 인터셉터만 건너뛰는거고 첫 번째 인터셉터랑은 무관해서 수행된걸까요?2023-05-09 13:56:35.412 INFO 32688 --- [nio-8080-exec-7] h.login.web.interceptor.Loginterceptor : REQUEST [14810694-f53d-4526-9a1f-5b95b3c0c010] [/items/add] [hello.login.web.item.ItemController#addForm(Model)] 2023-05-09 13:56:35.419 INFO 32688 --- [nio-8080-exec-7] h.l.w.interceptor.LoginCheckInterceptor : 인증 체크 인터셉터 실행 /items/add 2023-05-09 13:56:35.427 INFO 32688 --- [nio-8080-exec-7] h.l.w.interceptor.LoginCheckInterceptor : 미인증 사용자 요청 2023-05-09 13:56:35.432 INFO 32688 --- [nio-8080-exec-7] h.login.web.interceptor.Loginterceptor : RESPONSE [14810694-f53d-4526-9a1f-5b95b3c0c010][/items/add][hello.login.web.item.ItemController#addForm(Model)] 2023-05-09 13:56:35.468 INFO 32688 --- [nio-8080-exec-6] h.login.web.interceptor.Loginterceptor : REQUEST [5fb2bde4-eba5-4f97-b294-bad2597bd5f1] [/login] [hello.login.web.login.LoginController#loginForm(LoginForm)] 2023-05-09 13:56:35.495 INFO 32688 --- [nio-8080-exec-6] h.login.web.interceptor.Loginterceptor : postHandle [ModelAndView [view="login/loginForm"; model={loginForm=LoginForm(loginId=null, password=null), org.springframework.validation.BindingResult.loginForm=org.springframework.validation.BeanPropertyBindingResult: 0 errors}]] 2023-05-09 13:56:35.529 INFO 32688 --- [nio-8080-exec-6] h.login.web.interceptor.Loginterceptor : RESPONSE [5fb2bde4-eba5-4f97-b294-bad2597bd5f1][/login][hello.login.web.login.LoginController#loginForm(LoginForm)] 2023-05-09 13:56:35.699 INFO 32688 --- [nio-8080-exec-8] h.l.w.interceptor.LoginCheckInterceptor : 인증 체크 인터셉터 실행 /favicon.ico 2023-05-09 13:56:35.699 INFO 32688 --- [nio-8080-exec-8] h.l.w.interceptor.LoginCheckInterceptor : 미인증 사용자 요청 2023-05-09 13:56:35.709 INFO 32688 --- [nio-8080-exec-9] h.login.web.interceptor.Loginterceptor : REQUEST [5ad8ae3f-2e48-479e-8013-4ffc72ecaf06] [/login] [hello.login.web.login.LoginController#loginForm(LoginForm)] 2023-05-09 13:56:35.709 INFO 32688 --- [nio-8080-exec-9] h.login.web.interceptor.Loginterceptor : postHandle [ModelAndView [view="login/loginForm"; model={loginForm=LoginForm(loginId=null, password=null), org.springframework.validation.BindingResult.loginForm=org.springframework.validation.BeanPropertyBindingResult: 0 errors}]] 2023-05-09 13:56:35.719 INFO 32688 --- [nio-8080-exec-9] h.login.web.interceptor.Loginterceptor : RESPONSE [5ad8ae3f-2e48-479e-8013-4ffc72ecaf06][/login][hello.login.web.login.LoginController#loginForm(LoginForm)] 혹시 여기서 말하는 '나머지 인터셉터'가 다른 인터셉터의preHandle만 의미하는 건가요? 그래서 postHandle, afterCompletion 이랑은 별개인걸까요 아직 내용을 잘 숙지하지는 못한 상태라 질문이 매끄럽지 못한점 양해부탁드려요.감사합니다.
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
ResponseEntity와 @RestController
안녕하세요 강의 너무 잘 듣고 있습니다! 다름이 아니라 섹션 6. 스프링 MVC - 기본 기능 부분을 듣다가 궁금한 점이 생겨서 질문 드립니다. 우선 제가 이해하기로는 ResponseEntity를 사용하는 이유는 데이터(객체)와 함께 HTTP 응답 코드를 같이 반환 할 수 있기 때문이다물론 @ResponseBody와 @ResponseStatus를 같이 쓰면 데이터와 HTTP 응답 코드를 같이 보내줄 수 있지만, @ResponseStatus는 애노테이션이기에 동적으로 HTTP 응답 코드를 설정할 수 없기에 ResponseEntity를 사용하는게 더 효율적이다이렇게 두 가지 정도로 알고 있습니다. 여기서 제가 궁금한 점은 반환 타입이 ResponseEntity인 경우 왜 @RestController를 사용하는지 입니다. 그 동안 저도 ResponseEntity를 반환하는 컨트롤러에 @RestController를 항상 붙여줬는데, 강의를 보다 보니 ResponseEntity를 반환할 때는 @ReponseBody가 필요하지 않아서 @RestController가 아닌 @Controller로도 동작하는데 문제가 없어 보이기에 혹시 다른 이유가 있는지 궁금합니다.개인적으로 생각했을때 ResponseEntity를 반환하는 컨트롤러에 @RestController를 쓰는 이유는중간중간 ResponseEntity가 아닌 String, Object 같은 데이터만 반환하는 메서드가 있을 수 있고, 그런 메서드 마다 @ResponseBody를 붙이는게 번거롭기 때문에@RestController 적용시 스프링 컨테이너가 Bean Scope를 template 영역까지 고려하지 않아서 resource를 절약할 수 있기 때문에(?)이 두가지 정도 떠오릅니다. 만약 추가적으로 ResponseEntity를 반환하는 컨트롤러에서 @RestController를 사용하는 이유가 있을까요?그리고 두 번째 이유는 저도 정확히 아는게 아니라 주변에서 들었던 부분인데 이 이유도 해당된다면 조금 풀어서 설명해주실 수 있을까요?감사합니다!
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
현재 연결은 사용자의 호스트 시스템의 소프트웨어의 의해 중단되었습니다.
구글에 쳐봐도 제데로된 해결 방안이 안 나옵니다. 재부팅도 해보고, 핫스팟 문제도 해결해봤지만 계속해서 똑같은 오류가 발생합니다.해결부탁드립니다.ㅠㅠㅠ
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
http://localhost:8080/hello 에서 에러가 나네요
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)예[질문 내용] 몇 번을 확인했는데 에러가 나서 찾기가 어렵네요도움 부탁드립니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
build 오류 발생 문의
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)네2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)네3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)네[질문 내용]여기에 질문 내용을 남겨주세요. 안녕하세요 강의 잘 듣고 있습니다.cmd에서 선생님과 동일하게 build 명령어 입력했는데 실행 할 수 없다고 떠서 문의 드립니다.관리자 모드 cmd에서도 동일한 증상인데 무엇이 문제일까요..?
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
templates html 실행
현재 IDE은 이클립스 사용중입니다.내용은 모두 강의와 동일하고, 아래와 같이 html파일들을 위치시켰을 때, static에 저장된 index.html은 실행이 잘되는 반면에 templates에 저장된 hello.html과 hello-template.html은 가져오지 못하고 whitelabel error page 로 연결되는 오류가 발생합니다.어떤 부분이 잘못되었는지 확인해봐야 하나요?
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
webapp에 대해 궁급합니다
[질문 내용]여기에 질문 내용을 남겨주세요.main> webapp> index.html 의 경로로 설정하면 localhost:8080 실행시 기본으로 index.html 이 실행되고 이것이 welcome 페이지인 것은 이해하였습니다.그럼 webapp을 컨트롤러를 사용하지 않아도 파일을 열 수 있도록 해주는 디렉토리 정도로 이해해도 될까요? 무조건 실행되는..?근데 이렇게 생각하면 왜 basic.html도 있는데 index.html이 실행되는건지 헷갈리기도 하고.. webapp의 정의? 원리? 를 잘 모르겠습니다.. 답변 부탁드리겠습니다.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
질문드립니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. BindingResult가 model로 자동 등록되서 타임리프 코드에서 th:object="${item}"이 여기서 등록된걸 참조하는것 같은데요 @ModelAttribute도 model로 자동 등록하지않나요? 그러면 item이라는 이름으로 model에 등록된게 같은이름으로 2개가 아닌지요?
-
미해결스프링 프레임워크는 내 손에 [스프2탄]
수업자료 다운로드 위치가 안보입니다 ㅠㅠ
수업자료 ppt가 초반에 다운받는 링크가 어디 있었던걸로 기억하는데 해당 링크가 안보이네요 ㅠㅠㅠ.......
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
css style 태그 적용
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]CSS <style> 태그의 클래스이름과body에서 input 태그의 클래스 이름 설정이 다른데 어떻게 적용이 되는지 궁금합니다. <style> .container { max-width: 560px; } .field-error{ // 이 부분 border-color: #dc3545; color: #dc3545; } </style> <div> <label for="itemName" th:text="#{label.item.itemName}">상품명</label> <input type="text" id="itemName" th:field="*{itemName}" th:class="${errors?.containsKey('itemName')} ? 'form-control field-error' : 'form-control'" class="form-control" placeholder="이름을 입력하세요"> <div class="field-error" th:if="${errors?.containsKey('itemName')}" th:text="${errors['itemName']}"> 상품명 오류 </div> </div>아래 코드를 보면 오류 발생시클래스 이름을 'form-control field-error'로 설정했는데 css를 보면 .field-error 으로 클래스 이름을 찾아서 적용하는데 어떻게 이렇게 되는지 궁금합니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
MemorymemberRepository와 memberRepository에 대아혀
MemorymemberRepository가 memberRepository를 구현하고 있는데 그러면 이 부분에서 MemberRepository memberRepository; 로 선언하는게 아니라 MemoryMemberRepository memberRepository; 로 선언한 후 사용해야 하는것 아닌가요,,? 인터페이스를 구현한게 MemoryMemberRepository인데 memberRepository로 선언을 해서 계속 사용하면 MemoryMemberRepository에서 구현한 내용을 못보는것 아닌가요,,?? MemberRepository memberRepository = new MemoryMemberRepository();MemberService memberService = new MemberService(memberRepository);이런 식으로 따로 생성을 해서 사용해야 하는것이 아닌가 궁금합니다!
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
view render 에 질문이 있습니다.
[질문 내용]강의 약 19분 00초에서 view.render()를 해줄 때 모델 객체도 같이 넘겨줘야한다 하셨는데... 모델 객체는 왜 같이 넘겨주어야 하나요?이미 view는 어떤 페이지로 갈지 알고 있고, request 값은 createParamMap(request) 를 통해 넘어온 값을 재정의? 해주는걸로 생각하고 있는데, 모델객체가 왜 필요한지 잘 이해가 안갑니다.
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
인스턴스가 두개일 때
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]강사님이 설명해주신 것 중 memberService쪽과 memberRepository에 있는 MemoryMemberRepository는 다른것이다 라고 말씀하셨습니다 따라서 인스턴스가 두개가 만들어진것이고 static이라 문제가 없을 테지만 static이 아니라면 다른 DB를 사용하는 것이기 때문에 내용이 틀려 질 수 있다고 하셨는데여기에 대해서 더 자세히 알고싶습니다.왜 다른 것인지 궁금합니다좀 더 찾아보고 싶은데 어떤 개념을 검색해보면 될까요 ? 감사합니다.
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
HashMap 에 Integer를 넣어도 되지 않나요?
[질문 내용]강의에서 약 10분25초 쯤에 MemberSaveControllerV3 에서 age 를 Integer 형태로 변환을 해주고 있는데 처음부터 HashMap에 String이 아니라 Integer 형태로 반환해주었다면 Integer 변환 처리는 안해도되지않나요??HashMap 에 String, String으로 설정?한 이유가 궁금합니다.
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
EntityManager 도 Component 로 인식하는 것인가요?
안녕하세요! 이전 수업에서 Autowired로 주입 시키려면 스프링 빈에서 관리하는 객체여야한다고 배웠고, 스프링 빈에서 관리하려면 @Component 어노테이션이 있어야 한다고 이해했습니다.근데 EntityManager는 컴포넌트가 아닌데 왜Autowired 대상이 되는지 이해가 안됩니다ㅜㅜ감사합니다..
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
문서에 오타가 있습니다!
타임리프 - 기본 기능기본적으로 이스케이스(escape)를 제공한다. -> 기본적으로 이스케이프(escape)를 제공한다. 감사합니다:)
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
단축키 안내창..;
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]아래 초록색 단축키 보여주는거... 봐도 모르겠어요윈도우 인텔리제이 사용하거든요..그래서 윈도우 검색하거나, 대충 짐작가는 키를 사용하긴하는데... --;;
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
th:each 사용법과 관련 질문입니다
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]<div> <div>등록 지역</div> <div th:each="region : ${regions}" class="form-check form-check-inline"> <input type="checkbox" th:field="${item.regions}" th:value="${region.key}" class="form-check-input"> <label th:for="${#ids.prev('regions')}" th:text="${region.value}" class="form-check-label">서울</label> </div> </div>each 반복이 돌아가면서 region에는 "서울","부산","제주" 이렇게 3개의 지역이 들어가기에 구문이 3번 반복됩니다. 그리고 구문이 반복되면서 region의 서울, 부산, 제주가 순서대로 대입되는 것까지 알겠습니다. 그런데 영상에서는 th:field="${item.regions}"이렇게 했는데 현재 item.regions에는List<String> regions; //서울, 부산, 제주서울, 부산, 제주가 이렇게 들어있는데item.regions도 첫번째 구문 돌 때 서울두번째 돌 때 부산세번쨰 돌때 제주 이렇게 자연스럽게 대입이 되는 건가요?요약하면 regions를 기준으로 each구문이 돌게했는데th:field에 적용한 item.regions에 들어있는 항목도순서대로 대입이 되는건지 궁금합니다.
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
hello.html 에서 thymeleaf 의 경로를 못 읽어요
첫번째로 폴더 입력 위치가 hello.hellospinrg안에 안넣어지고 넣을려고 하면 오류가 나면서 안넣어지네요그래서 hello.hellospring을 실행해도 다른 폴더를 인식 못해서 요류가 나는 것 같은데 해결할 수 있는 방법 없나요..?폴더를 드레그 해서 넣어봐도 폴더를 선택해서 안에 생성시킬려고 해도 아예 선택 자체가 안되어 버려요,,
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
로그인 브라우저 꺼도 유지 질문입니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 지금 로그인 처리1까지 배웟는데습니다제가 잘못이해했는지 모르겠는데 세션 쿠키를 쓰면 세션이 날아가서 쿠키가 날아가고쿠키 세션을 이용해서 로그인유지 기간을 유지하더라고요. 근데 여러 사이트에서는 브라우저를 끄고 다시 접속해도 로그인이 유지되던데이건 세션 쿠키를 이용한게 아닌가요? 그리고 만약에 세션 쿠키를 이용한게 아니라면 그 사람들이 쓰는걸 x라고 통칭해보면 x를 쓰는사람은 메모리에 부작용이 없나요? 지금쓰는 세션 쿠키만해도 메모리 부족하다고 시간 설정해놓고 주의하라고 강의에서 그러셨는데 x는 장기간유지 하는거같은데 이것도 해결되면 세션 쿠키보다 좋은거 아닌가요?