묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
V3 Modelview와 Map<String, String> 질문
public ModelView process(Map<String, String> paramMap) { String username = paramMap.get("username"); int age = Integer.parseInt(paramMap.get("age")); Member member = new Member(username, age); memberRepository.save(member); ModelView mv = new ModelView("save-result"); mv.getModel().put("member", member); return mv;public class ModelView { private String viewName; private Map<String, Object> model = new HashMap<>(); public ModelView(String viewName) { this.viewName = viewName; } public String getViewName() { return viewName; } public void setViewName(String viewName) { this.viewName = viewName; } public Map<String, Object> getModel() { return model; } public void setModel(Map<String, Object> model) { this.model = model; }1.Modelview에서 model이 언제생성된거죠..? getmodel을 해주려면 먼저 선언이 되어있는 model을 가지고 반환해줘야하는데 언제선언이 된거죠? Map<String, String> paramMap = createParamMap(request); ModelView mv = controller.process(paramMap); String viewName = mv.getViewName(); //논리이름 new-form MyView view = viewResolver(viewName); view.render(mv.getModel(), request, response); } private static MyView viewResolver(String viewName) { return new MyView("/WEB-INF/views/" + viewName + ".jsp"); } private static Map<String, String> createParamMap(HttpServletRequest request) { Map<String, String> paramMap = new HashMap<>(); request.getParameterNames().asIterator() .forEachRemaining(paramName ->paramMap.put(paramName, request.getParameter(paramName))); return paramMap; } } Map<String, String> createMap에서 .forEachRemaining(paramName ->paramMap.put(paramName, request.getParameter(paramName))); 여기를 보면 request.getParmeter(paramName)로 paramName에대한 Value를 가지고오고있는데 여기서 말하는 Value는 age인데 int로 선언하는게 맞지않나요?항상 답변감사드립니다
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
프로젝트 실행 오류
다음과 같은 오류가 뜨는데 어느 부분을 고쳐줘야 할까요?javax 관련 패키지는 없어보입니다
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
localhost:8080/hello 오류
index.html은 잘 열리는데 hello.html은 오류가 나네요 ㅠㅠ질문들 많이 찾아서 봤는데도 문제가 안보여요...도와주세요 ㅠㅠㅠ!
-
해결됨아키텍처 패턴 with iOS - GUI Architecture Patterns(이론)
MVC의 본질에 대한 질문
안녕하세요! MVC의 본질에 대한 강의를 듣다가 문득 궁금증이 생겨서 글을 남깁니다. 강의자님께서 유저의 멘탈모델과 컴퓨터 모델을 일치시키는 것이 MVC의 본질이라고 하셨습니다. 또한, 유저의 멘탈모델이라는 것이 사용자가 애플리케이션을 사용하면서 "내부적으로 이렇게 되있을 것이다." 라고 생각하는 것이라고 설명해주셨습니다. 첫 번째 궁금증은 유저의 멘탈모델과 컴퓨터 모델을 일치시킨다는 것은 곧 '유저가 애플리케이션의 인터페이스만 봐도 어떤 일이 발생할지, 어떻게 동작될지 대충 예상이 될 정도로 애플리케이션을 유저 친화적으로 만든다'라고 해석해도 될까요? 두 번째 궁금증은 만약, 위의 저의 해석이 맞다면, "프레젠테이션 계층과 유저의 멘탈모델, 즉 내부 구현 계층이 분리되면 유저 친화적인 애플리케이션을 개발할 수 있다."로 귀결될 수 있는데, 사실 프레젠테이션 계층과 모델 계층의 분리는 어디까지나 개발자를 위한 분리인 줄 알았는데, 사용자를 위한 분리였다는 의미로 해석되어 상당히 혼란스럽니다... 좋은 강의 제공해주셔서 감사합니다! 좋은 답변 기대할께요~
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
store 변수가 왜 안 가져와지나요?
섹션 3 중 회원 레포지토리 테스트 케이스 작성 수업 듣던 중 store 변수가 계속 안 가져와지네요. 어떻게 해결해야 하나요? bukwon/SpringBoot_a (github.com)에러 브랜치에 푸쉬해놨습니다. 확인 해주시면 감사하겠습니다!
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
save() 테스트관련 질문입니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]savedMember 에는 id, username, age 가 세개 모두 입력된 객체가 findMember 에는 username 과 age 만 가지고 있는 Member 타입 객체가 생성되는 것이 아닌가요?.get() 메서드 설명 읽어보면 value 를 반환한다고 되어있고.save() 메서드에서는 시퀀스로 id 값까지 채워넣은 객체를 반환하고 있는걸로 보여서욤저 @21fd... 는 객체 주소인거지요? 가져오는 데이터가id, username, age / username, age 이렇게 다르지만같은 주소값에 저장되어있다 라는걸 확인하는건가요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
순환 종속성 문제 강의와 다름
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용] spring Bean에 aop를 등록하면 순환 종속성 문제가 발생하는데 Bean에서 제거하면 문제 없이 잘 돌아갑니다.혹시 강의내용과 다른데 무슨 문제인가요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
SpringConfig 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. SpringConfig 내용을 강의와 똑같이 바꿨는데 memberRepository에 빨간 밑줄이 생기면서 오류가 발생해요...아래는 SpringDataJpaMemberRepository 코드인데, 해당 인터페이스가 사용되고 있지 않다고 나오네요.. 몇 시간 째 찾아봤는데 도무지 모르겠습니다.. ㅠㅠㅠㅠ
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
JAVA 버전을 21로 설정한 이후에 build 시에 오류가 발생합니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]여기에 질문 내용을 남겨주세요.강의 영상을 시청하고 따라해보던 중에 윈도우 pc의 터미널로 build를 진행하였으나, "No matching variant of org.springframework.boot:spring-boot-gradle-plugin:3.2.1 was found." 이 발생하였습니다. 혹시 도움을 주실 수 있으실까요?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
코드에러를 어떻게 잡아야할까요?
https://drive.google.com/file/d/14AzHAHA4ulJ_F47TmZHwz1U9AP3uyIbw/view?usp=sharing 1.MVC와,Front-controller에서 회원정보를 입력하면 위에경로가 상대경로로지정된 save로 넘어가지않고404로 뜹니다..
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
로그에 모든 경로의 url이 다 나옵니다
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 강의를 따라가다보니 저는 로그에 모든 url경로가 다 나오는데 선생님 강의에서는 localhost:8080은 제외한 이후 경로만 나옵니다. 제가 혹시 어느 부분을 놓친건지 궁금합니다.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
에러메세지 만드는 거
https://drive.google.com/file/d/1z-zuoAUetdDnRiEBscuhmhDL95TM65C-/view?usp=sharing제 공유파일입니다. 수업듣고 혼자서 만들어 보는데 도무지 모르겠습니다. localhost:8080/member/save에서 아무것도 안 누르고 회원가입 눌렀는데 왜 에러메세지 안 뜨고 에러페이지가 뜰까요 ㅠㅠ 컨트롤러에 if(!StringUtils.hasText(memberDTO.getMemberId())) {//springutils spring꺼 임포트 해야함 bindingResult.addError(new FieldError("memberDTO","memberId","아이디는 공백이 안 됩니다.")); }이 부분도 추가 하고 다 했는데 ㅠ
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
뷰에서 request.getAttribute()를 사용할 수 있는 이유
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]@WebServlet(name = "mvcMemberSaveServlet", urlPatterns = "/servlet-mvc/members/save") public class MvcMemberSaveServlet extends HttpServlet { private MemberRepository memberRepository = MemberRepository.getInstance(); @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String username = request.getParameter("username"); int age = Integer.parseInt(request.getParameter("age")); Member member = new Member(username, age); memberRepository.save(member); // Model에 데이터를 보관해야 한다. request.setAttribute("member", member); String viewPath = "/WEB-INF/views/save-result.jsp"; RequestDispatcher dispatcher = request.getRequestDispatcher(viewPath); dispatcher.forward(request, response); } } 여기서 request.setAttribute("member", member);를 통해 Model에 데이터를 보관하게 되고, 이를 뷰에서 사용할 수 있잖아요.뷰에서 request.getAttribute()를 사용할 수 있는 이유는 dispatcher.forward(request, response); 이 코드에서 request를 인자값으로 넘겼기 때문인가요? 아니면 이거 때문이 아니라 별개의 이유 때문인가요? 정리하면, 컨트롤러에서 request.setAttribute("member", member);를 통해 Model에 데이터를 보관하고,뷰에서 request.getAttribute()를 통해 그 데이터를 받을 수 있는 이유가 바로dispatcher.forward(request, response);에서 request를 인자값으로 넘겼기 때문이 맞는지, 아니면 이 코드랑 별개의 다른 이유가 존재하는지 궁금합니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
@GetMapping 관련 질문입니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]@GetMapping 의 실행순서에 관한 질문입니다.@GetMapping("/") , @GetMapping("/members/new")2개의 매핑이 있을 경우, 매핑의 우선순위를 알고 싶습니다.좀 더 구체적인 경로가 먼저 매핑된다고 알고있었는데그럼 localhost:8080 을 실행했을때 home.html 이 아닌createMemberForm.html 이 나와야 하는건가? 해서요단순히 localhost:8080 으로 실행했기 때문에 "/" 로 간걸로 보면되나요?
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
상대경로 질문
Spring MVC-1편에서 섹션3. 서블릿,MVC패턴에서 상대 경로 질문입니다.<%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head><title>Title</title></head><body><form action="/jsp/members/save.jsp" method="post">username: <input type="text" name="username" />age: <input type="text" name="age" /><button type="submit">전송</button></form></body> 1.이 코드로 계속 왔다갔다할수있으면서 save되는걸 보신다고하셨는데 이때 상대참조이야기도 나오더라구요!action="/jsp/members/save.jsp" 이부분에서 "/jsp/members/save.jsp" 이부분을 웹에있는 action에 준다는거같은데 맞을까요? 그리고 action="/jsp/members/save.jsp" 이부분이 상대참조가 맞는지도 궁금합니다.!!
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
httpSession 관련 질문드립니다.
request.getSession() 으로 생성된 httpsession은 sessionStore 인지 아니면 session 인지 궁금합니다.제 생각에는 sessionStore가 아니라 그냥 sessionStore에서 session을 검색해서 가져오거나, 없으면 session을 생성한 것이라고 생각합니다. 이렇게 생각하게 된 이유는, /session-info url로 크롬과 사파리로 브라우저를 다르게 하여 접속한 결과, 크롬에서 로그인을 했더라도, 사라피로 로그인하지 않고 session-info 로 접속한다면 session 이 없다고 떴기 때문입니다. 그렇기 때문에, request.getSession() 으로 생성된 session 에서 session.setAttribute("member", member) 이런식으로 attribute를 추가하는 것은 그냥 그 세션자체에 member라는 것을 추가하는 것으로 짐작됩니다. 따라서 직접 만들어본 SessionManager 의 createSession 과는 다르다고 생각하는게, createSession은 sessionStore에 직접 sessionId 와 member를 묶어서 직접 put을 해준것이고httpsession.setAttribute는 그저 session에 attribute를 추가해준 것이라고 생각하기 때문입니다.그리고 httpSession 은 어딘가에 있을 sessionStore에 저장되겠죠 << 사실 이 부분이 의문입니다. 어느시점에 session이 sessionStore에 저장되는지, 그 sessionStore는 어디있는지 궁금합니다.대충 시점은 getSession() 하는 순간 sesstionStroe를 탐색해서 없다면 sessionStore에 저장하면서 해당 session을 가져오고 그 세션에 setAttribute로 속성을 추가해주는 것 같다고 예상되긴 합니다. 그래서 궁금한 점은 httpSession의 sessionStore은 어디있는지 궁금합니다. 그리고 만약 존재한다면 어느시점에 생성되는건지 궁금합니다. 그리고 직접 확인이 가능한지도 궁금합니다.분명 여러유저가 접속한다면 sessionStore에 session이 쌓일텐데 그 쌓이는게 어떻게 쌓이는지 보고싶습니다. 그와 동시에 궁금해지는 점은 session.getAttribute("loginMember") 이런식으로 한번더 세션에 멤버 어트리뷰트가 존재하는지 확인하는 이유도 궁금합니다. 세션을 만들때 무조건 loginMember를 설정해줄것이고, 만약 세션자체가 사라진다면 그냥 사라질텐데, 세션을 만들때 session.setAttribute("loginMember", loginMember) 를 하지 않는 경우가 있나요??제 가정이 다 맞다고 가정하에, 그리고 브라우저 종료시에 쿠키가 즉시 브라우저에서 삭제된다고 가정할때, 로그아웃 하지 않고 바로 브라우저를 종료하고 로그인 하는 식으로 똑같은 사용자가 여러번 로그인을 한다면, 그때마다 브라우저는 항상 쿠키가 존재하지 않으니까, getSession으로 sessionStore에서 session을 찾지 못할 것이고 그렇다면 새로운 jsessionid 값에 똑같은 사용자를 가진 session을 게속 생성해서 sessionStore에 저장하게 되는 것이 아닌가요?? 그렇다면 세션이 시간이 만료되어서 자동으로 삭제 되기전까지 똑같은 사용자를 포함한 여러개의 세션이 세션스토어에 게속 쌓일것이라고 예상되는데, 그럼 여러가지 jsessionId로 하나의 계정에 접속이 가능한 것인지 궁금합니다. 혹시 제 예측이 틀린것이라면 어떻게 틀렸는지 설명해주시면 감사드리겠습니다.https://www.inflearn.com/questions/989189/request-getsession-%EA%B3%BC-sessionstore위 링크의 질문도 봤는데 아무리 생각해도 sessionStore를 여러개 생성한다는 개념은 뭔가 이상하다고 생각해서 의문이 해결되지 않습니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
강의 로드맵 변경 문의드립니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 아니오2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 네3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 네[질문 내용]여기에 질문 내용을 남겨주세요. 안녕하세요. 저는 JPA 기술을 연마하고 싶은 개발자입니다!지금 [우아한형제들 최연소 기술이사 출신 김영한의 스프링 완전 정복]을 결제한 상태이고,[스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술] 강의를 다 들었습니다.그런데 이 강의를 다 듣고나니 저한테 맞는 로드맵은[김영한의 스프링 부트와 JPA 실무 완전 정복 로드맵] 인 것 같아서 문의드립니다. 금액이 문제가 될 수 있지만, 어떻게어떻게 로드맵을 변경할 수 있는 방법이 없을까요? 안그래도 일정이 오래 소요 될 듯하여 걱정 됐었는데, 현재 진행중인 [스프링 완전 정복] 대신 차라리 바로 [스프링 부트와 JPA 실무 완전 정복 로드맵] 공부에 들어가면 제 일정과 딱 맞을 것 같습니다..!
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
SpringConfig.java 인식 오류
안녕하세요. 스프링 입문 - 자바 코드로 직접 스프링 빈 등록하기 강의 실습 중 SpringConfig.java 인식이 되지 않는 오류가 발생했습니다. SpringConfig.java 파일 구조와 내용은 위와 같습니다. 에러 코드는 다음과 같습니다.Action: Consider defining a bean of type 'grace.gracespring.service.MemberService' in your configuration. > Task :GraceSpringApplication.main() FAILED Deprecated Gradle features were used in this build, making it incompatible with Gradle 9.0. You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins. For more on this, please refer to https://docs.gradle.org/8.5/userguide/command_line_interface.html#sec:command_line_warnings in the Gradle documentation. FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':GraceSpringApplication.main()'. > Process 'command 'C:\Program Files\Java\jdk-17\bin\java.exe'' finished with non-zero exit value 1 아래는 controller, service, repository 코드입니다. 도움 주시면 감사하겠습니다.비슷한 오류가 발생하신 다른 분 해결법(SpringConfig.java 가 클래스로 인식안됨)도 시도해보았지만 같은 에러가 계속 발생합니다ㅜ
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
HttpSession과 쿠키
안녕하세요 해당 강의를 듣고 복습하던 중 의문점이 생겨 질문 드립니다!getSession()이 세션이 있는 경우에는 해당 세션을 가져오고, 없는 경우에는 새로 생성한다고 하셨는데 세션이 있는지 없는지는 요청에 있는 쿠키의 JSESSIONID 값을 기준으로 판별하는 건가요? 만약 한 사용자가 로그아웃을 하지 않은 상태로 브라우저를 종료하고 다시 로그인을 수행하면, 쿠키가 삭제되어 이전의 JSESSIONID 값이 사라지게 되어서 getSession()이 해당 세션은 없다고 판단하고 새로운 세션을 생성하게 되나요? 타임아웃이 없다고 가정한다면, 세션 저장소에는 같은 사용자에 대한 세션 정보가 여러개 저장되는건가요?
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
연결 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]org.h2.jdbc.JdbcSQLNonTransientConnectionException: Connection is broken: "java.net.ConnectException: Connection refused: no further information: localhost" [90067-214]Caused by: java.net.ConnectException: Connection refused: no further informationjava.lang.NullPointerException: Cannot invoke "org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(java.sql.SQLException, String)" because the return value of "org.hibernate.resource.transaction.backend.jdbc.internal.JdbcIsolationDelegate.sqlExceptionHelper()" is null이번 강의부터 이러한 오류가 계속 뜹니다. 8080포트는 사용중이지 않고 혹시 해서 포트번호를 바꿨는데도 계속해서 오류가 뜹니다..