월 24,200원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
질문말고 요청입니다!
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]수업이 주로 타임리프로 진행이되어 백엔드단에서 model이나 modelattribute를 많이사용하시는데요! 요새는 주로 템플릿엔진대신 spa를 많이사용하는걸고알고있습니다 혹시 강의에 중간중간 그럴경우에 어떤파라미터를 써야하는지 아니면 다른 방법을얗야하는지 혹은 별도 섹션 강의로 만들어주시면 좋은것 같습니다!
- 미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
이렇게 쓰면 안되나요??
@Configuration public class WebConfig implements WebMvcConfigurer { @Autowired private FilterRegistrationBean<LogFilter> filterFilterRegistrationBean; @Bean public FilterRegistrationBean addFilter() { // FilterRegistrationBean<Filter> filterFilterRegistrationBean = new FilterRegistrationBean<>(); filterFilterRegistrationBean.setFilter(new LogFilter()); filterFilterRegistrationBean.addUrlPatterns("/*"); filterFilterRegistrationBean.setOrder(1); return filterFilterRegistrationBean; } }
- 미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
메시지 파일 관리를 백엔드에서 하나요?
[질문 내용]메시지를 관리하는 거를 백엔드 단에서 파일 하나 만들어서 관리하는 거 같은데 이걸 백엔드랑 프론트로 나눠서 개발을 하는 경우에도 메시지 관리를 백엔드단에서 하게 되나요? 뭔가 프론트에서 할 거 같아서 질문드립니다.
- 미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
Errors 관련 타입캐스팅에 관해 질문드립니다
@Override public void validate(Object target, Errors errors) { Item item = (Item) target; // 검증 로직 ValidationUtils.rejectIfEmptyOrWhitespace(errors, "itemName", "required"); // 간단한 공백이나 값이 안들어왔을때 if (item.getPrice() == null || item.getPrice() < 1000 || item.getPrice() > 1000000) { errors.rejectValue("price", "range", new Object[]{1000,1000000},null); } if (item.getQuantity() == null || item.getQuantity() >= 9999) { errors.rejectValue("quantity", "max", new Object[]{9999},null); } // 특정 필드가 아닌 복합 룰 검증 if (item.getPrice() != null && item.getQuantity() != null) { int resultPrice = item.getPrice() * item.getQuantity(); if (resultPrice < 10000) { errors.reject("totalPriceMin", new Object[]{10000,resultPrice}, null); } } } }강의에서는 errors를 사용하였는데이 부분을 아래와 같이 BindingResult로 타입캐스팅 후 사용하여도 되는걸까요?target의 경우에는 타입캐스팅을 해주었는데 errors도 같은 맥락으로 가능한가 싶어 질문드립니다. 반대로 target을 그대로 가져와 사용하여도 문제 없을까요? @Override public void validate(Object target, Errors errors) { Item item = (Item) target; BindingResult bindingResult = (BindingResult) errors;
- 미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
form프로젝트 import에러 해결했어요! 도움되시라고 작성해보았습니다~
안녕하세요.오늘 수업자료 다운로드 후 form-start파일을 form으로 프로젝트명 변경 하고 에러나는 부분때문에 2시간을 막연하게 보내고 구글링 + 인프런에 있는 수강자분들의 질문과 공식서포터즈 님들의 해결방법 작성해놓은것들 그대로 셋팅해봐도 안되었던 문제를 해결했어요.해결방법 공유를 위해 작성했습니다! (질문아니예요ㅠ)저는 설정하면서 총 3개의 문제를 겪음 ㅠ제가 겪고 해결한 부분이 도움될 분들이 계실거라 생각하고 몇자 적어봅니다. (사실 좀 길어요ㅠ 그래도 제가 버린시간을 다른분들께선 알차게 쓰시길 바라는 마음으로 작성중) [진행 및 문제를 확인]프로젝트를 import 한후 build.gradle 파일을 열어서 gradle 7버전 이상, java는 17로 사용하는 것으로 설정완료.이후 윈도우에서 인텔리제이를 사용하고 있어서 setting 접속한 후 해당설정 화면에서 gradle버전을 PC에 7.4버전이 설치되어 있는 경로로 설정, 그리고 자바도 17버전으로 설정을 해줍니다. refrash하는데 에러...저는 gardle 7.4-all버전을 사용하려고 설정을 모두 gradle설정하는부분은 7.4버전대로 설정했는데 뜬금없이 console에 나타난 에러메세지는 gradle을 gradle-6.8.2-bin.zip 로 설정되어있어서 안된다고 나오더라구요.에러메세지 : Unsupported Java.Your build is currently configured to use Java 17.0.4 and Gradle 6.8.2. [원인]분명히 setting > gradle 메뉴에가서 gradle을 7버전 사용한다고 설정했는데...뭐가 문제지? 싶어서 구글링해도 뭐해도 다 해봤던 설정만 나와서 답답하더라구요.그래서 그냥 우선 gradle관련 설정파일을 하나하나 확인해봐야겠다는 마음으로 gradle설정파일을 확인하는데 그중 gardle-wrapper.properties 파일에 문제가 있음을 확인사실 설정관련 정보는 저도 잘 몰라요.. 그런데 확실하게 알수 있었던건 distributionUrl=https\://services.gradle.org/distributions/gradle-6.8.2-bin.zip이 부분으로 인해 프로젝트가 gradle을 다른버전을 사용하도록 설정되어 있는걸 알게됨. [문제1 해결방법]1. form > gradle > wrapper > gradle-wrapper.properties 파일을 클릭해서 오픈2. distributionUrl에 있는 설정정보를 gradle을 7버전 이상으로 설정값을 변경그런데 저는 다른정보도 변경해줘야 할것 같아서 이전에 타임리프 프로젝트에서 설정되어있는 gradle-wrapper.properties 파일의 정보를 그대로 복붙했어요.(저는 여기서 gradle-8.5-bin.zip으로 설정되어있어서 그냥 그거 설정함)distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists 3. gradle refresh [문제2 또 에러 (자바9버전 이상에서 제공되지 않는 어노테이션 문제)그런데 refresh 한 후 여기까지 하고 또 에러가 납니다.프로젝트에 자바9버전이상에서 그냥 사용할 수 없는 어노테이션이 있나봐요. 영한님이 이전 servlet강의에서 말씀해주셨던 자바8인가? 9이상부터 제공되지 않는 어노테이션들이 자바 17버전에서 제공되지 않는 문제..사용하도록 설정해야되니까 관련 코드를 찾아서 dependencies에 추가해주는걸로 해결했어요.에러메세지 : path~~~~\dev\05_스프링mvc2-백엔드웹개발활용기술\form\src\main\java\hello\itemservice\TestDataInit.java:8: error: package javax.annotation does not existimport javax.annotation.PostConstruct;^ [문제2 해결방법]1.build.gradle 파일열기2. dependencies에 아래의 코드 추가implementation group: 'javax.annotation', name: 'javax.annotation-api', version: '1.3.2'3. gradle refresh [문제3 또 에러]문제1, 문제2 까지 겪고 해결방법대로 설정완료 후 잘되나 싶더만 아래의 에러메세지가 나타납니다.프로젝트가 빌드될때 java11이 사용되도록 설정이 되어있어서 발생된것 같아 17로 변경해줍니다.에러메세지 : * What went wrong: Execution failed for task ':ItemServiceApplication.main()'.> Process 'command 'C:\Program Files\Java\jdk-11.0.17\bin\java.exe'' finished with non-zero exit value 1 [문제3 해결방법]1. 우측상단 select Run/debug configuration 박스클릭2. Edit Configurations 클릭3. Run/Debug Configurations 설정 창에서 java version 7로 변경 이후 프로젝트가 잘 구동되어 강의 듣을수 있게 되었습니다 ㅋㅋㅋ 으..말주변 없어서 이거 작성하느냐고 1시간 걸림 ㅠㅠ 설명이랑 같이 작성하느냐고 두서없을수 있으나..한가지라도 도움되시길 바라면서 마침! ps. 프로젝트의 설정파일 정보가 변경되었으면 좋겠습니다!프로젝트를 다운받고 안되는 부분이 초보입장에선 동공에 지진이... 좋은강의 늘 감사합니다:)
- 해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
스프링 예외처리-필터 강의 질문
안녕하세요 localhost:8080/error-ex 호출로 임의로 RuntimeException 발생 시 에러 처리 로그 관련해서 질문 남깁니다.https://ballistic-uncle-12b.notion.site/eb9d5a1ee6e74d6db70c0658241aa8b1?pvs=4java.lang.RuntimeException: 예외발생 !!! ~~ 로그가 두 번 남겨져서 Exception이 2번 발생하는 지 확인하려고, Exception 발생이 두 번 남겨지는 지 확인하기 위해 “Error occurs” 는 로그 메시지를 추가했으나 위 로그 내용과 같이 Exception은 한 번만 던져졌습니다.흐름 상 최초 요청 시 /error-ex 를 통해 was -> 필터 -> 서블릿 -> 컨트롤러/error-ex: (예외발생)* was** <- 필터 <- 서블릿 <- 컨트롤러해당 Exception에 매핑된 요청 url 탐색(/error-page/500)탐색된 url(/error-page/500)로 다시 요청 was -> 필터 -> 서블릿 -> 컨트롤러/error-page/500 was <- 필터 <- 서블릿 <- 컨트롤러위 요청 흐름 상이나 개인적으로 추가한 “Error occurs” 로그에서도 확인한 것처럼 Exception은 * 시점에 1회 발생합니다.시점에서, java RuntimeException이라 java main thread의 최상단 함수(main)에서 해당 Exception에 대한 로그가 찍힌 것으로 생각되는데, RuntimeException에 관한 로그는 왜 2번 적히는지 궁금합니다.아울러 main 함수가 ** 시점에 존재하는 게 맞는지도 추가로 궁금하여서 질문 남깁니다.감사합니다.
- 해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
이미지 서버에 질문하나 드려도 될까요
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]제가 지금 토이프로젝트로 게시판을 만드려고 하는데,div 태그에 contenteditable 속성을 넣어서 수정 가능하게 만들고,이미지 붙여넣기 하면 img 붙여넣기 되면서 바이너리? base64~~ 하면서 img 태그의 src로 붙는데,다른 게시판 웹사이트 보니까, okky나 tistory같은.붙여넣기 하면 바로 서버에 저장이 되는 모양이더라구요.그러니까, 붙여넣기 하면 https://자기사이트/경로/파일이름 이런식으로 되는 것 같아요.아마 프론트엔드 쪽에서 붙여넣기 하면 저 바이너리 파일 서버로 보내서 그 이미지 서버에서 임의의 이름 붙이고 그 주소 자체를 넘겨줘서 프론트엔드쪽에서 응답받으면 그걸 src로 쓰는 것 같은데, 제가 궁금한게, 그래서 붙여넣기 꾹 눌러서 연속으로 해봤거든요? 근데 모두 다른 이름으로 src에 부여되었어요. 그리고, 게시판 취소를 눌러도 그 url 복사했다가 들어가봐도 계속 들어가져요.근데 이러면 낭비가 될 수 있지 않나요? 만약 게시판 취소해버리면 그냥 서버에 이미지만 저장되고 그거와 링크된 게시물은 없게되잖아요.
- 미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
수업자료에 수정이 필요한 부분이 보여서 의견 드립니다.
프로젝트 생성시 Project Metadata 에 Java11로 설정하라고 작성되어 있는데요. Project MetadataGroup: helloArtifact: thymeleaf-basicName: thymeleaf-basicPackage name: hello.thymeleafPackaging: JarJava: 11 <<<<<<<<<<<<<이부분 현재 스프링부트 3버전대에서 17사용하라고 다른부분에는 작성되어 있는데 해당 부분에는 수정이 안되어있어서 수정이 필요할것 같아 의견드립니다 🙂 자칫하다 프로젝트 다시받아서 해야할 수 있어 번거로움이 있을 것 같아서요!좋은강의에 늘 감사드립니다 영한님
- 미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
th:field가 커맨드 객체가 없는경우
폼 안에서는 th:object로 꺼내오고 th:field="*{}"이런식으로 사용하는데 만약 폼이 아닌 그냥 쓸때는 어떻게 사용해야하나요
- 미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
ExceptionResolver 적용 우선순위 (스프링 내부 + 사용자 커스텀 구현체)
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]강의를 통해 스프링 부트가 기본으로 제공하는 ExceptionResolver 는 ExceptionHandlerExceptionResolver, ResponseStatusExceptionResolver, DefaultHandlerExceptionResolver 가 있는 것을 배웠는데요,그러면 수업 내용중 WebConfig 를 통해 등록한 아래 resolver 들까지 포함하면, 우선순위 높은 순으로 나열할 때 아래 순서가 되는 게 맞나요?1) ExceptionHandlerExceptionResolver2) ResponseStatusExceptionResolver3) DefaultHandlerExceptionResolver4) MyHandlerExceptionResolver5) UserHandlerExceptionResolver@Override public void extendHandlerExceptionResolvers(List<HandlerExceptionResolver> resolvers) { resolvers.add(new MyHandlerExceptionResolver()); resolvers.add(new UserHandlerExceptionResolver()); }
- 해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
afterCompletion에 대해
afterCompletion 메서드는 View가 렌더링되고 난 후에 실행되는 메서드라고 설명해주셨고, Controller에서 예외가 발생하면 afterCompletion 메서드의 예외 파라미터로 전달 된다고 하셨습니다.1. 그렇다면 Controller가 View가 아닌 JSON 등의 모델 데이터를 반환할 때는 afterCompletion 메서드가 실행 되지도 않고 Interceptor가 예외 정보도 전달 받을 수 없는건가요? 만약 맞다면, Controller에서 예외 처리 하는 것이 맞을까요? Controller에서 예외 처리해야하는 것과 afterCompletion에서 예외 처리해야하는 것의 차이는 뭔가요?
- 미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
코드를 그대로 따라했는데도 로그가 찍히지 않습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)네2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)네3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)네[질문 내용]여기에 질문 내용을 남겨주세요.서블릿 필터 - 요청로그 강의 듣고 있는데요.LogFilter.java와 WebConfig.java 를 강의내용과 똑같이 따라쳤는데도 로그가 나오지 않습니다...혹시나 놓친부분이 있나 싶어 pdf의 코드를 복사 붙여넣기 해봐도 똑같네요ㅠㅠ이전까지는 log.info가 잘 출력됐는데 왜이러는지 모르겠습니다... 도움 부탁드려요
- 미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
파라미터 받는 방법에 대하여
컨트롤러의 메서드에 파라미터로 VO나 도메인 객체의 경우ex) Item item만 적더라도 @ModelAttribute가 자동으로 붙기떄문에 생략해도 된다고 이해하였는데요 String이나 Integer의 경우 생략시 @RequestParam이 자동으로 붙으나 Map같은 경우에는 왜 @RequestParam을 강제로 붙여야지만 나오는지 혹시 아실까요?..
- 해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
두가지 질문이 있습니다.
hasText가 없는 이유와 대용량파일,동영상파일은 안올라가는 이유가뭔가요 ?톰캣 쪽에서 설정을 따로 해줘야하는건가요 ?
- 미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
spring 3.2.0 사용하시는 분들 중 converterEdit에서 컨버팅 안되시는 분
강의 10분 33초 쯤에 @PostMapping 'converterEdit' 호출 시 에러가 발생되서 혼자 해결해봤습니다.최근 스프링에서 2.x.x 버전을 지원 중단하여 3.2.0 사용 중인데요,여기서 제출 누르면 파라미터 바인딩에 실패해서 white label 페이지가 나오시는 분들은 컨트롤러 내 static class인 Form의 @Data를 아래처럼 바꿔보세요.@Getter @Setter @RequiredArgsConstructor static class Form { private IpPort ipPort; public Form(IpPort ipPort) { this.ipPort = ipPort; } }이렇게 하면 정상적으로 진행됩니다.
- 미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
localeReslover 구현해보는데 잘 안되시는 분들 ...
localeResolver를 빈 등록할 때 빈이름을 localeResolver 이걸로 주면 됩니다... 3시간동안 뻘짓하다가 .
- 미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
@Component 에 관한 질문
@Controller @RequestMapping("/basic") public class BasicController { @GetMapping("text-basic") public String textBasic(Model model){ model.addAttribute("data","Hello <b>Spring!</b>"); return "basic/text-basic"; } @GetMapping("text-unescaped") public String textUnescaped(Model model){ model.addAttribute("data","Hello <b>Spring!</b>"); return "basic/text-unescaped"; } @GetMapping("/variable") public String variable(Model model){ User userA = new User("userA", 10); User userB = new User("userB", 20); List<User> list = new ArrayList<>(); list.add(userA); list.add(userB); Map<String,User> map = new HashMap<>(); map.put("userA",userA); map.put("userB",userB); model.addAttribute("user",userA); model.addAttribute("users",list); model.addAttribute("userMap",map); return "basic/variable"; } @GetMapping("/basic-objects") public String basicObjects(HttpSession session ){ session.setAttribute("sessionData","Hello Session"); return "basic/basic-objects"; } @Component("helloBean") static class HelloBean { public String hello(String data){ return "Hello "+data; } } -> 왜 클래스로 따로 뺴주는지? public String hello(String data){ return "Hello "+data; } 이렇게 클래스내부에 메서드를 만들어서 사용하면되는거 아닌가요? 가 질문컨트롤러클래스에 hello메서드를 만들지 않고 따로 내부에 클래스를 만들어 주는 이유가 뭔가요?
- 미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
start.spring.io가 업데이트 되었는지 2.점대가 없는데 3.대로 해도 되너ㅏ요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.3점대는 자바 17부터 쓴다고 알고 있는데 다시 깔아서 해야 하나요?
- 미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
form data
여기서 누르면 여기로 오구그담에 뷰가 렌더링되는데요처음에 들어가면 저기 숫자 0이 계속 적혀있어요 ...아래는 html코드입니다<!DOCTYPE html> <html lang="ko" xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"> <title>form Page</title> </head> <body> <h3>form Page</h3> <form action="/" th:object="${person}" method="post"> <div> name : <input type="text" th:field="*{name}"> </div> <div> age : <input type="text" th:field="*{age}"> </div> </form> </body> </html>
- 해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
컨트롤러 멀티레코드 vo 받기 문의드립니다
(사진)