게시글
질문&답변
숫자입력 시 int 형 범위가 넘어가는 경우
기본적으로 HTML Form 입력은 String으로 전송이 됩니다.즉, int 범위 내인 10000을 입력하더라도 일단 String으로 전송이 되고, 서버에서 이를 int로 바인딩하는 것입니다. 이때는 바인딩에 성공하겠죠.따라서 1111111111(11개)도 일단 String으로 전송이 되고, 서버에서 이를 int로 바인딩 시도하지만 실패하기 때문에 서버는 "숫자가 아니다" 라고 판단합니다. 이때 질문자님의 의문은 "int 범위는 아니어도 long 범위 내라서 숫자를 입력한 것은 맞지 않나?" 인데요. 여기서 앞서 말씀드린 것처럼서버는 (HTML Form 입력의 경우) 10000이나, 111111...이나, "abc"나, ... -> 결국 문자열로 받는다.받은 문자열을 int 타입으로 변환 성공하면 "숫자가 입력된 것이구나" 라고 판단할 뿐입니다.서버 측에서 애초에 int 타입으로 설정했으므로, '숫자'의 정의가 '십진수들의 조합(크기 상관 x)'가 아니라 'int형 범위 내의 십진수들의 조합'인 것이지요. 따라서 질문자님 의도대로 동작하게끔 하기 위해서는 서버 측에서의 '숫자'에 대한 정의를 int에서 long으로 변환해주면 됩니다.즉, hello.itemservice.domain.item 경로의 Item 파일의 코드를 다음과 같이 변경하면 됩니다.(추가로 생성자나 price에 대한 계산 결과를 변수로 받는 부분도 모두 long으로 변경해줘야 됩니다.)package hello.itemservice.domain.item; import lombok.Data; @Data public class Item { private Long id; private String itemName; private Long price; private Integer quantity; public Item() { } public Item(String itemName, Long price, Integer quantity) { this.itemName = itemName; this.price = price; this.quantity = quantity; } } 결과 사진(사진)
- 0
- 2
- 89
질문&답변
수업 코드 제공 관련 문의
섹션1. 강의 소스 코드 확인하시면 됩니다.
- 0
- 2
- 21
질문&답변
RequestMappingHandlerAdapter의 Controller 호출 과정
질문을 남기면서 생각을 정리하고, 해당 부분 영상을 다시 돌려보니 영한님께서도 방식2가 아니라 방식1로 설명을 하셨다는 판단이 드네요!처음에 리졸버 -> 컨트롤러로 가는 점선 화살표로 인해 헷갈렸습니다.
- 0
- 3
- 20
질문&답변
RequestMappingHandlerAdapter의 Controller 호출 과정
글을 다 작성하고 나니 새로운 흐름(방식3)도 생각이 드는데요. 방식3(이 강의 이전 그림 기반의 흐름) 핸들러 어댑터 -> 컨트롤러 호출(현재 흐름) 핸들러 어댑터 -> 리졸버 -> 컨트롤러 . 이렇게 중간에 리졸버를 껴서 호출 방식1, 2, 3 중에 어떤 것이 적절한 흐름인지 궁금하네요 ㅠ
- 0
- 3
- 20
질문&답변
~v5까지를 이용해서 사이드 프로젝트를 해보려는데 막혔습니다
지금은 해결하셨겠지만, service() 메서드 호출 자체가 안 된다면 스프링 부트가 해당 서블릿을 인식하지 못해서 발생한 상황같아요. 메인 코드에 @ServletComponentScan 애노테이션을 달아줘야 서블릿을 스캔합니다.package hello.servlet; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.web.servlet.ServletComponentScan; @ServletComponentScan // 서블릿 자동 등록. 프로젝트 패키지를 다 뒤져서 서블릿을 찾고, 실행하도록 하는 애노테이션 @SpringBootApplication public class ServletApplication { public static void main(String[] args) { SpringApplication.run(ServletApplication.class, args); } }
- 0
- 2
- 123
질문&답변
강의 중간에 사용하는 줌? 확대 기능
영한님이 외부 프로그램을 사용하시는지 여부는 잘 모르겠으나, macOS 사용중이시라면 아래 링크 확인해주세요!https://support.apple.com/ko-kr/guide/mac-help/mchl779716b8/mac
- 0
- 2
- 49
질문&답변
단순하고 실용적인 컨트롤러 v4
프론트 컨트롤러 -> 세부 컨트롤러 로는 말씀하신 것처럼 빈 model을 넘겨주는 것이 맞습니다.빈 model을 넘겨받은 세부 컨트롤러에서 로직을 수행하여 요청에 알맞은 데이터를 model.put() 합니다.두 model의 참조가 동일하기 때문에 세부 컨트롤러에서 model.put()을 하고, String viewName만 리턴하더라도 프론트 컨트롤러에서 이를 사용할 수 있습니다.프론트 컨트롤러 -> MyView로 model을 넘길 때도 마찬가지입니다.
- 0
- 2
- 166
질문&답변
모델 정보를 request에 담아서 jsp로 전송? 하는 이유
members를 Model(request)에 담아서 다시 View에게 요청하는 맥락이라 그렇습니다!
- 0
- 2
- 132
질문&답변
objectMapper과 json 객체
json 형식의 문자열을 파싱해서 HelloData 타입 자바 객체로 변환하는 것입니다.
- 0
- 2
- 84
질문&답변
서블릿과 컨트롤러의 차이
좋은 질문 덕에 헷갈릴 수 있는 부분을 짚고 갑니다!
- 1
- 3
- 394