월 24,200원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
argumentResolver를 사용하여 인터셉터 대체
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요 강의 수강중 궁금증이 생겨 글 남깁니다. 강의 마지막에 @Login을 만들어 주어 로그인 시 처리를 간단하게 해주셨습니다. 이를 보고 든 궁금증이 그렇다면 인터셉터의 역할도 이것으로 대체를 해주어도 되는것일까요? 컨트롤러에 있는 메서드들에 @Login을 달아주면 비로그인 상태로 '/items'로 접근하면 이를 redirect정보를 담고 똑같이 사용해주면 되는것일까요? 제가 생각한 차이로는 인터셉터의 preHandle의 경우 컨트롤러를 호출조차 안하게 하는 점이 있는 것 같습니다. 둘을 구분하여 사용해야 한다면 어느 경우인지 궁금합니다.
- 미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
서블릿 필터 -인증 체크 강의 중 로그인 오류 시 리다이렉트 url
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요 수업 중 궁금점이 생겨 질문 남깁니다. 필터로 확인하여 로그인중이 아닐시 로그인 화면으로 넘어왔습니다.이후 여기서 로그인 에러가 났을 경우 @PostMapping("/login") public String loginV4(@Validated @ModelAttribute LoginForm form, BindingResult bindingResult, @RequestParam(defaultValue = "/") String redirectURL, HttpServletRequest request) { if (bindingResult.hasErrors()) { return "login/loginForm"; } Member loginMember = loginService.login(form.getLoginId(), form.getPassword()); if (loginMember == null) { bindingResult.reject("loginFail", "아이디 또는 비밀번호가 맞지 않습니다."); return "login/loginForm"; } //로그인 성공 처리 //세션이 있으면 있는 세션 반환, 없으면 신규 세션을 생성 HttpSession session = request.getSession(); //세션에 로그인 회원 정보 보관 session.setAttribute(SessionConst.LOGIN_MEMBER, loginMember); return "redirect:" + redirectURL; } 맨 윗줄에 bindingResult.hasErrors()로 인해 "login/loginForm"으로 이동되는데 이때 redirectURL은 유지가 됩니다. 이 이유를 오류가 있을 시 url을 새로 받는 것이 아니라 또는 redirect가 아닌 return으로 view만 바꿔주었기에 그런 것이라고 이해하는게 맞을까요?
- 해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
th:field 에서 id 가 override 되지 않는 문제
강의 내용을 조금 테스트 하던 중name 과 value 는 input tag 에 미리 정의되어있든 정의되어있지 않든 th:field 에서 의도한 대로 나오지만id 는 미리 정의되어있는경우 field 가 override 하고 있지 않아보입니다. 원래 이런건가요 아님 새로 바뀐건가요?버전은 spring boot, spring-boot-starter-tymeleaf, spring-boot-starter-web 전부 2.4.4 이고 내용대로 미리 전달받은 프로젝트로 실행했습니다.
- 미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
thymeleaf 에서 스프링 부트3.0 이상일때 request 꺼내기
@GetMapping("/basic-objects") public String basicObjects(HttpSession session) { ... }위 컨트롤러 작성하는 부분입니다.관련된 html 파일은 basic-objects.html 인데, ${#session} 으로 세션을 꺼내고 ${session} 으로도 세션을 꺼내네요.컨트롤러에서 파라미터로 호출하면 자동으로 모델에 담아서 뷰단으로 넘겨주기 때문에 기본으로 제공하는 #session 과 파라미터로 호출한 session 둘다 꺼낼 수 있는걸로 보입니다.그런데 강의문서에 "스프링 부트 3.0 이상이라면 다음과 같이 작성하자." 라고 써있고 컨트롤러에서 HttpServletRequest.. 리퀘스트와 리스폰스 그리고 서블릿 컨테이너를 Model 에 addAttribute 로 넣어 뷰단에 넘겨줍니다.// 스프링 부트 3.0 이상 @GetMapping("/basic-objects") public String basicObjects(Model model, HttpServletRequest request, HttpServletResponse response, HttpSession session) { session.setAttribute("sessionData", "Hello Session"); model.addAttribute("request", request); model.addAttribute("response", response); model.addAttribute("servletContext", request.getServletContext()); return "basic/basic-objects"; }리퀘스트와 리스폰스는 컨트롤러 메서드에서 파라미터로 호출했으니 Model 에 넣어서 넘겨줄 필요 없는거 아닌가요?
- 미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
HandlerExceptionResolver not working
이렇게 했는데 localhost:8080/api/members/bad 경로로 GET요청을 보냈는데 status가 계속 500이에요.error도 "internal Server Error"로 나와요
- 미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
강의 노트 앱
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요. 혹시 강의 노트를 정리하신 맥북의 어플 이름이 뭔지 알 수 있을까요?언뜻 보기엔 노션같은데 다른 점도 많은 것 같아, 궁금합니다.
- 미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
로그인이 성공한 뒤 세션이 이미 존재하는 경우가 있나요?
//로그인 성공 처리 //세션이 있으면 있는 세션 반환, 없으면 신규 세션 생성 HttpSession session = request.getSession();세션이 있으면 있는 세션을 반환한다고 하셨는데처음 로그인을 하는데 이미 세션이 존재 할 수가 있나요??항상 신규 세션을 생성 하는거 아닌가요??
- 미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
th:object 사용시 @Modelattribute
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요 수업 듣던 중 궁금증이 생겨서 질문드립니다.@GetMapping("/login") public String loginForm(@ModelAttribute("loginForm") LoginForm loginForm) { return "login/loginForm"; }해당 코드에서 loginForm을 model에 담아서 th:object를 사용하게 하려는 코드로 이해했습니다.기존에 form강의에서는@GetMapping("/login") public String loginForm(Model model) { model.addAttribute("loginForm",new LoginForm()); return "login/loginForm"; }생성자로 객체를 만들어서 model에 담아줬던 것으로 기억합니다.@ModelAttribute가 model.addAttribute를 해주는것까지는 알겠는데 new LoginForm()과 같이 빈 객체를 생성해주는 역할까지 하는것일까요?
- 미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
HttpSession의 JSESSIONID와 name 차이
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]HttpSession 사용시 아래와 같이Cookie:JSESSIONID=5B78E23B513F50164D6FDD8C97B0AD05쿠키 이름은 JESSIONID이고 값은 랜덤 값인데세션 설정시 아래의 코드에서HttpSession session = request.getSession(); //세션에 로그인 회원 정보 보관 session.setAttribute(SessionConst.LOGIN_MEMBER, loginMember);쿠키 이름은 JESSIONID이고 그 쿠기 이름으로 쿠키 값은 랜덤값이고, 세션 저장소에 저장되는Key인 sessionId는 랜덤 값이고 Value는 loginMember인걸로 이해가 되는데SessionConst.LOGIN_MEMBER는 어디에 쓰이는name 인가요?간단히 쿠키 이름, 쿠키 값, 세션 ID, 세션 값 등등에서setAttribute 메서드에 쓰이는 name은 어디에 쓰이는 무엇인지 이해가 안갑니다.
- 미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
생성자를 이용해서 파라미터로 넘어온 객체 값 넘기기
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]해당 강의 5분 40초 경에 영한님이 ItemSaveForm객체를 save 메서드에 파라미터로 넘길때 잠깐 생성자를 이용해서 넘기는법도 언급 하셨는데로직이 너무 궁금합니다어떻게하면되는지 머리를 굴려봐도 잘 모르겠어요짧게나마 알려주실수 있으실까요?
- 미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
수정시 상품의 수량 검증 질문이요
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.그룹을 사용해서 수정 폼은 수량의 제한을 없도록 설정했잖아요? 수정할때 상품의 수량 필드는 Integer형인데도 불구하고 10억 이하인 작은값은 처리가 되는데 큰 값을 파라미터로 보내면 왜 Typemismatch 처리하는지 궁금합니다변수가 참조하는 메모리주소 에 큰 값을 담지 못해서 인가요?
- 미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
[[...]] 기능에 대해서
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 네2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 네3. 질문 잘하기 메뉴얼을 읽어보셨나요? 네 [질문 내용]여기에 질문 내용을 남겨주세요. 질문: 타임리프의 [[...]] 문법은 정적파일로, 오픈하면 어떤식으로 표시 되나요??예를들면 랜더링이 되지않아서 [[${user,name}]] 이런식으로 그냥 html에 찍힌 결과가 나오게 되나요?
- 미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
예외처리
좋은 강의 감사합니다.강의에서 알려주신대로, @ControllerAdvice 사용해서 예외를 처리하고 있습니다. 예외를 처리하면서 궁금한 것이 각 컨트롤러마다 예외 상황이 달라서 전역적으로 사용하는 것보다 컨트롤러마다 사용하는 것이 예외 상황에 따라 처리하는 것이 더 좋다고 판단이 드는 데 이러한 방식이 맞는 것인가요??
- 미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
필터 적용시 에러?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.12분에 미인증시 http://localhost:8080/items 하면 로그인부분으로 가야하는데 가지 않고 localhost에서 리디렉션한 횟수가 너무 많습니다. 라고 나옵니다. 오타 있나 코드 다시 봐도 모르겠더라고요 ㅠ
- 미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
동시세션제어 관련 질문이 있습니다!!
안녕하세요. 영한님 강의를 들으며 스프링을 공부하고 있는 학생입니다!!mvc 2편 로그인 처리 관련 부분을 듣다가 (HttpSession을 이용하는 부분)궁금한 것이 떠올라서서로 다른 브라우저 두 개를 키고 같은 사용자 계정으로 로그인을 해보았는데요,서로 다른 세션이 생성되는 것을 보고이런 식이면 같은 사용자에 대해 세션들이 굉장히 많이 생성될 수 있을테니깐 공격당하기 쉽겠다라는 생각이 들었습니다.그래서 구글링을 해보았는데요, 동시세션제어 전략들에 대해서 알게되었고그를 사용하기 위해 Spring Security를 사용한다는 것을 알게되었습니다.그래서 검색을 통해 알게 된 정보를 바탕으로 아래와 같이 SecurityConfig.java 파일을 만들어서 작성하였는데요.@Configuration @EnableWebSecurity public class SecurityConfig { @Bean public SecurityFilterChain filterChain(HttpSecurity http) throws Exception{ http.sessionManagement() .maximumSessions(1) .maxSessionsPreventsLogin(true); return http.build(); } }제가 기대한 것과 다르게 동시세션제어가 이루어지지 않았습니다...검색을 한참을 해보았는데 마땅한 정보를 얻지 못하여 이렇게 질문 드립니다!! 어떻게 해야 동시세션제어 전략을 적용할 수 있을지 답변해 주시면 정말 감사하겠습니다!
- 미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
WebConfig 구조질문
아래 코드와 같이 webconfig 에 대한 코드를 치고 봤더니 3번째 메서드 logFilter()는 @Bean을 붙여주어서 이 주석을 해제하면 웹설정이 동작하는건 이해가 가는데 첫번째 두번째 메서드는 WebMvcConfigurer 인터페이스의 메서드들을 오버라이딩해서 구현하고 @bean을 안붙였는데 웹 설정이 어떻게 적용이 되는지 궁금합니다.@Configuration public class WebConfig implements WebMvcConfigurer { @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new LogInterceptor()).order(1).addPathPatterns("/**").excludePathPatterns("/css/**","*.ico","/error-page/**") ; //오류 페이지 경로 제외 } @Override public void extendHandlerExceptionResolvers(List<HandlerExceptionResolver> resolvers) { resolvers.add(new MyHandlerExceptionResolver()); } //@Bean public FilterRegistrationBean logFilter(){ FilterRegistrationBean<Filter> filterFilterRegistrationBean = new FilterRegistrationBean<>(); filterFilterRegistrationBean.setFilter(new LogFilter()); filterFilterRegistrationBean.setOrder(1); filterFilterRegistrationBean.addUrlPatterns("/*"); filterFilterRegistrationBean.setDispatcherTypes(DispatcherType.REQUEST,DispatcherType.ERROR); return filterFilterRegistrationBean; }
- 해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
session 객체를 thymeleaf 에서 어떻게 꺼낼 수 있죠?
@GetMapping("/basic-objects") public String basicObjects(HttpSession session) { ... }위 컨트롤러 작성하는 부분입니다.관련된 html 파일은 basic-objects 인데, ${#session} 으로 세션을 꺼내고 ${session} 으로도 세션을 꺼내네요.이게 가물가물한데 컨트롤러 메서드에서 파라미터로 호출하면 자동으로 모델에 넣어주기 때문에 thymeleaf 에서 ${session} 을 꺼낼 수 있는거죠?
- 해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
${item.itemName}에 질문이 있습니다.
SpringEL강의에서 이해한 바로는 ${item.itemName}은itemName필드의 Getter를 호출해서 그 값을 받아오는걸로 이해했는데 강의에서 th:field="${item.itemName}"을 했을 때 id 와 name값이 "itemName"인지 이해가 안됩니다.
- 미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
@GetMapping에 경로 입력 시에 사용되는 '/'
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]안녕하세요 질문이 있어서 글 남겨요.BasicController에서 @GetMapping의 경로를 입력해줄 때 @GetMapping("/variable")와@Getmapping("text-basic")으로 이 둘은 '/'의 유무로 차이점이 생기는데 '/'를 붙이는 것과 안 붙이는 것의 차이를 알 수 있을까요?
- 미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
로그인 처리에서 세션과 관련하여 질문 있습니다.
10만명의 사용자가 로그인하면 10만개의 세션이 생성된다고 하셨는데 서버에서 어떤 사용자의 세션인지 어떻게 판단해서 가져오는 건가요?로그아웃 시 session.invalidate(); 로 세션 자체를 제거하는데 이 부분에서 서버가 로그인 한 사용자 중 어떤 사용자의 세션인지 어떻게 판단해서 제거하는 건지 궁금합니다.