제일 처음 hellospring으로 간단히 코드를 만들었을때 @GetMapping("hello")를 하면 localhost:8080/hello를 치면 그 코드가 실행되는 걸로 기억을 하는데 그럼 여기서도 혹시 @GetMapping("/members/new")이렇게 해도 되고 @GetMapping("members/new")이렇게 입력해도 결과값은 같게 나오나요? 그리고 지금 이 강의에서 MemberController와 MemberService둘다 스프링빈에 등록되어 있어서 MemberController생성자에 MemberService를 쓸 수 있는것이 맞나요?
강사님 일단 로그인안한 상태에서 /items에 접근하면 -> 이렇게 쿼리파라미터를 들고 login페이지로 새로 보여주는거까지는 잘됩니다. -> 근데 여기서 /items로 redirect해줄려고 @RequestParam어노테이션을 사용해서 쿼리파라미터를 받아오려고 하면 이렇게 뜨거든요. 그래서 제가 컨트롤러 단에서 페이지를 다른 페이지로 돌리고 로그를 찍어보닌까 @RequestParam으로 redirectURL이라는 쿼리파라미터를 못불러 오는것 같습니다. defalutURL을 넣어서 / 로 해주면 계속 /로가고 저걸 안넣어주면 쿼리파라미터를 찾을 수 없다고 에러가납니다. 이런 경우 어떻게 해결해야 할까요? 강의랑 특별히 다르게 한건 없는데;;;
강사님 안녕하세요~ 서버가 잘 죽는데~ 실제로 장고를 배포하고 서비스를 24시간 7일 운영하려면 서버가 안전성이 있어야 하는데~ 혹시 코드를 안전하게 구현을 못해서 강습보며 따라할때 잘 죽는건가요? 아니면 장고 프래임워크로 짠 서버가 원래 잘 죽는건가요? 스프링보다 장고가 훨씬 시장이 작은데 강습보며 연습하다 서버가 잘 주는걸 보고 장고 웹 프레임워크가 성능이 안좋아서 장고 쓰는 회사가 스프링에 비해 적은건가? 라는 스스로 걱정이 있어서 질문드립니다~
결과창이 이렇게 뜨는데 아무리 고쳐봐도 안되네요.. *************************** APPLICATION FAILED TO START *************************** Description: The bean 'timeTraceAop', defined in class path resource [com/example/hellospring/Service/SpringConfig.class], could not be registered. A bean with that name has already been defined in file [C:\Users\zzang\Downloads\java\hello-spring\build\classes\java\main\com\example\hellospring\aop\TimeTraceAop.class] and overriding is disabled. Action: Consider renaming one of the beans or enabling overriding by setting spring.main.allow-bean-definition-overriding=true
현재 loginService에서 DB에 있는 값 체크할 때 if(member.getPassword().equals(password)) { return member; } else { return null; } 이런식으로 비밀번호만 체크하잖아요? 근데 아이디가 틀릴 수도 있으니 아이디도 체크해줄려고 if(member.getLoginId().equals(loginId)) 이런식으로 조건을 더 추가를 해주면 비밀번호만 체크하고 아이디가 다를땐 500에러를 내거든요? java.util.NoSuchElementException: No value present 이런 에러인데요,.,. 아이디랑 비밀번호가 모두 일치해야 성공로직을 돌고 아이디가 없으면 아이디가 없다고 비밀번호가 다르면 비밀번호가 다르다고 이렇게 구성하려면 어떻게 해야할까요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요.
나중에 가면서 이해되겠지 하고 천천히 돌려보고 자료도 보고했는데 forward 가 되기때문에 렌더링이 마쳐진다는 강사님의 말씀이 이해가지않습니다. forward가 redirect와는 달리 바로 쏴주는거같은데, jsp 에 쏴주게 됨으로써 html이 렌더링 된다는 말씀이신가요?
기본적인 접근지정자의 범위개념은 인지하고있습니다. 예를들어 protected는 해당 패키지외에 상속받은 다른 클레스가 범위인데, 현재 13분 50분경 service 가 protected로 되었습니다. 이때 꼭 저걸 써야되나? 싶은 의문이 들더라구요 그래서 실무에서의 각 접근지정자의 대략적인 범위? 예를들어 private라면 대략 생성자같은 클라이언트가 건들면 안되는곳을 지정한다 처럼요. 부탁드립니다.
교수님 안녕하세요 . 개정되고 나서 다시 정주행 하고 있고 있습니다. 좋은 강의 감사드리고 교수님 강의들 머신러닝과 오라클 강의 또한 아주 잘 듣고 있습니다. 교수님 Yolo v3 Custom Dataset으로 학습 후 아래와 같이 텐소보드를 통한 결과 같은데 이 부분을 어떻게 해석을 하고 보완을 해야할 지 강좌 내용에는 아래와 같은 Train 에 대한 학습 Result 를 하는 내용을 아직 제가 찾지 못해서 데이터를 분석하고 이해하는 법을 알고자 이렇게 두루뭉실하게라도 여쭙니다. 감사합니다.
안녕하세요 강의 잘 듣고 있습니다. 마라톤 데이터 가공 2 강의를 듣던 중 Step 5단계에서 오류가 발생합니다. 사용하고 있는 파이썬 버전은 3.8.12이고 pandas 버전은 1.3.4입니다. 강의 내용대로 순차적으로 실습 진행 중 Step 5단계에서 오류가 발생하여 Step 5단계의 다른 내용을 모두 주석 후에 marathon_2015_2017['5K'] = pd.to_timedelta(marathon_2015_2017['5K']) 이 코드만 실행해 보았는데요 그럼에도 오류가 발생합니다. 혹시나 해서 csv파일을 열어 보았는데 시간데이터 중 '-' 로 표시된 부분이 종종 있었습니다. 제 생각에는 '-'라는 문자가 있으니 null도 아니고 시간데이터도 아니다 보니 문제가 발생하는 것 같은 예감입니다. 아래에 오류 내용을 그대로 첨부하겠습니다. 도움 주시면 감사하겠습니다. --------------------------------------------------------------------------- ValueError Traceback (most recent call last) /opt/homebrew/Caskroom/miniforge/base/envs/DV/lib/python3.8/site-packages/pandas/_libs/tslibs/timedeltas.pyx in pandas._libs.tslibs.timedeltas.array_to_timedelta64 () /opt/homebrew/Caskroom/miniforge/base/envs/DV/lib/python3.8/site-packages/pandas/_libs/tslibs/timedeltas.pyx in pandas._libs.tslibs.timedeltas.parse_timedelta_string () ValueError : symbols w/o a number During handling of the above exception, another exception occurred: ValueError Traceback (most recent call last) /var/folders/zl/7hy5k6z55zz2b286tv4bbk740000gn/T/ipykernel_48790/1493613945.py in <module> 6 7 # Convert using pandas to_timedelta method ----> 8 marathon_2015_2017 [ '5K' ] = pd . to_timedelta ( marathon_2015_2017 [ '5K' ] ) 9 # marathon_2015_2017['10K'] = pd.to_timedelta(marathon_2015_2017['10K']) 10 # marathon_2015_2017['15K'] = pd.to_timedelta(marathon_2015_2017['15K']) /opt/homebrew/Caskroom/miniforge/base/envs/DV/lib/python3.8/site-packages/pandas/core/tools/timedeltas.py in to_timedelta (arg, unit, errors) 122 return arg 123 elif isinstance ( arg , ABCSeries ) : --> 124 values = _convert_listlike ( arg . _values , unit = unit , errors = errors ) 125 return arg . _constructor ( values , index = arg . index , name = arg . name ) 126 elif isinstance ( arg , ABCIndex ) : /opt/homebrew/Caskroom/miniforge/base/envs/DV/lib/python3.8/site-packages/pandas/core/tools/timedeltas.py in _convert_listlike (arg, unit, errors, name) 171 172 try : --> 173 td64arr = sequence_to_td64ns ( arg , unit = unit , errors = errors , copy = False ) [ 0 ] 174 except ValueError : 175 if errors == "ignore" : /opt/homebrew/Caskroom/miniforge/base/envs/DV/lib/python3.8/site-packages/pandas/core/arrays/timedeltas.py in sequence_to_td64ns (data, copy, unit, errors) 989 if is_object_dtype ( data . dtype ) or is_string_dtype ( data . dtype ) : 990 # no need to make a copy, need to convert if string-dtyped --> 991 data = objects_to_td64ns ( data , unit = unit , errors = errors ) 992 copy = False 993 /opt/homebrew/Caskroom/miniforge/base/envs/DV/lib/python3.8/site-packages/pandas/core/arrays/timedeltas.py in objects_to_td64ns (data, unit, errors) 1098 values = np . array ( data , dtype = np . object_ , copy = False ) 1099 -> 1100 result = array_to_timedelta64 ( values , unit = unit , errors = errors ) 1101 return result . view ( "timedelta64[ns]" ) 1102 /opt/homebrew/Caskroom/miniforge/base/envs/DV/lib/python3.8/site-packages/pandas/_libs/tslibs/timedeltas.pyx in pandas._libs.tslibs.timedeltas.array_to_timedelta64 () /opt/homebrew/Caskroom/miniforge/base/envs/DV/lib/python3.8/site-packages/pandas/_libs/tslibs/timedeltas.pyx in pandas._libs.tslibs.timedeltas.array_to_timedelta64 () /opt/homebrew/Caskroom/miniforge/base/envs/DV/lib/python3.8/site-packages/pandas/_libs/tslibs/timedeltas.pyx in pandas._libs.tslibs.timedeltas.convert_to_timedelta64 () /opt/homebrew/Caskroom/miniforge/base/envs/DV/lib/python3.8/site-packages/pandas/_libs/tslibs/timedeltas.pyx in pandas._libs.tslibs.timedeltas.parse_timedelta_string () ValueError : symbols w/o a number
========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] service와 controller의 역할에 대한 질문이 있습니다. 강의를 듣고 활용해던 도중 의문점이 생겼습니다. 한참 찾아봤는데 아직도 모르겠어서 질문드립니다. 저의 기존 코드에서는 어떤 컨트롤러의 post 요청에서 A,B,C 엔티티가 반드시 순서대로 생성된후 저장되어야 합니다. (참조관계 떄문에 그렇습니다) 기존에 저는 컨트롤러에서 A 엔티티 생성 -> AService.createA() 한 후 B, C도 동일한 과정을 거칩니다. 이러니까 컨트롤러가 서비스의 역할을 해버린다고 생각했습니다. 그래서 컨트롤러는 그냥 dto를 넘겨주고 서비스에서 위의 작업을 하려했습니다. 그랬더니 몇가지 문제가 생겼습니다. 1. service에서 repository만을 사용하면 코드 중복이 심함(create 할때 복잡한 중복검증 로직이 있는대, 그것까지 전부 다시 해야함) 2. service에서 service를 주입받아서 하자니 순환참조, 나말고 코드 이해도 낮은 다른사람이 손대면 실수할 가능성 높음 등등의 문제가 생김 그래서 그냥 원래대로 냅두려니 controller가 너무 크고 service가 하는게 그냥 repository로 요청 보내기인 경우가 대부분임 그래서 질문은 1. 적절한 방법이 뭘까요? 2. 복잡하고 큰 규모의 서버 코드를 보고싶은데 좋은 예시를 어디서 찾을수 있을까요? 3. 제가 해결방법으로 여러 service를 주입받아서 사용만하는 service를 만들어서 컨트롤러에 있던 코드를 거기로 옮겨서 컨트롤러에 비즈니스 로직이 생기는걸 없에고 순환참조, 코드 중복 등을 제거 해봤는데 이게 맞는건가요? 4. MSA와 상관있는 문제일까요?
response.sendRedirect( "/login?requestURL=" + requestURI) ; 이렇게 되어있는데 requestURL 이라는게 정확히 어떤것을 의미하는걸까요? 코딩을 할 때는 login?requestURL로 하면 원하는 페이지로 이동이 안되고 메인으로 이동되고 login?requestURI로 하면 원하는 페이지로 이동이 되네요.. sendRedirect를 할 때 requestURL로 하는것과 requestURI로 하는것에 차이가 있을까요? requestURL은 전체 주소를 가져오는것이고, requestURI는 도메인을 제외한 경로를 가져오는것으로 알고 있는데 갑자기 햇갈리네요.ㅠㅠ
안녕하세요 , 영한님! 강의잘듣고있습니다! 다름아니라 HandlerExceptionResolver modelAndView반환에 따른 정상흐름이 헷갈리는 부분이 있어서 질문남깁니다. HandlerExceptionResolver 를 구현하고, response.sendError(상태코드,에러메시지) return new ModelAndView(); 가 반환되면 정상흐름으로 설명주셨는데, 결국에 response,sendError를 사용하면 was에서 sendError 호출 기록을 확인하고, ErrorPage에 등록된 경로로 재요청하는 것이 아닌가요? 이를 정상흐름이라고 하는지 문의드립니다! 로그를 확인해보니 resolver에서 빈 modelAndView를 반환해도 errorPageController 에 재요청이 들어간것으로 보이는데 제가 잘못이해한것일까요 ㅠ 너무헷갈립니다!! 2021-11-18 20:39:48.287 INFO 15896 --- [nio-9090-exec-3] h.e.resolver.MyHandlerExceptionResolver : IllegalArgumentException resolver to 400 2021-11-18 20:39:48.288 INFO 15896 --- [nio-9090-exec-3] hello.exception.ErrorPageController : errorPage 404
session을 생성할 때 public void createSession (Object value , HttpServletResponse response){ //세션 id를 생성하고, 값을 세션에 저장 String sessionId = UUID. randomUUID ().toString() ; sessionStore .put(sessionId , value) ; //쿠키 생성 Cookie mySessionCookie = new Cookie( SESSION_COOKIE_NAME , sessionId) ; response.addCookie(mySessionCookie) ; } 이 소스에서는 sessionStore에 담아놓았는데.. 실제 운영을 할 때도 저렇게 ConcurrentHashMap에만 담아놓고 사용을 하나요?? 아니면 DB에 아이디와 세션값을 따로 저장을 할까요?? 어차피 새션값은 고유값이기는 하지만 일정 시간이 지나면 변경이 되는 값이라 굳이 DB에 테이블을 만들어서 저장을 하지는 않을 것 같은데 실제로 개발을 하고 운영을 할 때도 저렇게 ConcurrentHashMap에만 담아놓고 끝나는지, 아니면 DB까지 저장이 되는지 궁금합니다.
강의 정말 잘 듣고있습니다. intellij실행에서 막혔습니다. os는 mac이고, 강사님 따라서 intellij를 처음 다운로드해서 사용해봅니다. Error: Could not find or load main class Caused by: java.lang.ClassNotFoundException: 실행하면 이런에러가 발생하는데 이유가 무엇인가요 ? (main class 중에 제 프로젝트 내용이 나오지 않습니다.)
강의 내용중, SSR은 서버단에서 동적으로 HTML생성해서 타임리프를 통해서 만들어 웹브라우저로 뿌려주고, CSR은 자바스크립트 요청을 하여 서버단에서 관련 데이터들만 뿌려주고 웹 브라우저 자체에서 자바스크립트를 통해 HTML결과를 렌더링 한다고 인지하였습니다. 그런데 13:50정도의 내용에서는 SSR은 정적인 페이지, CSR은 동적인 페이지에서 사용된다고 하셨습니다. (여기서 질문입니다) 1. 제가 인지한 정적페이지는 정말 사용자마다의 정보없이 모든사용자에게 똑같이 내려줄법한 페이지를 의미하고 동적페이지는 사용자마다 정보다 다르기에 DB를 통해 가져와 동적으로 자용자마다 큰틀은 비슷하지만 정보표시 자체가 다르게 되어서 동적페이지라고 인지하였습니다. 맞나요? 2. 저같은 경우 UI를 비쥬얼 스튜디오 코드 같은곳에서 이쁘게 꾸민후 해당 프론트코드 와 인텔리제이에서 만든 백앤드 코드를 합치고싶은데 이럴땐 어떻게 연동을 해주나요? 3. 또한 저는 개인 프로젝트를 할때 리엑트 같은 CSR기술을 사용해보려고 하는데, 이럴땐 리엑트로 HTML렌더링 웹사이트를 만들어준후, 정보를 작업하는 백엔드쪽은 인텔리제이같은 툴을 이용하여 데이터를 만든후 제가 만든 리엑트 웹사이트에 뿌려주게 되는건가요? 방식이 궁금합니다.