월 24,200원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
@Login 질문
컨트롤러 메서드의 파라미터에 있는 @Login 어노테이션이 @SessionAttribute(name = SessionConst.LOGIN_MEMBER, required = false)를 완전히 대체한다고 보면 되는 걸까요? @Login이 동작하는 시점이 ArgumentResolver의 영향 범위이기 때문에, 해당 강의의 제목이 ArgumentResolver 활용 인 것인가요? 커스텀 어노테이션을 만드는 것과 'ArgumentResolver 활용'이라는 제목과 무슨 관계가 있는 것인지 궁금하여 질문드려봅니다!
- 미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
예외를 던지는 기준이 궁금해요
예외를 공부할땐 예상 밖의 프로세스가 죽는 치명적인 상황을 예방하기 위해 예외 처리한다고 배웠습니다! 하나의 예시를 들자면 비동기로 닉네임 중복 검사를 하는 프로세스가 있는 경우아래와 같이 개발자가 의도한 결과가 나오지 않은 경우 예외로 던져야 할까요?//예시 1 Member member= repository.findByMeberNickname("user00"); if(member == null){ throw new memberNotFoundException(); } return member; //그리고 @RestController에서 에러DTO json 응답 {코드값, 메세지, status} 또는 사실상 개발자가 충분히 예상 가능한 범주 내의상황이니까(+ 프로세스가 죽을 정도의 치명적인 상황도 아님)//예시 2 Member member= repository.findByMeberNickname("user00"); return member; axios.get(...) .then(result=>{ if(result){ //값이 있으면 }else{ //값이 없으면.. }) ....비동기 호출 후 if else로 분기를 줘야할지 고민입니다! 현재 드는 생각은 sql 쿼리까지 정상적으로 호출되었지만결과값이 없었을 뿐이지 에러나 예외는 아니다.입니다. 따라서 후자가 아닐까!!
- 해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
REST API에 대한 내용은 JPA 강의에 포함되어있나요?
REST API방식으로 서버를 만들고 싶어서 MVC패턴에 대한 내용보다는, API에 관하여 집중적으로 공부하길 희망합니다. 궁금한 점은,1.JPA로드맵에서는 API위주로 알려주시는게 맞을까요?2.(1번이 맞다면)현재 MVC2편 학습중인데, DB1,2 -> 스프링부트 핵심원리 -> JPA로드맵 이렇게 공부하면 될까요?
- 미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
field 태그 질문
*{itemName} 을 하면 item object 안에 속한 값이라고 인식하고 편하게 쓸 수 있다고 하셨는데, value 와 id,name 설정과는 별개인거죠? value 는 user.itemName 로 가져오는 것이고, id랑 name 은 그저 itemName 이라는 명칭만 보고 설정해주는게 맞는건가해서요. 만약 user.itemName 이 value 이고 id,name은 따로 itemNames 라고 설정해주려면 *{itemName} 태그는 못쓰는건가요? 만약 value 값 상관없이 id,name 설정만 해주려고한다면 th:field="itemNames" 라고만 해주면 되나요?
- 미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
HttpSession 질문있습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]HttpSession 1. getSession / setAttribute다른 질문들의 답변을 보니 세션 저장소가 Map<JSESSIONID, Map<String, Object>>형태로 저장되어 있다고 하셨는데getSession이 request에 담겨 있는 cookie(JSESSIONID)값으로 세션 저장소에서 Map<String, Object>을 반환하고 이 것을 세션이라고 하는건가요?그리고 getSession(true)일 때 세션이 없으면 세션을 생성하는데, 세션을 생성할 때 JSESSIONID를 만들어서 response에 cookie로 보내고, 세션 저장소에 만들어진 JSESSIONID를 key, 빈 Map을 value로 저장하고, 비어 있는 Map<String, Object>을 반환하나요?그리고 setAttribute로 Map<String, Object>에 값을 저장하는건가요? 2. getAttributegetAttribute할 때는 request에 있는 JSESSIONID로 세션 저장소에서 Map<String, Object>을 찾고, LOGIN_MEMBER값으로 실제 Object(Member)를 찾는 걸까요? 3.마지막으로 세션 저장소가 Map<JSESSIONID, Map<String, Object>> 형식인데 JSESSIONID가 각 member별로 생성되니까, value가 Map<String, Object> 형식이지만 이 맵에는 실제로는 한 쌍의 key, value만 저장되는건가요?
- 미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
이해가 잘 되지 않습니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]@GetMapping public String homeLogin(@CookieValue(name = "memberId", required = false) Long memberId, Model model){ if(memberId == null){ // 로그인 안한 사람 return "home"; } Member loginMember = memberRepository.findById(memberId); if(loginMember == null){ // 쿠키가 있어도 db에 없는 경우 return "home"; } model.addAttribute("member", loginMember); return "loginHome"; } 홈 컨트롤러에서 로그인을 아예 한 적이 없으면 쿠키가 없어서 return "home"인 게 이해가 되는데 두 번째에 쿠키가 있어도 회원이 db에 없는 경우가 무슨 상황인지 잘 이해가 되지 않습니다.쿠키가 있으려면 회원 로그인을 해야 하는데 회원이 db에 없을 수 있는지 궁금합니다
- 해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
실행이 되지 않습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]java 와 gradle jvm 버전을 17.0.10으로 설정하고 돌렸습니다. 이런 오류가 발생해서 Upgrade Gradle wrapper to 7.2 version and re-import the project를 클릭해서 grdle 버전을 업그레이드 했습니다. 다시 돌리니 이번에는Cause: class lombok.javac.apt.LombokProcessor (in unnamed module @0x689bd195) cannot access class com.sun.tools.javac.processing.JavacProcessingEnvironment (in module jdk.compiler) because module jdk.compiler does not export com.sun.tools.javac.processing to unnamed module @0x689bd195lombok과 관련된 오류가 발생해서 구글에 검색해보고 롬복 버전을 바꿨습니다. 다시 돌려봤는데또 에러가 발생했습니다.. java 버전과 gradle jvm 버전을 맞췄는데 왜 오류가 발생하는지 모르겠어서 질문드립니다..
- 미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
헤더 - 컨텐츠 - 푸터 영역을 나누고 싶은데 방법이 있을까요..?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)예[질문 내용]여기에 질문 내용을 남겨주세요.안녕하세요 ! 영한 선생님 강의를 들으면서 토이 프로젝트를 진행 중에 있습니다. 다름이 아니라 th:replace를 활용해 템플릿 영역을 헤더, 컨텐츠, 푸터 세 개의 영역이 나뉘어 지지 않고 컨텐츠 코드들이 헤더, 푸터 영역을 침범하더라구요.. header.html <!DOCTYPE html> <html xmlns:th="http://www.thymeleaf.org"> <div th:fragment="header"> <nav class="navbar navbar-expand-md navbar-dark bg-dark fixed-top"> <div class="container-fluid"> <a class="navbar-brand" href="#">갱이</a> <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation"> <span class="navbar-toggler-icon"></span> </button> <div class="collapse navbar-collapse" id="navbarSupportedContent"> <ul class="navbar-nav me-auto mb-2 mb-lg-0"> <li class="nav-item"> <a class="nav-link active" aria-current="page" href="#">Home</a> </li> <li class="nav-item"> <a class="nav-link" href="#">SNS</a> </li> <li class="nav-item dropdown"> <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false"> ONLINE SHOP </a> <ul class="dropdown-menu"> <li><a class="dropdown-item" href="#">NEW ARRIVAL</a></li> <li><a><hr class="dropdown-divider"></a></li> <li><a class="dropdown-item" href="#">OUTER</a></li> <li><a class="dropdown-item" href="#">TOP</a></li> <li><a class="dropdown-item" href="#">BOTTOM</a></li> <li><a class="dropdown-item" href="#">A/C</a></li> </ul> </li> <li class="nav-item dropdown"> <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false"> COMMUNITY </a> <ul class="dropdown-menu"> <li><a class="dropdown-item" th:href="@{/board/notice}">NOTICE</a></li> <li><a class="dropdown-item" th:href="@{/board/review}">REVIEW</a></li> <li><a class="dropdown-item" th:href="@{/board/qna}">Q&A</a></li> </ul> </li> <li class="nav-item"> <a class="nav-link disabled" aria-disabled="true">Disabled</a> </li> </ul> <form class="d-flex" role="search"> <input class="form-control me-2" type="search" placeholder="Search" aria-label="Search"> <button class="btn btn-outline-success" type="submit">Search</button> </form> </div> </div> </nav> </div> </html> footer.html <!DOCTYPE html> <html xmlns:th="http://www.thymeleaf.org" xmlns="http://www.w3.org/1999/html"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <div class="footer bg-dark fixed-bottom text-white" th:fragment="footer"> <footer> <div class="container"> <ul class="nav justify-content-center pb-3 mb-3"> <li class="nav-item"><a href="#" class="navi-link px-2">Home</a></li> <li class="nav-item"><a href="#" class="navi-link px-2">MyPage</a></li> <li class="nav-item"><a href="#" class="navi-link px-2">FAQ</a></li> <li class="nav-item"><a href="#" class="navi-link px-2">About</a></li> </ul> </div> <!-- SNS 링크 --> <ul class="nav justify-content-center"> <li><a href="https://facebook.com/example"><i class="fab fa-facebook px-2 text-white"></i></a></li> <li><a href="https://twitter.com/example"><i class="fab fa-twitter px-2 text-white"></i></a></li> <li><a href="https://instagram.com/example"><i class="fab fa-instagram px-2 text-white"></i></a></li> <li><a href="https://pinterest.com/example"><i class="fab fa-pinterest px-2 text-white"></i></a></li> </ul> </footer> </div> <!-- Font Awesome 아이콘 JS --> <script src="https://kit.fontawesome.com/a076d05399.js"></script> </html> layout1.html <!DOCTYPE html> <html lang="en" xmlns:th="http://www.thymeleaf.org" xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"> <head> <meta charset="UTF-8"> <title>Title</title> <!-- Font Awesome 아이콘 CSS --> <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css" rel="stylesheet"> <!-- Required meta tags --> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <!-- Bootstrap CSS --> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-QWTKZyjpPEjISv5WaRU9OFeRpok6YctnYmDr5pNlyT2bRjXh0JMhjY6hW+ALEwIH" crossorigin="anonymous"> <!-- Custom styles for this template --> <link th:href="@{/css/layout.css}" rel="stylesheet"> </head> <body> <!-- th:fragment=header.html 로 치환--> <div th:replace="~{fragments/header :: header}"></div> <div layout:fragment="content" class="content"></div> <!-- th:fragment=footer.html 로 치환--> <div th:replace="~{fragments/footer :: footer}"></div> <script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.11.8/dist/umd/popper.min.js" integrity="sha384-I7E8VVD/ismYTF4hNIPjVp/Zjvgyol6VFvRkX/vR+Vc4jQkC+hVqc2pM8ODewa9r" crossorigin="anonymous"></script> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.min.js" integrity="sha384-0pUGZvbkm6XF6gxjEnlmuGrJXVbNuzT9qBBavbLwCsOGabYfZo0T0to5eqruptLy" crossorigin="anonymous"></script> </body> </html> 혹시 해결 방안이 있을지 조심스레 여쭤드립니다..항상 좋은 강의 자료 주셔서 감사합니다 !
- 미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
@ScriptAssert에서 javascript
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]현재 jdk17 이상부터는 @ScriptAssert에서 자바스크립트를 지원하지 않아서 오류가 뜨는데 17버전 이상부터는 @ScriptAssert를 어떻게 사용하나요??
- 해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
bindingResult 질문 있습니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]bindingResult에서 field명은 Model의 멤버변수 이름과 동일하게 사용해야하나요?objectName은 item말고 다른거로 바꿔도 정상적으로 동작하는데 field를 임의로 바꾸면 에러가 발생하네요
- 미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
logout시 redirect 관련
안녕하세요 강의 잘 듣고 있습니다:)로그아웃을 한 다음에 home으로 redirect를 해주었는데실제 로그아웃을 해보니localhost/login?logout 이 뜨면서 login 페이지로 넘어가더라구요..해결방법을 못찾아서 질문남깁니다
- 미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
유틸리티 배열 활용
#array.html <!DOCTYPE html> <html xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <h1>Arrays</h1> <ul> <li>username = <span th:text="${userA.username}"></span></li> <li>age = <span th:text="${userA.age}"></span></li> </ul> <h1>LocalDateTime - Utils</h1> <ul> <li>${#arrays.toStringArray(userA)} = <span th:text="${#arrays.toStringArray(userA)}"></span></li> <li>${#arrays.toIntegerArray(userA)} = <span th:text="${#arrays.toIntegerArray(userA)}"></span></li> <li>${#arrays.toLongArray(userA)} = <span th:text="${#arrays.toLongArray(userA)}"></span></li> <li>${#arrays.toDoubleArray(userA)} = <span th:text="${#arrays.toDoubleArray(userA)}"></span></li> <li>${#arrays.toFloatArray(userA)} = <span th:text="${#arrays.toFloatArray(userA)}"></span></li> <li>${#arrays.toBooleanArray(userA)} = <span th:text="${#arrays.toBooleanArray(userA)}"></span></li> </ul> </body> </html>@GetMapping("/array") public String array(Model model) { User userA = new User("userA", 10); User userB = new User("userB", 20); model.addAttribute("userA", userA); model.addAttribute("userB", userB); return "basic/array"; } @Data static class User { private String username; private int age; public User(String username, int age) { this.username = username; this.age = age; } }이렇게 했을 때 Caused by: java.lang.IllegalArgumentException: Cannot convert object of class "hello.thymeleaf.basic.BasicController$User" to an array of Class 이런 에러가 뜨는데 왜 에러가 발생하며, 어떻게 활용하면 될까요?
- 미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
빈 등록
Component 에 이름없이 써보고 싶은데package hello.thymeleaf.basic; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpSession; import lombok.Data; import org.springframework.stereotype.Component; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @Controller @RequestMapping("/basic") public class BasicController { @GetMapping("text-basic") public String textBasic(Model model) { model.addAttribute("data", "Hello Spring!"); return "basic/text-basic"; } @GetMapping("text-unescaped") public String textUnescape(Model model) { model.addAttribute("data", "Hello <b>Spring!</b>"); return "basic/text-unescaped"; } @GetMapping("/variable") public String variable(Model model) { User userA = new User("userA", 10); User userB = new User("userB", 20); List<User> list = new ArrayList<>(); list.add(userA); list.add(userB); Map<String, User> map = new HashMap<>(); map.put("userA", userA); map.put("userB", userB); model.addAttribute("user", userA); model.addAttribute("users", list); model.addAttribute("userMap", map); return "basic/variable"; } @GetMapping("/basic-objects") public String basicObjects(Model model, HttpServletRequest request, HttpServletResponse response, HttpSession session) { session.setAttribute("sessionData", "Hello Session"); model.addAttribute("request", request); model.addAttribute("response", response); model.addAttribute("servletContext", request.getServletContext()); return "basic/basic-objects"; } /* Component helloBean을 지정한 이유 : 지정하지 않으면 HelloBean 의 빈 이름은 BasicController.HelloBean 으로 설정되기 때문 helloBean을 지정하기 싫으면 내부 클래스 말고 외부에 클래스를 만들어서 사용하면 된다. */ @Data static class User { private String username; private int age; public User(String username, int age) { this.username = username; this.age = age; } } } @Component public class HelloBean { public String hello(String data) { return "Hello " + data; } } 어떻게 수정하면 될까요?
- 해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
브라우저 쿠키 원리
이번 챕터를 수강하면서,쿠키 방식보다는 세션 방식이 더 보안성이 높다는 것.둘을 완전히 분리하여 사용하지 않고, 함께 사용해야 한다는 것.을 알게 되었습니다.세션 id를 브라우저에 전달하기 위해, 쿠키를 사용해야 한다고 이해했습니다. 1. 혹시, 세션 갖고만으로는 안되고 쿠키를 꼭 통해서 전달해야하는 걸까요? 조금은 외람된 질문일 수 있겠지만, 지식이 부족하여 질문드립니다.로그인한 사용자가 또다른 요청을 보낼 시, request header에 쿠키(세션id가 포함된)와 함께 요청을 보내는데, 2. 브라우저의 요청에 쿠키가 자동으로 실리는?(첨부되는) 브라우저의 작동 원리가 궁금합니다. 혹시 관련해서 참고할만한 레퍼런스가 있을까요? 브라우저 쿠키와 관련한 키워드로 구글링하는데, 쿠키카 자동으로 실리게 되는 세부적인 원리에 대한 내용을 찾기가 쉽지 않아 질문 드립니다..ㅜ (영문서여도 감사하겠습니다)
- 미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
HashMap 과 Map의 사용
Map<String, User> map = new HashMap<>(); map.put("userA", userA); map.put("userB", userB); 왜 HashMap<String, User> map = new HashMap<>() 은 사용 못하는 걸까요?
- 미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
UnsatisfiedDependencyException 에러..
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요. 강의를 완강하고 복습을 하던 중, 프로젝트 실행시 에러가 발생해서 질문을 남깁니다. 원래 아무 문제없이 실행됐는데 UnsatisfiedDependencyException 에러가 나네요.. 아무리 찾아봐도 해결할 수 없어 답답한 마음에 질문을 남깁니다.. 댓글에 구글 드라이브 링크 남겨두겠습니다! 감사합니다!
- 미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
BasicErrorController과 WebServerCustomizer의 동시사용
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.안녕하세요BasicErrorController를 사용하면 뷰템플릿만 작성을 하여도 해당 에러에 맞는 뷰를 렌더링해준다는 것으로 이해했는데요, 에러페이지를 직접등록할때는 ErrorPage errorPageEx = new ErrorPage(RuntimeException.class, “/error-page/500”);처럼 런타임예외가 터졌을때 /error-page/500경로에 해당하는 핸들러메소드를 호출할 수 있었습니다. 만약 RuntimeException이 터졌을때 특정 뷰템플릿을 렌더링하고싶을때는 어떻게 해야할지 궁금합니다. BasicErrorController를 씀과 동시에 WebServerCustomizer에서 에러페이지를 등록해줘야 하는 것일까요?그리고 저희가 ErrorPage를 등록할 떄 BasicErrorController를 알지 못한 상태였는데요, 이는 에러페이지를 직접 등록했을 때는 BasicErrorController에 의한 뷰템플릿호출이 후순위로 밀려 작동하지 않는다고 볼 수 있을까요?
- 미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
MVC완강 후, 프로젝트 진행 중 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]mvc 강의를 다 듣고 프로젝트를 진행중인데 계속 오류가 떠서 혹시 한번만 봐주실수있나요 ? ㅠㅠhttps://drive.google.com/drive/folders/15tIzYE6utLhSHtXVeYGPBUeqcMUFxKJc?hl=ko http://localhost:8080/velog/signUp스프링을 실행시키고 위의 url로 이동한 뒤, 값을 모두 입력하고 Sign Up 버튼을 누르면 처음 기본 화면인 http://localhost:8080/velog/login으로 가야하는데 이동을 안하고 계속 에러가 뜨는 상황입니다 ㅠㅠ.. 혼자 해결해보려고 했는데 하루종일 잡고있어도 에러가 안풀리네요... 도와주시면 감사하겠습니다어느부분에서 오류가 난걸까요 ?ㅠㅠㅠ 오류 내용 그대로 GPT한테 물어보니 GPT는 아래처럼 대답하긴 했습니다.로그인멤버 객체를 저장하는 LoginMember를 로그인 처리하는 컨트롤러에서 사용하였는데요..@GetMapping("/login") public String LoginService(Model model) { model.addAttribute("loginMember", new LoginMember()); return "home"; }위의 코드가 문제인것같은데,,ㅠㅠ 뭐가 문제일까요제발 살려주세요ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ
- 미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
실무에서 타임리프에 관해서
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]백엔드 개발자가 타임리프를 공부하는 이유가 혼자서 뭘 만들어볼때 빠르게 웹페이지를 확인해보면서 개발하려고 하는 거고 실무에서는 보통 프론트엔트쪽에서 react같은걸로 서비스를 만드는거 맞아요? 백엔드개발자와 프론트엔드개발자의 역할에 대해 약간 헷갈려서 여쭤봅니다.
- 해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
MyHandlerExceptionResolver 등록 관련 질문
MyHandlerExceptionResolver 클레스를 등록하기 위해서 WebConfig 클래스에서 해당 메서드를 오버라이딩 해주었는데 그냥 MyHandlerExceptionResolver 에 @Component 애노테이션을 사용해서 스프링 빈으로 등록 시켜줘면 안되는건가요?