묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 프레임워크는 내 손에 [스프2탄]
33강 완강기준 list -> get -> list -> 페이지이동 오류 해결법
33강 완강기준이며 list에서 제목을 클릭하여 get(상세페이지) 이동후 뒤로가기를 눌러 list로 돌아와서 페이지 이동을 하면 다음페이지(list)가 아닌 get(상세페이지)가 나오는 현상이 발생했습니다.코드를 분석해보면 지금 상세보기 클릭을 누르면 pageFrm.attr("action","${cpath}/board/get");<-- 해당 코드를 통해 jsp내 적혀있는 pageFrm이란 form의 action에 ${cpath}/board/get <-- 해당 주소로 이동하기 때문에 get(상세페이지)가 나오게 됩니다.여기서 뒤로가기를 누르더라도 이미 jsp 상의 pageFrm이란 form의 action에는 ${cpath}/board/get <-- 이 주소가 적혀있으므로 새로고침을 하기전에 페이지 이동을 시도하면 list가 아닌 get(상세페이지)가 나오게 되는것입니다.해결방법은 간단합니다.ㄴ 페이지 번호를 눌렀을때 pageFrm이란 form의 액션에 list 주소가 들어가도록 추가로 js에서 처리해주면 됩니다. (아래 사진 참고하시면 됩니다.)
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
ResponseStatusException 에 대한 질문입니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]- 강의 자료 9.API 예외 처리 p20를 보면, @ResponseStatus를 사용할 경우, 조건에 따라 동적으로 변경하는 것이 어려워 ResponseStatusException을 사용한다고 나와 있는데,그럼, 아래처럼 작성할 수 있다는 말인가요?if(case == 1) {throw new ResponseStatusException(HttpStatus.NOT_FOUND, "error.bad", new IllegalArgumentException()); } else {throw new ResponseStatusException(HttpStatus.BAD_REQUEST, "error.bad", new BadRequestException()); }
-
해결됨스프링 프레임워크는 내 손에 [스프2탄]
제이쿼리 modify 수정하실 부분이 있습니다 : )
우선 강의 차수는 33강 수정과 삭제후 페이지 번호 유지하기 파트입니다.idx, title, content, writer가 리스트로 넘어갈때는 필요하지 않기 때문에 find()로 찾고 remove() 해주는 방식인데 formData.find("#idx") <--- 현재 id 선택자로 찾고있습니다. 강의 / github 둘다 확인해보시면 name만 지정하였기 때문에 formData.find("#idx")로는 찾을수가 없습니다.수정해주시겠지만 해당 글을 보는 다른 분들을 위해서 방안을 2가지 정도 적어보자면1. formData.find("#idx") <-- 여기서 id로 idx를 찾아주고 있으니 각 id,title,content,writer가 기입되어 있는 태그에 id를 작성해주시면 될듯합니다. 예시 -> <td><input type="text" class="form-control" id ="idx" name ="idx" value="${vo.idx}" readonly ="readonly"/></td>2. formData.find("#idx") <-- 현재는 id를 읽고 있는데 name을 읽을수 있게 변경하면 됩니다.예시 -> formData.find("input[name='idx']").remove();
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
HandlerExceptionResolver 에 대해 궁금한 점이 있습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]- 강의를 보면, 스프링이 제공하는 ExceptionResolver에 대해 나오는데, 그러면, 그 전에 HandlerExceptionResolver는 스프링이 제공하는게 아니라 서블릿에서 제공하는 건가요?
-
해결됨스프링 프레임워크는 내 손에 [스프2탄]
@Modelattribute와 Requestparam의 생략
강의를 듣다가 헷갈리는 부분이 생겨서 질의합니다..!!!1.68번 라인의 Board vo, Vriteria cri가 각각 @Modelattribute가 생략 처리가 된게 맞을까요? 2.93번 라인의 int idx는 @RequestParm이 생략처리가 된것인지 궁금합니다.감사합니다 : )
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
UserHandlerExceptionResolver에서 HTML 오류 화면 보여주는 로직에 대한 궁금증입니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]- UserHandlerExceptionResolver에서 예외 응답 코드가 500 -> 400으로 바뀌었으면 에러 페이지도 500.html이 아니라 400.html로 보여줘야되는거 아닌가 라는 생각이 드는데, 500.html으로 하신 특별한 이유가 있으신가요? 강의이므로, 편의상 있는 페이지 사용하신건가요?
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
BindingResult1에서 price가 @ModelAttribute에 Mapping이 되지 않습니다.
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]BindingResult1에서 price가 @ModelAttribute에 Mapping이 되지 않는 경우가 발생합니다. price = 1quantity = 20 이상의 값을 입력하면 아래와 같은 메시지가 발생합니다. Field error in object 'item' on field 'price': rejected value [null]; codes []; arguments []; default message [가격은 1,000 ~ 1,000,000원까지 허용합니다.] 그리고 결과적으로 GetMapping으로 이동한 addForm.html에서 price 값이 form-control에 나타나질 않습니다. 반면 console로 찍어보면 domain으로서의 item.price는 정상적으로 나옵니다. 즉, item.price 자체는 addForm에 전달이 되었습니다.그런데, id="price"인 form-control에만 나타나질 않는데, 그 이유가 궁금하고, 이게 정상적이지 않은 오류라는 어떻게 해결해야 할지 궁금합니다. --
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
exception 만드실 때, 모두 RuntimeException으로 만드셨는데, 그 이유가 궁금합니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]- exception 만드실 때, 모두 RuntimeException으로 만드셨는데, 그 이유가 궁금합니다.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
데이터 바인더와 타입 컨버터 차이
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]스프링 타입 컨버터 소개에서 @RequestParam, @ModelAttribute, @PathVariable 등 스프링이 중간에 타입 변환기를 사용해서 타입을 변환해 주었기 때문에 개발자가 편리하게 해당 타입을 바로 받을 수 있다고 하셨는데 여기에서 타입 변환기란 타입 컨버터를 말씀하시는건가요? 데이터 바인더와 타입컨버터가 하는 역할과 차이가 궁금합니다. 두 개가 헷갈리네요 ㅠㅠ
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
제가 생각하고 있는 동작과정 피드백을 부탁드립니다.
안녕하세요. 선생님 6장 마무리 하는 시점에서 강의와 스스로 DispatcherServlet 소스 코드를 분석하고 그중 핵심적인 것만 크게 정리해봤습니다. 그래서 분석한 내용이 올바른 내용인지, 확실히 하고 싶어서 질문을 드려봅니다!틀린 부분이 있다면 지적해주시면 정말 감사하겠습니다! 0. 스프링 부트 구동 시점에 스프링 컨테이너와 서블릿 컨테이너는 각각이 필요한 기본 빈들을 생성하고, 필요한 초기화 작업과 DI 작업을 수행 1. 클라이언트로부터 URL 호출 시, 서블릿 컨테이너가 request를 파싱하고, HttpServletRequest와 Response 객체를 생성 후, 파싱된 메세지를 HttpServletRequest에 전달함. 이후, 쓰레드가 DispatcherServlet 객체의 service()를 호출(service()는 실제로 부모 클래스에서 오버라이딩 되어 있고 그 내부에서 중요한 메서드인 doDispatch()가 호출됨) 2. 이후 DispatcherServlet은 미리 초기화 해둔 handlerMappings의 handlerMapping 구현 클래스를 순서대로 하나씩 꺼내와서 검사하는데, 1순위인 RequestMappingHandlerMapping 클래스의 조회 전략은 @Controller 클래스 중, 메서드 레벨에 @RequestMapping이 붙어 있고, request의 URL 정보를 토대로 일치하는지 검사. 있다면 해당 핸들러를 반환(컨트롤러) 하지만, 없다면 서블릿 예외를 던지고 애초에 @Controller 자체가 없다면 2순위로 검사 위임하지 않음 3. 해당 핸들러를 getHandlerAdapter()를 통해서 해당 핸들러를 지원하는 어댑터가 있다면 해당 어댑터를 반환하여 HandlerAdapter ha에 할당하고, 지원하는 어댑터가 없는 경우 서블릿 예외를 던짐 4. handlerAdapter의 handler()를 수행하는데 실제 컨트롤러 메서드를 호출하기 전에, 해당 메서드가 필요로 하는 매개변수 정보를 (@RequestBody인지, HttpEntity인지) ArgumentResolver에 제공하고, 각각에 특화된 Http메세지 컨버터를 사용해서 필요한 객체를 생성 5. handlerAdapter가 컨트롤러를 호출해서 로직 수행 6. 컨트롤러가 결과값을 반환 6-1. 메서드 레벨에 @ResponseBody가 붙어있다면 RetrunValueHandler가 HttpMessengerConverter를 이용해서 반환값을 응답 메세지 바디부에 실어서 ViewResolver등을 거치지 않고 즉시 요청 송신자에 반환 6-2. 위의 경우가 아니면, ReturnValueHandler는 반환 값의 타입에 따라 적절한 HttpMessengerConverter를 통해 응답 메세지를 생성 후, ViewResolver가 동작하는데 이는 View 객체를 생성하고 DispatcherServlet가 이를 이용하여 render()하고 최종적으로 클라이언트에게 반환. 감사합니다.
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
실무에서는 하나의 RestControllerAdvice로 처리하나요?
@ControllerAdvice("org.example.controllers")보통 일반적으로 쓸 때는 이거 정도를 해준다.보통 패키지를 지정해준다.강의 내용 중에 위와 같은 내용이 있었습니다.실무에서는 @RestControllerAdvice를 사용할 때 전역적으로 쓰지 않고 위와 같이 패키지를 지정해주는 방식이 일반적인가요?해당 방식이 일반적인 방식이 아니라, 선택이라면 어떤 것을 고려해서 선택해야 할까요? 그런데 API는 각 시스템 마다 응답의 모양도 다르고, 스펙도 모두 다르다. 예외 상황에 단순히 오류 화면을 보여주는 것이 아니라, 예외에 따라서 각각 다른 데이터를 출력해야 할 수도 있다교안에는 위와 같이 나와 있었습니다.저는 다른 도메인 서비스에서 같은 예외가 발생해도 API 스펙이 다를 수 있겠다 생각했습니다.그래서 특정 도메인의 컨트롤러들의 예외가 발생하는 것을 잡아줄 각각의 @RestControllerAdvice를 만들고, 해당 오류에 대한 API를 따로 만들어서 반환해야겠다고 생각했습니다.하지만 인터넷에 다른 글들을 찾아보니 전역적으로 처리해야 한다는 글들이 꽤 있더라구요...어떤 방식이 실무에서 일반적인 방식인가요?
-
미해결스프링 부트 웹 개발 입문 - 따라하며 배우기
등록메뉴창에 등록 버튼을 누르면 에러가뜹니다.
등록때도 수정때도 계속 이런데 그대로 잘따라했는데 발생하는 이유가 먼가요?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
EOFException
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 아니오. (있지만 해결x)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]강의와 같이 logging.level.org.apache.coyote.http11=debug 를 적용하고 나면 헤더 정보는 잘 나오지만 헤더 정보 아래에 EOF 오류 내용이 같이 나옵니다.다른 질문에서 답변하신 내용(다른글 해결법)을 따라해봐도 똑같습니다.application.proterties에서 경고가 뜨는데 이거와 관련된 사항인지는 모르겠습니다. 아래 사진은 로그에서 뜬 에러부분입니다.[전체 로그]오후 4:46:17: Executing ':ServletApplication.main()'...> Task :compileJava UP-TO-DATE> Task :processResources UP-TO-DATE> Task :classes UP-TO-DATE> Task :ServletApplication.main() . ____ _ /\\ / ___'_ __ (_)_ _ \ \ \ \( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v2.7.11)2023-04-29 16:46:19.611 INFO 13608 --- [ main] hello.servlet.ServletApplication : Starting ServletApplication using Java 11.0.19 on 960691 with PID 13608 (C:\Users\CKIRUser\IdeaProjects\Spring_MVC_part1\build\classes\java\main started by CKIRUser in C:\Users\CKIRUser\IdeaProjects\Spring_MVC_part1)2023-04-29 16:46:19.615 INFO 13608 --- [ main] hello.servlet.ServletApplication : No active profile set, falling back to 1 default profile: "default"2023-04-29 16:46:21.028 INFO 13608 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (http)2023-04-29 16:46:21.049 INFO 13608 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]2023-04-29 16:46:21.049 INFO 13608 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.74]2023-04-29 16:46:21.243 INFO 13608 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext2023-04-29 16:46:21.244 INFO 13608 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 1511 ms2023-04-29 16:46:21.602 INFO 13608 --- [ main] o.s.b.a.w.s.WelcomePageHandlerMapping : Adding welcome page: ServletContext resource [/index.html]2023-04-29 16:46:21.919 INFO 13608 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path ''2023-04-29 16:46:21.932 INFO 13608 --- [ main] hello.servlet.ServletApplication : Started ServletApplication in 3.094 seconds (JVM running for 3.585)2023-04-29 16:46:26.629 DEBUG 13608 --- [nio-8080-exec-1] o.a.coyote.http11.Http11InputBuffer : Before fill(): parsingHeader: [true], parsingRequestLine: [true], parsingRequestLinePhase: [0], parsingRequestLineStart: [0], byteBuffer.position(): [0], byteBuffer.limit(): [0], end: [0]2023-04-29 16:46:26.630 DEBUG 13608 --- [nio-8080-exec-1] o.a.coyote.http11.Http11InputBuffer : Received [GET /basic.html HTTP/1.1Host: localhost:8080Connection: keep-aliveCache-Control: max-age=0sec-ch-ua: " Not A;Brand";v="99", "Chromium";v="98", "Microsoft Edge";v="98"sec-ch-ua-mobile: ?0sec-ch-ua-platform: "Windows"Upgrade-Insecure-Requests: 1User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36 Edg/98.0.1108.56Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9Sec-Fetch-Site: same-originSec-Fetch-Mode: navigateSec-Fetch-User: ?1Sec-Fetch-Dest: documentReferer: http://localhost:8080/Accept-Encoding: gzip, deflate, brAccept-Language: ko,en;q=0.9,en-US;q=0.8If-Modified-Since: Sat, 29 Apr 2023 07:31:04 GMT]2023-04-29 16:46:26.672 INFO 13608 --- [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet'2023-04-29 16:46:26.672 INFO 13608 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'2023-04-29 16:46:26.674 INFO 13608 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 2 ms2023-04-29 16:46:26.720 DEBUG 13608 --- [nio-8080-exec-1] o.a.coyote.http11.Http11InputBuffer : Before fill(): parsingHeader: [true], parsingRequestLine: [true], parsingRequestLinePhase: [0], parsingRequestLineStart: [0], byteBuffer.position(): [0], byteBuffer.limit(): [0], end: [803]2023-04-29 16:46:26.721 DEBUG 13608 --- [nio-8080-exec-1] o.a.coyote.http11.Http11InputBuffer : Received []2023-04-29 16:46:26.723 DEBUG 13608 --- [nio-8080-exec-1] o.apache.coyote.http11.Http11Processor : Socket: [org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper@5fab773e:org.apache.tomcat.util.net.NioChannel@643c15bf:java.nio.channels.SocketChannel[connected local=/0:0:0:0:0:0:0:1:8080 remote=/0:0:0:0:0:0:0:1:60731]], Status in: [OPEN_READ], State out: [OPEN]2023-04-29 16:46:31.060 DEBUG 13608 --- [nio-8080-exec-2] o.a.coyote.http11.Http11InputBuffer : Before fill(): parsingHeader: [true], parsingRequestLine: [true], parsingRequestLinePhase: [0], parsingRequestLineStart: [0], byteBuffer.position(): [0], byteBuffer.limit(): [0], end: [803]2023-04-29 16:46:31.062 DEBUG 13608 --- [nio-8080-exec-3] o.a.coyote.http11.Http11InputBuffer : Before fill(): parsingHeader: [true], parsingRequestLine: [true], parsingRequestLinePhase: [0], parsingRequestLineStart: [0], byteBuffer.position(): [0], byteBuffer.limit(): [0], end: [0]2023-04-29 16:46:31.069 DEBUG 13608 --- [nio-8080-exec-3] o.apache.coyote.http11.Http11Processor : Error parsing HTTP request headerjava.io.EOFException: null at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.fillReadBuffer(NioEndpoint.java:1347) ~[tomcat-embed-core-9.0.74.jar:9.0.74] at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.read(NioEndpoint.java:1234) ~[tomcat-embed-core-9.0.74.jar:9.0.74] at org.apache.coyote.http11.Http11InputBuffer.fill(Http11InputBuffer.java:785) ~[tomcat-embed-core-9.0.74.jar:9.0.74] at org.apache.coyote.http11.Http11InputBuffer.parseRequestLine(Http11InputBuffer.java:348) ~[tomcat-embed-core-9.0.74.jar:9.0.74] at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:262) ~[tomcat-embed-core-9.0.74.jar:9.0.74] at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) ~[tomcat-embed-core-9.0.74.jar:9.0.74] at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:926) ~[tomcat-embed-core-9.0.74.jar:9.0.74] at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1791) ~[tomcat-embed-core-9.0.74.jar:9.0.74] at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) ~[tomcat-embed-core-9.0.74.jar:9.0.74] at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) ~[tomcat-embed-core-9.0.74.jar:9.0.74] at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[tomcat-embed-core-9.0.74.jar:9.0.74] at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.74.jar:9.0.74] at java.base/java.lang.Thread.run(Thread.java:829) ~[na:na]2023-04-29 16:46:31.070 DEBUG 13608 --- [nio-8080-exec-2] o.apache.coyote.http11.Http11Processor : Error parsing HTTP request headerjava.io.EOFException: null at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.fillReadBuffer(NioEndpoint.java:1347) ~[tomcat-embed-core-9.0.74.jar:9.0.74] at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.read(NioEndpoint.java:1234) ~[tomcat-embed-core-9.0.74.jar:9.0.74] at org.apache.coyote.http11.Http11InputBuffer.fill(Http11InputBuffer.java:785) ~[tomcat-embed-core-9.0.74.jar:9.0.74] at org.apache.coyote.http11.Http11InputBuffer.parseRequestLine(Http11InputBuffer.java:348) ~[tomcat-embed-core-9.0.74.jar:9.0.74] at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:262) ~[tomcat-embed-core-9.0.74.jar:9.0.74] at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) ~[tomcat-embed-core-9.0.74.jar:9.0.74] at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:926) ~[tomcat-embed-core-9.0.74.jar:9.0.74] at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1791) ~[tomcat-embed-core-9.0.74.jar:9.0.74] at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) ~[tomcat-embed-core-9.0.74.jar:9.0.74] at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) ~[tomcat-embed-core-9.0.74.jar:9.0.74] at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[tomcat-embed-core-9.0.74.jar:9.0.74] at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.74.jar:9.0.74] at java.base/java.lang.Thread.run(Thread.java:829) ~[na:na]2023-04-29 16:46:31.071 DEBUG 13608 --- [nio-8080-exec-3] o.apache.coyote.http11.Http11Processor : Error state [CLOSE_CONNECTION_NOW] reported while processing requestjava.io.EOFException: null at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.fillReadBuffer(NioEndpoint.java:1347) ~[tomcat-embed-core-9.0.74.jar:9.0.74] at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.read(NioEndpoint.java:1234) ~[tomcat-embed-core-9.0.74.jar:9.0.74] at org.apache.coyote.http11.Http11InputBuffer.fill(Http11InputBuffer.java:785) ~[tomcat-embed-core-9.0.74.jar:9.0.74] at org.apache.coyote.http11.Http11InputBuffer.parseRequestLine(Http11InputBuffer.java:348) ~[tomcat-embed-core-9.0.74.jar:9.0.74] at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:262) ~[tomcat-embed-core-9.0.74.jar:9.0.74] at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) ~[tomcat-embed-core-9.0.74.jar:9.0.74] at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:926) ~[tomcat-embed-core-9.0.74.jar:9.0.74] at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1791) ~[tomcat-embed-core-9.0.74.jar:9.0.74] at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) ~[tomcat-embed-core-9.0.74.jar:9.0.74] at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) ~[tomcat-embed-core-9.0.74.jar:9.0.74] at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[tomcat-embed-core-9.0.74.jar:9.0.74] at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.74.jar:9.0.74] at java.base/java.lang.Thread.run(Thread.java:829) ~[na:na]2023-04-29 16:46:31.071 DEBUG 13608 --- [nio-8080-exec-3] o.apache.coyote.http11.Http11Processor : Socket: [org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper@5fab773e:org.apache.tomcat.util.net.NioChannel@643c15bf:java.nio.channels.SocketChannel[connected local=/0:0:0:0:0:0:0:1:8080 remote=/0:0:0:0:0:0:0:1:60731]], Status in: [OPEN_READ], State out: [CLOSED]2023-04-29 16:46:31.071 DEBUG 13608 --- [nio-8080-exec-2] o.apache.coyote.http11.Http11Processor : Error state [CLOSE_CONNECTION_NOW] reported while processing requestjava.io.EOFException: null at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.fillReadBuffer(NioEndpoint.java:1347) ~[tomcat-embed-core-9.0.74.jar:9.0.74] at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.read(NioEndpoint.java:1234) ~[tomcat-embed-core-9.0.74.jar:9.0.74] at org.apache.coyote.http11.Http11InputBuffer.fill(Http11InputBuffer.java:785) ~[tomcat-embed-core-9.0.74.jar:9.0.74] at org.apache.coyote.http11.Http11InputBuffer.parseRequestLine(Http11InputBuffer.java:348) ~[tomcat-embed-core-9.0.74.jar:9.0.74] at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:262) ~[tomcat-embed-core-9.0.74.jar:9.0.74] at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) ~[tomcat-embed-core-9.0.74.jar:9.0.74] at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:926) ~[tomcat-embed-core-9.0.74.jar:9.0.74] at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1791) ~[tomcat-embed-core-9.0.74.jar:9.0.74] at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) ~[tomcat-embed-core-9.0.74.jar:9.0.74] at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) ~[tomcat-embed-core-9.0.74.jar:9.0.74] at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[tomcat-embed-core-9.0.74.jar:9.0.74] at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.74.jar:9.0.74] at java.base/java.lang.Thread.run(Thread.java:829) ~[na:na]2023-04-29 16:46:31.072 DEBUG 13608 --- [nio-8080-exec-2] o.apache.coyote.http11.Http11Processor : Socket: [org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper@63a885d8:org.apache.tomcat.util.net.NioChannel@2b29aa4:java.nio.channels.SocketChannel[connected local=/0:0:0:0:0:0:0:1:8080 remote=/0:0:0:0:0:0:0:1:60730]], Status in: [OPEN_READ], State out: [CLOSED]
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
Formatter 질문
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요 Formatter 관련 질문이 있어 글을 남깁니다. 오버라이드 한 parse 와 print를 보면 파라메터에 Locale 이 있고 이걸 출력해보면 ko 로 출력되는데 요청헤더의 Accept-Language 의 값에 따라 달라지는 건가요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
회원 가입 시 화이트 라벨
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]선생님과 동일하게 소스 입력하고, 셋팅도 제대로 했는데 'http://localhost:8080/members/new' 에서 등록버튼 누르면 화이트라벨이 뜹니다ㅠ 다른 사람들거 보고 동일한 위치에 확인해봤는데 오타도 없는거 같아요! 한번 확인 부탁드립니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
테스트입니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
index.html 질문
제가 thymeleaf를 복습하려고 타임리프 기본 기능 만들어 놓은 것을 실행시켰는데 왜 자꾸 index페이지가 다른 게 뜰까요..ㅜㅜ
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
form태그 url과 button태그 url
th:onclick="|location.href='@{/basic/items/{itemId}(itemId=${item.id})}'|"이 button 태그를 form태그가 더 큰 범위에서 둘러싸고 있습니다. <form action="item.html" th:action method="post">th:action으로 현재 페이지로 url이 설정돼있고 http 메서드 방식은 post 방식인데 1. editForm에서 취소 버튼을 누르면 <button> 태그에서 지정한 url로 이동하는 이유가 세부적으로 지정해줬기 때문인가요??? 취소 버튼을 눌렀을 때 post 방식으로 이동하는 것인가요?2번이 맞다면 보내는 데이터가 없으니까 Get방식이어야 하는 것 아닌가요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
hello-String api 실행화면 소스 코드
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]localhost:8080/hello-String?name=spring!! hello-String api 부분 실행 페이지에서 소스코드를 열어보면 html 코드가 나오는데 body 부분에 hellspring이 들어가긴 하는데 제가 window를 써서 이렇게 화면이 뜨는게 맞는건지 모르겠네요
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
실무에서도 id를 따로 두나요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.강의에서는 사용자가 입력하는 아이디와 서버에서 직접 생성하는 아이디가 있는데 실무에서도 서버에서 생성하는 아이디를 같이 두나요? 데이터베이스에 저장도 같이 하는지 궁금합니다.