묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
회원가입 테스트 오류 발생 문의
안녕하세요,테스트 진행 중 오류가 발생하여 문의드립니다.회원가입을 테스트할 때 @Transactional을 주석처리하면 정상 작동되지만, 활성화하면 오류가 발생합니다.java.sql.SQLException: Connection is closed이것은 JdbcMemberRepository의 sava() 작성 내용입니다.@Transactional을 활성화하면 오류가 발생하는 원인과 해결 방법이 궁금합니다..!!
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
안녕하세요 WebDataBinder와 Model관련해서 궁금한 점이 있습니다.
안녕하세요 항상 좋은 강의 만들어주셔서 감사합니다.강의 자료를 보다,강의 내용과는 조금 거리가 있을수도 있지만, 궁금한 점이 생겨 질문드립니다.강의자료에서는 "WebDataBinder 는 스프링의 파라미터 바인딩의 역할을 해주고 검증 기능도 내부에 포함한다." 라고 되어 있는데 그러면 public String addItemV6(@Validated @ModelAttribute Item item, BindingResult bindingResult, RedirectAttributes redirectAttributes, Model model)해당 부분에서 파라미터로 넘어오는 데이터들은 @Validated에 의해서 검증기가 동작하면서 WebDataBinder 에 담기고 @ModelAttribute에 의해 model에도 담기게 되는건가요?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
인터셉터와 필터
인터셉터와 필터를 함께 사용하는것도 가능한가요?필터로는 로그를 찍게 하고, 인터셉터로는 로그인을 확인한다던지..둘 중 하나만 쓰는게 합리적인것 같긴 한데.. 혹시 가능하다면 현업에서 두 가지를 함께 사용하는 경우가 있나요?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
공통관심사항 메소드들 호출궁금한게 있습니다
서블릿 필터 destroy()메소드는 필터 종료 메서드, 서블릿 컨테이너가 종료될 때 호출된다.라고 알고있는데 이경우 Dispatcher Servlet의 종료직전 호출된다는 의미인가요? 만약 맞다면 필터의 메소드들의 종료시점은 Dispatcher Servlet 호출 이후일수도 있으니 아래 순서가 틀릴수도 있다는 뜻인지 궁금합니다HTTP 요청 -> WAS -> 필터 -> Dispatcher Servlet-> 컨트롤러(핸들러)
-
미해결스프링 프레임워크는 내 손에 [스프1탄]
글 수정 오류 질문드립니다.
ㄷ원래 잘 되었다가. 이번 챕터진행하고 확인해보니 안되고 있습니다. console.log 찍어서 값 잘 변경되는지 확인했고 컨트롤러에서 dto를 찍으니 전부 널 값이 들어가있는데 ajax에 문제가 있는 건가요?
-
미해결스프링 프레임워크는 내 손에 [스프1탄]
restapi 관련 문의
@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를 꼭 붙여야한다는 규칙이 있다 라고 생각하면 되는건가요? 답변 부탁드립니다.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
상품수정시 수량에 너무 큰값을 넣으면 오류가나옵니다
99999정도의 수량은 정상작동하는데 너무큰값을넣으면 인식을 못하는 이유가 타입의 최대 저장용량을 넘어서인가요?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
추가질문
만약 상품명에 영문포함, 숫자포함, 특수기호 포함등 자세한 검증을 하고 싶다면 bean validation이 아닌 컨트롤러에 직접 자바코드를 삽입하는 방식으로 해야하나요?? bean validation으로도 저런 상세한 조건을 만들 수가 잇나요??
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
상품을 삭제하려면 어떻게 하면 좋을까요?
혹시 상품 상세페이지에서 상품 삭제를 하려면 어떻게 하면 좋을까요??,,,계속해서 하는데 모르겠어서요ㅠㅠ!
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
필터사용
(인터셉터 대신) 특별히 필터를 사용해야 하는 경우는 어떤경우가 있을까요?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
중복체크기능 관련 질문올립니다!
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.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안에 있어 이것만 따로 보내는 방법도 알지 못하겠어 찾아보았으나 답이 나오지 않아 질문드립니다. 좋은 강의 만들어주셔서 감사합니다. 후기는 취업하고 올리려고 벼르고 있습니다. ㅇㅁㅇ
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
컨트롤러의 통합에 관한 질문입니다
안녕하세요. 스프링은 스프링 빈중 @Controller 혹은 @RequestMapping이 붙어있을 때 요청정보와 컨트롤러를 매핑한다고 저번시간에 배웠습니다. 제가 이때 이해한 것은 요청정보URL-객체 매핑이 저장된다는 것이었는데, 이렇게 컨트롤러 클래스를 하나로 통합하게 된다면 매핑이 url-메소드 관계가 형성이 되는 것 같습니다. 이 부분이 저희가 지금까지 MVC 프레임워크를 만드는 과정과 조금 결이 다른 부분이라 어떤 식으로 매핑정보가 등록되는 것인지 잘 이해가 가지 않습니다. 매핑이 클래스 단위로 일어날 수도 있지만 메소드 단위로 일어날 수 도 있는 것으로 이해하면 될까요?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
session.getAttribute(SessionConst.LOGIN_MEMBER) 질문
안녕하세요 영한님! 질문드립니다..! 아래와 같이 로그인 시 세션에 로그인 회원정보를 보관하고 //로그인 성공 처리 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 객체를 구별 할 수 있는지 궁금합니다...! 감사합니다.!
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
WebConfig에서 등록하는건 항상 글로벌로 적용되나요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]WebConfig에서 등록하는 fomatter는 항상 글로벌로 적용되나요? 특정 Controller class에만 적용되게 하거나, Annotation 기반 formatter처럼 특정 method에만 적용되게 할 순 없는건가요?
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
경로 질문
안녕하세요 상품 목록 - 타임리프 강의를 보다가 질문드립니다 <!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에 접근할 수 있는 이유가 있을까요?
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
빌드 컴파일러 버전문제
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 위와같은 에러가 발생합니다. 에러 문구에 17버전 이라고 되어있어 구글링을 통하여 java버전이 제대로 설정되어있지 않음을 파악하고 환경변수 설정을 해주었습니다. 그래도 저 에러가 해결되지않아서 질문드립니다.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
Whitelabel Error Page 질문
webapp 디렉토리의 index.html과 basic.html이 열리지 않습니다.... 인텔리제이 유료버전을 사용하고 있고 build를 인텔리제이로 바꿔도 봤고, build.gradle에서 tomcat 부분을 주석으로도 해봤는데 모두 출력이 정상적으로 이루어지지 않습니다...오타가 있나 봤는데 오타도 없고, 지웠다가 다시 생성해봐도 동일합니다....ㅠㅠ
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
구현체의 개념질문입니다
단순한 개념질문인데... DefaultConversionService 인터페이스는ConversionService인터페이스와 ConverterRegistry인터페이스를 확장한 인터페이스로 보입니다. DefaultConversionService를 ConversionService와 ConverterRegistry의 구현체라고 불러도 될까요??(또는 "DefaultConversionService는 구현체"다 라는 명제가 성립되나요?) 보통 지금까진 "A인터페이스를 implements한 B구현체"는 많이봤는데 위 질문내용은 처음봅니다
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
질문남깁니다.
homeLoginV3 에서 질문드립니다. //세션에 회원 데이터가 없으면 home로 보내주는 로직 if (loginMember == null) { return "home";} 에 대해서 의문점이 있어서 질문을 남기게 되었습니다.상단에서 이미 세션 관리자에 저장된 회원 정보를 조회했고, 세션이 존재하지 않는다면 home 으로 이동하고, 그렇지 않은경우(세션 관리자에 회원 loginMember가 있는경우)에서는 회원 데이터가 없을 수가 있나요??이미 기존에 회원이 로그인을 했었기 때문에, 세션에는 당연히 회원 데이터가 있다고 생각이 듭니다..세션에 회원 데이터가 없는 경우가 있는 상황이 있는지 궁금합니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
Unable to start the daemon process. 에러
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\홍길동 이차이 인거같습니다 이폴더가 이름으로 되는거같은데 한글이면 문제가 되는거같습니다. 혹시 비슷한 문제 있으신분들은 참고하시면 될듯 합니다.