월 16,940원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
default method 구현부가 어디 있는지 궁금합니다.
자바 8 기본 문법에 관한 거라서 질문하기 꺼려지긴 합니다만, 달리 질문할 데가 없어서 질문드립니다.강의에서 Filter, HandleInterceptor 인터페이스를 구현함으로 서블릿 필터와 스프링 인터셉터 기능을 사용할 수 있음을 배웠는데요. 각 인터페이스의 default method들은 이미 구현이 되어 있기 때문에 따로 구현을 해주지 않아도 되는 건 이미 알고 있었습니다.근데, 제가 알기로는 인터페이스의 default 키워드를 붙이려면 구현부가 꼭 있어야 하는 걸로 아는데, 해당 인터페이스들의 소스 코드를 까보면 구현부는 따로 없는 것 같습니다. 구현부는 대체 어디 있는 걸까요?
- 미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
상품종류와 지역 방식 차이
상품 종류는 이넘을,지역은 컨트롤러에서 생성(?)을,이렇게 다른 방식을 적용하는 이유가 있나요? 혹 체크박스와 라디오의 차이인건지..
- 미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
파일 다운로드 후 Redirect
예제로 구현하는 파일 업로드, 다운로드 에서 파일 다운로드 할때 다음과 같이 ReponseEntity를 return해서 진행했었습니다.return ResponseEntity.ok().header(HttpHeaders.CONTENT_DISPOSITION, contentDisposition).body(resource);그런데 다운로드 후 다른 uri로 redirect를 하려면 어떻게 해야하나요? 구글링을 해보니 다운로드 후 redirect는 할 수 없다는데 만약 redirect되게 하고 싶다면 어떻게 구현해야할까요?
- 해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
getOriginalFilename null check
public String convertedFile(@RequestParam MultipartFile attachFile) throws IOException { if (attachFile.isEmpty()) { return null; } String originalFilename = attachFile.getOriginalFilename(); String ext = extractExt(originalFilename); }위처럼 MultipartFile를 isEmpty로 체크하고 getOriginalFilename로 originalFilename을 가져온다음 originalFilename을 extractExt 함수의 argument로 넣어려고하는데 null을 check하라고 나옵니다. 정확히는 아래처럼 null이 나올 수 있다고 뜨네요.isEmpty로 위에서 한 번 체크하면 안뜨는 걸로 알고 있는데 뜨는 이유가 뭘까요
- 미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
교재 내 instanceof 없이 캐스팅
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.@Override public void validate(Object target, Errors errors) { Item item = (Item) target; ValidationUtils.rejectIfEmptyOrWhitespace(errors, "itemName", "required")... 여기서 Item item = (Item) target; 하는데target instanceof Item 이 없는 이유를 알 수 있을까요?
- 미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
AddPathPattern 경로 세팅에서..?
========================================[질문 내용]안녕하세요.인터셉터 conifg 파일에서 addPathPattern()함수내 인터셉터 대상이되는 경로를 세팅할때 질문있습니다. ^^;예를들어/*/abc.do 와/**/abc.do 의 경로세팅을 한다고했을때위 두예시에서 차이점이 있을까요?즉, 경로 중간에 *이 한개있을때와 2개있을때차이점이 궁금합니다. 찾아봐도 잘 안나오는것 같아서 질문드립니다. (_ _)
- 미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
국제화 null 기준
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 질문이기보다는 발견한거 찾아낸거라..혹시 컴퓨터 기본 언어가 영어로 세팅되신 분들이라면해당 테스트는 무조건 실패하는거 같습니다locale 이 null 이 나게 되면그리고 이 getDefault() 를 파고들면initDefault가 나오고 initDefault를 보면 message.properties 로 가는것 없이 바로 props = privilegedGetProperties로 가는데 이 privilegedGetProperties 는 System.getProperties() 를 실행...애초에 locale = null 일때에는 시스템에서 가져와버리게 설계가 된 거 같습니다...java - Spring MessageSource seems to ignore property fallbackToSystemLocale - Stack Overflow해당 stackoverflow 를 보더라도 locale = null 일때spring.messages.fallback-to-system-locale=false쓰이는게 아니라고 되있기도 합니다.. 즉 저 fallback-to -system locale 은 locale = null 을 제외한 상황에서 Locale 에 해당하는 파일을 못 찾을 시.. 가 맞는거 같네요.. 아마 null일 때에는spring.messages.use-code-as-default-message를 변경해야 할 거 같습니다.... 시스템 언어 영어이신 분들스프링 정규 docs : Common Application Properties (spring.io) ctrl + f 로 검색저도 그냥 디버거 따라가다가 찾은거라 개인적인 의견을 말씀을 드리는 거라 누가 대신 확인을 좀 해주셨으면.....
- 미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
웹브라우저를 종료해도 쿠키 삭제가 되지 않습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요. 쿠키 사용 강의 듣다가 해결이 되지 않아서 질문 남겨요. 12:10부터 로그인된 상태로 프로그램은 종료하지 않고 웹브라우저만 종료하고 다시 웹브라우저를 키면 쿠키가 삭제되고 로그아웃이 된 화면이 뜹니다. 그런데 똑같이 완전히 웹브라우저를 종료하고 다시 키면 로그인이 되고 쿠키가 그대로 남아있는 상태로 화면이 뜨네요.강의 자료에 있는 코드로 다 바꿔봐도 해결이 안 되네요.로그아웃 기능까지 다 구현이 된 상태입니다. Expires / Max-Age에도 Session으로 표시되어 있습니다. LoginControllerHomeController웹 브라우저를 완전히 종료시켰는데 이런 현상이 생기는건 코드상의 문제인가요?아니면 크롬에서는 다른 방식으로 종료해야하는건가요??감사합니다.
- 미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
prev('regions') 궁금증
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.class Item 아래 List<String> locations라고 해놓은 상태에```<div> <div> 등록 지역</div> <!-- regions is a map locations belong to Item. did it this way to explicitly show difference --> <div class="form-check form-check-inline" th:each="region : ${regions}"> <input type="checkbox" th:field="*{locations}" th:value="${region.key}" class="form-check-input"> <label th:for="${#ids.prev('regions')}" th:text="${region.value}" class="form-check-label">서울</label> </div></div>```로 해두면 위와 같은 이유로 에러가 납니다public final class IdentifierSequences {private final Map<String,Integer> idCounts;를 열어보면가 나오는데 여기서 바이트 환산 기준 [locations] 를 담는데.get(regions) 를 해서 null 이 나오기 때문입니다.여기서 궁금한 거는 저 idcounts가 어떻게 제가 Item 클래스 안에서 List<String> locations 를 했는지 알 수 있는지 입니다저 context 구하는 코드 원리가 너무 탐이 나네요.
- 해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
수업 자료에 관한 질문
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]안녕하세요! 덕분에 강의 너무 잘 듣고 있습니다!다름이 아니라 '서블릿 예외 처리 - 시작' 강의 수강중 12:00쯤에 보이는 수업 자료에서 HTTP Status 404 - Bad Request 부분이 Not Found로 변경되어야 하지 않나요? 제가 다운 받은(약 1달전) 자료도 영상과 동일합니다.
- 미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
rejectValue() , reject()에대한 질문 있습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]rejectValue(): fieldError 에만 사용하고 reject(): objectError에만 사용하는게 맞나요?
- 미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
질문
질문
- 미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
@ExceptionHandler 메소드를 private으로 선언했을 때에는 어떻게 호출이 가능한 건가요?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]강의를 수강하며 이것저것 시도해보던 중, 컨트롤러 내부의 @ExceptionHandler 메소드를 private으로 선언해도 정상적으로 처리되는걸 확인했습니다. 뭔가 이상하다 싶어서 혹시나 하고 컨트롤러 내의 @RequestMapping 접근제한자도 private으로 바꿔봤는데요, 역시 정상적으로 동작합니다. 무언가 리플렉션이나 프록시같은 기술이 엮여있을 것 같기는 한데 자바라는 언어의 룰을 갈아엎는 느낌이라 좀 혼란스럽네요.질문을 정리하면 이렇습니다. 스프링이 어노테이션을 기반으로 메소드를 등록한 후에 상황에 맞게 호출하는 것인데, 어떻게 private 메소드를 객체 외부에서 호출할 수 있는 것인가요?@ExceptionHandler 어노테이션이 붙은 메소드를 private으로 선언해도 정상적으로 작동하도록 둔 것이 일종의 버그인지, 아니면 Spring 프레임워크에서 의도하는 사용 방식인지 궁금합니다.
- 해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
HttpSession에서 쿠키를 Response에 넣어주기
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요, SessionManager와 HttpSession을 비교하다 의문점이 들어 질문 드립니다.SessionManager를 구현할 땐 Cookie를 생성한 후 이를 response에 넣주도록 했습니다. 그래서 이를 사용할 때 파라미터로 response를 넣어줬구요.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); }그런데 서블릿에서 구현한 HttpSession을 사용했을 땐 Session을 생성한 후HttpSession session = request.getSession(true);setAttribute로 값을 넣어준 후 (이 때 쿠키가 생성된다고 이해했습니다.)session.setAttribute(SessionConst.LOGIN_MEMBER, loginMember);따로 response에 쿠키를 넣어주지 않았는데도 클라이언트에 쿠키가 저장되는것 같습니다. HttpSession이 이를 가능하게 해주는 걸까요?
- 해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
enumerate에 대한 질문
enumerate로 저장한 필드는 어떻게 string으로 바꾸는 건가요? enum으로 WAIT('대기'), REMOVE('삭제')이 있을때 화면에서는 대기, 삭제 등 한글로 출력하고 싶으면 responseDTO에서 변환해주는 게 맞을까요?
- 미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
@ControllerAdvice의 예외처리 범위
안녕하세요먼저 강사님께서 보여주신 예외처리 흐름 이미지를 보고 ExceptionHandlerrExceptionResolver 는 handler를 통해 올라온 예외만 처리할 수 있다고 이해하였습니다.(호출 주체가 DispatcherServlet이기 때문)질문은 아래와 같습니다.등록된 ExceptionResolver들이가 handler에서 올라온 예외에 대해서만 처리 가능한지? 아니면 DispatcherServlet내부에서 발생하는 에러 전체에 대해 포괄적으로 처리해주는지 @ControllerAdvice에 선언된 @ExceptionHandler도 ExceptionHandlerrExceptionResolver가 처리하는가?controller에 선언된 @ExceptionHandler에 대한 설명은 해주셨는데, @ControllerAdvice에 선언된 @ExceptionHandler의 처리 흐름은 설명을 안 해주셨네요. @ControllerAdvice의 처리 흐름은 고급편 AOP부분을 이해해야할까요? 1번이 맞다면 결국 DispatcherServlet내에서 발생하지 않은 예외는 @ControllerAdvice에 선언된 @ExceptionHandler가 실행되지 않는가?ex) DispatcherServlet이 호출되기 전인 Spring Security filter단계에서 Service레이어 코드를 호출하고 예외가 발생한 경우-> 이 경우 논리대로라면 예외가 발생하더라도 ExceptionHandler가 호출되지 않을 것 같은데 맞나요?
- 미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
요청 데이터 DTO 관리 방법 질문드립니다.
안녕하세요. 프로젝트 진행 중 궁금한 부분이 생겨 질문 드립니다.클라이언트 요청 데이터를 @RequestBody 등으로 DTO 클래스에 매핑하여 사용할 때 DTO 클래스를 각 요청 유형( 생성, 수정, 삭제, 기타, ... )마다 핏하게 생성하는 게 좋은지, 하나의 DTO 클래스에 입력 받은 후 필요한 것만 뽑아 사용하는 것이 좋은지 질문 드립니다.저는 각 요청 유형마다 핏하게 생성한 후 알맞은 유효성 검사를 적용하는 것이 코드 파악 등 유지보수 관점에서 좋다 생각했습니다. 다만 다른 개발자 분께서 요청마다 DTO를 생성하면 클래스가 너무 많아진다는 의견을 주셔서 고민입니다. 저도 느꼈던 부분이기도 했구요.영한님 혹은 다른 서포터즈 분들은 어떤 방법을 선호하시나요? 좋은 방법이 있다면 추천부탁드립니다.
- 미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
사용자가 유효하지 않은 enum 값 유효성 검사
사용자가 유효하지 않은 enum 값을 넘겨줬을 때에 대해서는 어떻게 유효성 검사를 하나요?
- 미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
메세지가 null로 나옵니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.UserException 코드를 처리 중입니다.상태코드, 코드도 정상적으로 나오는데 메세지가 사용자 오류가 아닌 null로 출력됩니다. 혹여 잘못 코딩해서 오류가 난 것은 아닌가 복사 붙이기를 통해 다시 서버를 구동해서 확인해봐도 똑같이 사용자 오류가 아닌 null로 출력됩니다. 어디를 수정해야 할까요??
- 해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
${#temporals.monthName(localDateTime)}
${#temporals.monthName(localDateTime)} = 5월${#temporals.monthNameShort(localDateTime)} = 5월결과 값이 같은데 무슨 차이가 있는건가요?