월 24,200원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결스프링 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(); 로 세션 자체를 제거하는데 이 부분에서 서버가 로그인 한 사용자 중 어떤 사용자의 세션인지 어떻게 판단해서 제거하는 건지 궁금합니다.
- 미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
UserException
UserException을 따로 만들어서 설명해주시는 특별한 이유가 있나요??
- 미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
static final vs static
강의자료를 보면 ItemRepository 클래스에는 private static final Map<Long, Item> store = new HashMap<>(); 이렇게 static final 로 설정하고 MemberRepository 클래스에는 private static Map<Long,Member> store = new HashMap<>(); final이 없는 static으로만 설정했는데 두 방식을 굳이 final 있고없게 설정한 이유가 따로 있을까요??
- 해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
th:with 지역변수
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]th:with 를 이용해 지역변수를 선언할 때는 스코프 안에서만 동작하는데 한개의 스코프 안에서는 한개의 지역변수만 사용할 수 있나요 ? 아래처럼 2개의 값이 저장되있는 리스트를 받아서 2개의 지역변수를 사용하고 싶을 때는 어떻게 해야하나요 ?<div th:with="first=${users[0]}" th:with="second=${users[1]}"> <p>처음 사람의 이름은 <span th:text="${first.username}"></span></p> </div> <p>두번째 사람의 이름은 <span th:text="${second.username}"></span></p> </div> </body>
- 미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
request.getSession 과 sessionStore
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]제가 이해한 바로는request.getSesison 을 통해 얻는 HttpSession 은SessionManager 와 비교하면 createSession 동작이 아니라 sessionStore 와 같은 개념의 저장소를 호출하는 것 같고,HttpSession 의 setAttribute 동작이 createSession 의 sessionStore.put 과 같은것이며request.getSesison 를 통해 null 이 아닌 session 이 처음 만들어질 때, response 에 어떤 클라이언트의 sessionStore(HttpSession) 인지 구분하는 id 가 쿠키로 담기는 것 같은데이렇게 이해하는게 맞을까요?
- 미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
특정 파일을 넣는 경우 Whitelabel Error가 뜨는 이유가 궁금합니다
파일 업로드 예제를 진행하던 와중에.pdf 파일이나 동일하지만 사이즈가 작은 스크린샷 .png 까지는 정상적으로 업로드 되는데 올려드린 다음과 같은 파일을 업로드 시도하는 경우 whitelabel error 페이지가 뜨면서 업로드가 정상적으로 실행이 되지 않습니다 해당 파일의 메타데이터는 다음과 같은데.... 2023-08-23 17:00:14.790 ERROR 9800 --- [nio-8080-exec-2] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.web.multipart.MaxUploadSizeExceededException: Maximum upload size exceeded; nested exception is java.lang.IllegalStateException: org.apache.tomcat.util.http.fileupload.impl.FileSizeLimitExceededException: The field file exceeds its maximum permitted size of 1048576 bytes.] with root cause 다음과 같은 이유였네요 생각보다 스프링이 기본적으로 허용하는 사이즈가 작은가봅니다 혹시라도 다른분이 도움되실까 싶어 남겨놓겠습니다
- 미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
ISP와 DefaultConversionService의 연관성
DefaultConversionService 가 왜 ISP 원칙에 연관되어있는지 잘 이해가 가지 않아 질문드립니다. 결론적으로 ISP의 경우 인터페이스 분리 원칙, 클라이언트가 자신이 이용하지 않는 메서드에 의존하지 말아야한다인데DefaultConversionService의 경우 사용과 등록을 모두 사용하고 있습니다, 따라서 두 가지 기능을 모두 사용하게 되는데 결국 두개 다 사용하게 되면 애초에 인터페이스를 분할할 필요가 없게 되는것이 아닌지 궁금합니다. 두 개를 분리함으로써 얻게되는 이득에 대해서 다시 한번만 설명이 가능하실지 궁금합니다 ㅠㅠ 감사합니다!
- 미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
자바 17은 어떻게 프로젝트를 진행해야 하나요
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.이런 문구가 떠서 그런데요 그래서java17로 모든 파일의 내용을 복사해서 새로운 프로젝트를 만든 다음에 java17로 진행해야 할지,아니면 자바11 해야 되는지 고민입니다. 근데 자바 17에서 자바 11로 저번에 하려다가 실패해고, 이 파일에만 자바 17로 실행하는 방법이 없어서 어떻게 해야 할지 모르겠네요 ㅠㅠ
- 미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
fragment 조각 css적용문제..
[질문 내용]index.html위치templates/index.htmlfragment 조각 위치 template/template/fragment/header.htmlcss위치 resources/static/css/header.css , index.csstemplate/template/fragment의 파일을 th:insert로 삽입하는것 까진 성공했는데요. 삽입할 fragment조각의 header부분에 css가 적용되지 않습니다.index.html의 경우 css가 적용이 됐는데, insert할 대상인 header.html만 css가 적용되지 않는 이유가 궁금합니다.답변 부탁드립니다.. 감사합니다.
- 미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
어그리거트 질문
안녕하세요. 개인프로젝트를 하면서 질문이 생겨 올립니다. 데이터베이스에게시글테이블과 첨부파일테이블이 있다면두 개는 각각 다른 어그리거트로 놓는게 좋을까요? (게시글 수정과 첨부파일 추가는) 게시글을 쓴 사람뿐만 아니라 권한이 있는 누구나 할 수 있게 구현할 예정입니다. 예를 들어, jira와 비슷하게 구현하려고 합니다.
- 해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
제대로 한게 맞는건가요?
@Transactional @Override public void updatePassword(String UUID, PasswordUpdateDto passwordUpdateDto) { User user = userRepository.findByUuid(UUID).orElseThrow(() -> new IllegalArgumentException("UUID정보 없음 = " + UUID)); user.hashPassword(passwordUpdateDto.getPassword()); }이게 서비스 코드인데 여기서 예외가 터지면 컨트롤러로 넘어가서 catch (IllegalArgumentException ex) { throw ex } 을 해서 처리하는게 맞게 하는건가요? @PutMapping("/user/update-password/{UUID}") public ResponseEntity<String> updatePassword(@PathVariable String UUID, @RequestBody PasswordUpdateInfo passwordUpdateInfo) { try { ModelMapper modelMapper = new ModelMapper(); PasswordUpdateDto passwordUpdateDto = modelMapper.map(passwordUpdateInfo,PasswordUpdateDto.class); userService.updatePassword(UUID,passwordUpdateDto); return ResponseEntity.ok("Password updated successfully"); } catch (IllegalArgumentException ex) { throw ex; } } @Slf4j @RestControllerAdvice(annotations = RestController.class) public class ExceptionController { @ExceptionHandler public ResponseEntity<ErrorResult> userExHandle(IllegalArgumentException e) { ErrorResult errorResult = new ErrorResult("USER-NOT-FIND", e.getMessage()); return new ResponseEntity<>(errorResult, HttpStatus.BAD_REQUEST); } } 포스트맨 쓰니까 일단 뜨긴뜨닙다