월 16,940원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 해결됨스프링 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 받기 문의드립니다
(사진)
- 미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
서버에서 진행한다는 뜻은 뭘까요?
검증을 서버에서 진행한다는게 인텔리제이에서 Validation 코드로 검증한다는것이 서버에서 진행한다는게 맞을까요?
- 미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
스프링 빈 등록
@Configuration static class HelloBean { @Bean public String helloBean(String msg){ return "hello "+msg; } } 이런식으로 등록하면 안되는 이유가 뭘까요??
- 해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
getSession
getSession()을 하게 되면 내부적으로 response에 쿠키를 넣어주나요??세션 생성 후 setAttribute를 하지 않으면 세션 저장소에는 key에 sessionId만 저장되어 있는 건가요? 즉 value는 없이 key만 존재하는 상황인가요?
- 해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
webDataBinder
ArgumentResolver가 파라미터를 만들 때 WebDataBinder에 존재하는 validator를 순차적으로 찾아서 적용시키는 건가요??
- 해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
file.dir 경로
[질문 내용]여기에 질문 내용을 남겨주세요.윈도우 사용자라 드라이브 명 포함 절대경로를 다 넣어주었구요.그런데 post로 잘 동작하는데 막상 파일에 가서 새로고침을 해보면 파일이 들어가있지 않습니다.다음 내용인 스프링으로 파일 업로드 해도 포스트로 잘 저장이 되었다고 나오지만 파일에 들어가보면 이미지가 없어요 ㅠㅠ