@RestController에서 서버는 데이터를 주고 받을 때 데이터타입이 json이어야한다고 하셨습니다. 그래서 클라이언트에서 ajax통신으로 서버에 요청을 보낼때, json.stringify을 통해서 Json타입으로 변환 후 전달하셨습니다. 그렇게 하지 않으면 서버에서 제대로 값을 전달 받지 못하는 것도 확인했습니다. 그런데 궁금한게 있습니다. json이란게 아래와 같이 객체를 문자열로 표기한 거잖아요. "{"key":value."key2":value2}" 그럼 애초에 client(jsp) 에서 ajax 통신시 "{"key":value."key2":value2}" 이런식으로 data를 보내면 되야하는 거 아닌가요? json이란 게 약속된 규칙을 통해 객체를 문자열로 표기한 건데 굳이 Json.stringfy를 통해 문자열을 한번더 가공해야지 통신된다는게 이해가 잘 안됩니다. 그렇다면 "{"key":value."key2":value2}" 이건 json타입이 아니라 stringfy()로 감싸야지 json타입이 된다는 말 인것 같거든요. 아니면 @RestController 어노테이션이 붙은 상태에서 서버로 데이터를 보낼때는 Json.stringfy를 꼭 붙여야한다는 규칙이 있다 라고 생각하면 되는건가요? 답변 부탁드립니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 안녕하세요. 강사님 강의 잘 듣고있습니다. 강사님 제가 강의에서 들은 내용을 토대로과거 만들었던 프로젝트를 리팩토링하려고 하는데 어려움이 있어 질문올립니다. 강사님 위와같은 형식으로 회원가입을 진행하려고 하는데 과거에는 ajax를 사용해서 아래와 같이 <input type="text" id="signup-form-nickname" placeholder="닉네임을 입력해주세요." check_result="fail" required> <button type="button" id="check-nickname-btn" style="margin-left: 14px;" value="N">중복확인</button> check_result="fail"를 활용해 중복체크를 하면 check_result="success"값으로 바꿔 회원가입을 진행하는 방법을 사용했었습니다. 그런데 Thymeleaf에 와서는 어떤식으로 중복체크를 해야할지 감이 안잡혀 질문을 남깁니다. 타임리프는 ajax를 사용하지도 않고 중복체크 div도 form안에 있어 이것만 따로 보내는 방법도 알지 못하겠어 찾아보았으나 답이 나오지 않아 질문드립니다. 좋은 강의 만들어주셔서 감사합니다. 후기는 취업하고 올리려고 벼르고 있습니다. ㅇㅁㅇ
안녕하세요. 스프링은 스프링 빈중 @Controller 혹은 @RequestMapping이 붙어있을 때 요청정보와 컨트롤러를 매핑한다고 저번시간에 배웠습니다. 제가 이때 이해한 것은 요청정보URL-객체 매핑이 저장된다는 것이었는데, 이렇게 컨트롤러 클래스를 하나로 통합하게 된다면 매핑이 url-메소드 관계가 형성이 되는 것 같습니다. 이 부분이 저희가 지금까지 MVC 프레임워크를 만드는 과정과 조금 결이 다른 부분이라 어떤 식으로 매핑정보가 등록되는 것인지 잘 이해가 가지 않습니다. 매핑이 클래스 단위로 일어날 수도 있지만 메소드 단위로 일어날 수 도 있는 것으로 이해하면 될까요?
안녕하세요 영한님! 질문드립니다..! 아래와 같이 로그인 시 세션에 로그인 회원정보를 보관하고 //로그인 성공 처리 TODO //세션이 있으면 있는 세션 반환, 없으면 신규 세션을 생성 HttpSession session = request.getSession(true); //세션에 로그인 회원 정보 보관 session.setAttribute(SessionConst.LOGIN_MEMBER, loginMember); 아래와 같이 세션에서 SessionConst.LOGIN_MEMBER가 key 값으로 session 에서 SessionConst.LOGIN_MEMBER와 매칭되는 value인 Member 객체를 꺼내오는 것으로 이해하고 있는데,, Member loginMember = (Member) session.getAttribute(SessionConst.LOGIN_MEMBER); 위와 같은 로직으로 여러회원이 로그인 할 텐데... 어떻게 하나의 key 값으로 여러개의 Member 객체를 구별 할 수 있는지 궁금합니다...! 감사합니다.!
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] WebConfig에서 등록하는 fomatter는 항상 글로벌로 적용되나요? 특정 Controller class에만 적용되게 하거나, Annotation 기반 formatter처럼 특정 method에만 적용되게 할 순 없는건가요?
안녕하세요 상품 목록 - 타임리프 강의를 보다가 질문드립니다 <!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <link href="../css/bootstrap.min.css" rel="stylesheet"> </head> <body> 를 해당 강의에서 <html xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="utf-8"> <link href="../css/bootstrap.min.css" th:href="@{/css/bootstrap.min.css}" rel="stylesheet"> </head> <body> 로 변경하셨습니다. @{/css/bootstrap.min.css}가 static/css/bootstrap.min.css경로를 찾게되는것은 https://www.inflearn.com/questions/266792 를 보아서 이해하였습니다. 하지만 @{} 작성하지 않고 <link href="../css/bootstrap.min.css" rel="stylesheet">로 작성해도 css 정상적으로 적용되는 것을 확인했습니다. <link href="../css/bootstrap.min.css" rel="stylesheet"> 만 작성해도 templates/css/bootstrap.min.css 가 아닌 static/css/bootstrap.min.css에 접근할 수 있는 이유가 있을까요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 위와같은 에러가 발생합니다. 에러 문구에 17버전 이라고 되어있어 구글링을 통하여 java버전이 제대로 설정되어있지 않음을 파악하고 환경변수 설정을 해주었습니다. 그래도 저 에러가 해결되지않아서 질문드립니다.
webapp 디렉토리의 index.html과 basic.html이 열리지 않습니다.... 인텔리제이 유료버전을 사용하고 있고 build를 인텔리제이로 바꿔도 봤고, build.gradle에서 tomcat 부분을 주석으로도 해봤는데 모두 출력이 정상적으로 이루어지지 않습니다...오타가 있나 봤는데 오타도 없고, 지웠다가 다시 생성해봐도 동일합니다....ㅠㅠ
homeLoginV3 에서 질문드립니다. //세션에 회원 데이터가 없으면 home로 보내주는 로직 if (loginMember == null) { return "home"; } 에 대해서 의문점이 있어서 질문을 남기게 되었습니다. 상단에서 이미 세션 관리자에 저장된 회원 정보를 조회했고, 세션이 존재하지 않는다면 home 으로 이동하고, 그렇지 않은경우(세션 관리자에 회원 loginMember가 있는경우)에서는 회원 데이터가 없을 수가 있나요?? 이미 기존에 회원이 로그인을 했었기 때문에, 세션에는 당연히 회원 데이터가 있다고 생각이 듭니다.. 세션에 회원 데이터가 없는 경우가 있는 상황이 있는지 궁금합니다.
Unable to start the daemon process. This problem might be caused by incorrect configuration of the daemon. For example, an unrecognized jvm option is used. Please refer to the User Manual chapter on the daemon at https://docs.gradle.org/7.5/userguide/gradle_daemon.html Process command line: C:\Program Files\Java\jdk-11.0.16\bin\java.exe --add-opens java.base/java.util=ALL-UNNAMED --add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.lang.invoke=ALL-UNNAMED --add-opens java.base/java.util=ALL-UNNAMED --add-opens java.prefs/java.util.prefs=ALL-UNNAMED --add-opens java.prefs/java.util.prefs=ALL-UNNAMED --add-opens java.base/java.nio.charset=ALL-UNNAMED --add-opens java.base/java.net=ALL-UNNAMED --add-opens java.base/java.util.concurrent.atomic=ALL-UNNAMED -XX:MaxMetaspaceSize=256m -XX:+HeapDumpOnOutOfMemoryError -Xms256m -Xmx512m -Dfile.encoding=UTF-8 -Duser.country=KR -Duser.language=ko -Duser.variant -cp C:\Users\***(이름부분)\.gradle\wrapper\dists\gradle-7.5-bin\f1w0cc9nuo0eivz97x2xlu9sv\gradle-7.5\lib\gradle-launcher-7.5.jar org.gradle.launcher.daemon.bootstrap.GradleDaemon 7.5 Please read the following process output to find out more: ----------------------- Error: Could not find or load main class org.gradle.launcher.daemon.bootstrap.GradleDaemon Caused by: java.lang.ClassNotFoundException: org.gradle.launcher.daemon.bootstrap.GradleDaemon 혹시 저처럼 이런 오류 뜨는분 계실 까봐 글남깁니다. 제생각인데 이거 원인이 윈도우 사용자이름 때문인거 같습니다 . 사용자 이름이 한글이면 뭔가 안맞아서 이런 오류가 뜨는거같아요. 똑같은 컴에서 사용자 추가해서 실습하니까 아무문제 없이 잘되네요. 제 경험담인데 비슷한 일로 마인크래프트가 있습니다 마인크래프트도 사용자 이름이 한글로 되어있으면 실행이 안되더라고요(Exit code : 0 라고뜨면서 꺼집니다) 그래서 그때 사용자(윈도우 운영체제 계정?)를 새로 만들어서 하니까 잘되더라고요 바보같이 마이크로소프트 계정이름이 한글로 되어있는바람에 컴터 사용자가 한글로 됐고 그래서 이런일이...있는거같습니다.포멧하지 않는이상 해결안되는거같고 다른방법으로 사용장 계정(?)을 새로 만들어서 해결했습니다 저는요.. 좀더 자세히 추측해보자면 C:\Users\hong 이거랑 C:\Users\홍길동 이차이 인거같습니다 이폴더가 이름으로 되는거같은데 한글이면 문제가 되는거같습니다. 혹시 비슷한 문제 있으신분들은 참고하시면 될듯 합니다.
설명하는 역할들이 어디서 일어나는지 궁금합니다. 서블릿 컨테이너 내에 디스패처서블릿이 있는건가요? 스프링 컨테이너 내에 디스패처서블릿이 있는건가요? 기존 서블릿 컨테이너를 설명하실때, 서블릿 객체의 역할에 추가 기능이 붙어 디스패처 서블릿이 되는건지, 아니면 별개인지 헷갈립니다