월 24,200원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
ArgumentResolver가 Interceptor를 대체할 수 있을까요??
ArgumentResolver가 Interceptor를 대체할 수 있을까요??프로젝트가 커지면 커질 수록 제외할 패턴이나 인증이 필요한 라우터 패턴을 webconfig에 입력해줘서 관리를 계속 해줘야하는데 관련 DTO를 만들어서 해당 dto가 붙어있으면 인증이 필요한 메소드라는 것을 나타내면 인터셉터가 없이 ArgumentResolver로 대체가 가능하지 않을까하는 생각이 들어서요 그래서 이런 인증 수행을 인터셉터가 아니라 리졸버 안에서 해도 무방하지 않을까 생각하는데 ArgumentResolver와 Interceptor가 지향하는 것이 다르기 때문에 그렇게 하면 안되는 것이가 궁금해서 질문드립니다.
- 미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
IntelliJ decompiled .class parameter name 이 달라보이는 이유
안녕하세요 강의 중에 IntelliJ 가 제공하는 파라미터 이름이 다르게 보여서 질문 드립니다.강의에서는 errorCode, 저는 s현재 인텔리제이 2023.3.2 Ultimate 사용 중 입니다.인텔리제이 자체에서 decompile 해주는거 같은데 혹시 다른 설정이 있는지 문의 드립니다.
- 해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
th:field 를 기재한 항목을 Javascript에서 document.getElement.. 하고 싶은 경우
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]document.getElementById나 document.getElementsByName을 쓰지 않을까 싶은데.. 혹시 다른게 있나요?
- 해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
인터셉터 권한 체크
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 수업을 따라 오면서 복습 차원으로 추가 기능들을 추가 하고 있습니다.사용자가 상품 등록/수정 화면을 요청하면 인터셉터에서 사용자가 어드민인지 아닌지를 체크하고 어드민이라면 정상적으로 요청을 수행하고, 어드민이 아닌 경우에는 response.sendError() 로 요청을 거절하도록 했는데요 이런 식으로 인터셉터에서 거절을 하고 난 뒤 컨트롤러에서도 또 한번 사용자를 체크하는게 좋을까요? 아니면 굳이 하지 않아도 괜찮을까요?
- 해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
new Item() 질문
model.addAttribute("item", "new Item())1.이 문장은 html 문서에서 th:Object를 활용하기 위해서 쓴건데 실질적으로 new Item() 기본생성자라 Item클래스안에 파라미터에는 아무런값도 없고 단지, 타임리프 문법을 쓰기위함이라고 이해했는데 맞을까요?
- 해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
스프링 서비스 테스트 코드에 대한 질문
서비스 계층의 클래스를 테스트하려고 준비하고 있습니다. mock이 너무 많으면 유지보수가 힘들어져서 MemoryRepository를 직접 구현해서 사용하라고 하던데@DataJpaTest 어노테이션으로 Repository객체의 mock을 대신해도 될까요?
- 해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
스프링부트가 아닌, 스프링 프레임워크일 경우 BasicErrorController
안녕하세요,스프링 부트일 경우, BasicErrorController 가 자동적으로 등록되어 사용된다고 하셨는데, 부트가 아닌 일반 스프링 프레임워크일 경우, BasicErrorController 와 비슷한 역할을 해주는 Controller 가 자동적으로 등록되지는 않는 것인지요?부트가 아닌 스프링 프레임워크에서는 개발자가 예외나 response.sendError(); 에 대해서 아무런 대비/대처 설정 (예와나 sendError 를 처리해주는 코드를 작성하지 않았을 경우) 을 해주지 않았을 경우에는 어떤 default 설정을 따라가는지 궁금합니다.스프링 부트일 경우,WebServerFactoryCustomizer<ConfigurableWebServerFactory> 를 구현한 클래스를 작성해서 ErrorPage를 지정해주고 있는데, 부트가 아닌 스프링 프레임워크에서는 어떻게 WebServerFactoryCustomizer<ConfigurableWebServerFactory> 를 구현한 것과 동일하게 custom 을 해줄 수 있는지 궁금합니다.감사합니다.
- 미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
인터셉트 호출안됨 로그에 파일 찍히지 않음
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]인터셉터가 호출이 안됩니다. log.infro 값들도 안찍히고 있어요
- 해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
타임리프에서 ENUM에 직접 접근할때
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]타임리프에서 스프링EL 문법을 사용하여 ENUM에 직접 접근할 수 있다고 했는데 그렇게 했을 때 폴더 구조가 노출됨으로써 생기는 보안문제는 없나요?
- 미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
pdf 파일 교재
pdf 파일 교재는 어디에 있는지요?
- 미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
안녕하세요 혹시 Spring Security 강의는 예정에 없을까요?
강의 항상 잘 보고 있습니다.많은 강의를 봤는데Spring Security 내용은 없더라구요혹시 예정된 강의는 있을까요?혼자 공부는 많이 했는데영한님의 강의로도 한번 더 공부해보고 싶네요!
- 미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
pdf 파일 교재 오타 있습니다
스프링 MVC 21. 타임리프 - 기본 기능.pdf 텍스트 - text, utext 의 /resources/templates/basic/text-unescape.html (unescape -> unescaped) d 가 빠져 있습니다 !!
- 미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
아이디 중복오류
안녕하세요 , 김영한 강사님! 혹시 , 아이디나 닉네임 혹은 비밀번호와 같은 유일성이 보장되어야 하는 필드는 중복 오류를 검사할때 DB 연동까지 필요한 검증인것이죠? 혹시 이런 검증은 DB 강의 부분에서 따로 강의에서 나오는 부분이 있는지 궁금합니다!
- 미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
타입에러-bindingResult
안녕하세요, 아래에 다른분께서 질문하신 내용의 답변을 토대로 다시 궁금증이 생겨 여쭙니다. 타입에러가 아닌 상태에서 바인딩이 된 상태에서 필드오류가 발생한다면 bindingResult 의 fieldError에 오류내용이 담기는것은 이해했습니다.만약 , 타입에러가 난다면 바인딩 이 안되는데, 이부분도validation 과 마찬가지로 스프링이 필드오류보다 먼저 binding result 에 오류값이 담기나요?
- 해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
SessionManagerTest @Slf4j 사용하면 안되나요?
너무 기초적인 질문인것 같아서요Test Case 작성시@Slf4j 로그 어노테이션을 이용하여 로그를 출력하고 싶은데error: cannot find symbol log.info("SessionManagerTest1={}", member);이런 오류가 발생하네요
- 해결됨스프링 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 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 2편 - 백엔드 웹 개발 활용 기술
HttpSession과 쿠키
안녕하세요 해당 강의를 듣고 복습하던 중 의문점이 생겨 질문 드립니다!getSession()이 세션이 있는 경우에는 해당 세션을 가져오고, 없는 경우에는 새로 생성한다고 하셨는데 세션이 있는지 없는지는 요청에 있는 쿠키의 JSESSIONID 값을 기준으로 판별하는 건가요? 만약 한 사용자가 로그아웃을 하지 않은 상태로 브라우저를 종료하고 다시 로그인을 수행하면, 쿠키가 삭제되어 이전의 JSESSIONID 값이 사라지게 되어서 getSession()이 해당 세션은 없다고 판단하고 새로운 세션을 생성하게 되나요? 타임아웃이 없다고 가정한다면, 세션 저장소에는 같은 사용자에 대한 세션 정보가 여러개 저장되는건가요?
- 미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
bindingREsult.hasErrors() 부분 재사용
if(bindingResult.hasErrors()) { log.info("errors = {}", bindingResult); //model.addAttribute("errors", errors); -> model로 넘겨주지않아도 bindingResult 자체로 자동으로 뷰에넘어간다. return "validation/v2/addForm"; }위 코드를 다시 addItemV4의 첫부분에 재사용하는 이유가 먼저 타입오류가 발생하면 밑의 가격 range 오류를 검증하지 않고 바로 "validation/v2/addForm" 뷰로 리턴하여 타입오류 메시지만(하나만) 출력하고 싶을때 이런식으로 하는거죠?