김영한

스프링이 제공하는 BindingResult를 이용하여 검증 오류 처리를 한다.BindingResult 파라미터는 @ModelAttribute 뒤에 와야한다.@PostMapping("/add")public String addItem(@ModelAttribute Item item, BindingResult bindingResult, RedirectAttributes redirectAttributes, Model model) { //검증 로직 if (!StringUtils.hasText(item.getItemName())) { bindingResult.addError(new FieldError("item", "itemName", item.getItemName(), false, null, nu..
원활한 유지보수를 위해 다양한 메시지는 messages.properites라는 파일을 만들어 관리한다. 해당 데이터의 key 값으로 불러서 사용하면 된다. 이때 파일명은 message가 아닌 messages이다.//messages.propertiesitem=상품item.id=상품 IDitem.itemName=상품명item.price=가격item.quantity=수량 더 나아가 나라별로 별도로 관리할 수 있다.언어를 선택할 때는  HTTP accept-language 헤더 값을 사용하거나 사용자가 선택하도록 하고, 쿠키로 처리하면 된다. 메시지 관리 기능을 사용하려면 스프링이 제공하는 MessageSource를 스프링 빈으로 등록하면 된다.이때 스프링 부트는 MessageSource를 자동으로 빈 등록해준..
타임리프를 사용해서 폼에서 체크박스, 라디오 버튼, 셀렉트 박스를 편하게 사용할 수 있다.  상품 종류 ENUM으로 생성public enum ItemType { BOOK("도서"), FOOD("음식"), ETC("기타"); private final String description; ItemType(String description) { this.description = description; }} 배송방식 클래스 생성/** * FAST 빠른 배송 * NORMAL 일반 배송 * SLOW 느린 배송 */@Data@AllArgsConstructorpublic class DeliveryCode { private String code; private Str..
스프링 부트는 클래스 패스의 다음 디렉토리에 있는 정적 리소스를 제공한다./static/public/resources/META-INF/resources src/main/resources는 리소스를 보관하는 곳으로, 또 클래스패스의 시작 경로이다.따라서 다음 디렉토리에 리소스를 넣어두면 스프링 부트가 정적 리소스를 서비스로 제공한다.  정적 리소스는 해당 파일을 변경 없이 그대로 서비스하는 것이다.  불러올 화면이 다음 경로에 들어있다.src/main/resources/static/basic/hello-form.html이 화면을 보기 위해선 웹브라우저를 다음과 같이 실행하면 된다.http://localhost:8080/basic/hello-form.html  뷰 템플릿을 거쳐서 HTML이 생성되고, 뷰가 ..
클라이언트에서 서버로 요청 데이터를 전달할 때 3가지 방법이 있다. 1. GET 메시지 바디 없이, URL의 쿼리파라미터에 데이터를 포함해서 전달하는 방식보통 검색, 필터, 페이징 등에서 많이 사용된다.http://localhost:8080/request-param-v1?username=hello&age=20 2. POST HTML Form으로 전달하는 방식POST /request-param ...content-type: application/x-www-form-urlencodedusername=hello&age=20 3. HTTP message body에 데이터를 직접 담아서 요청하는 방식HTTP API에서 주로 사용되며, JSON / XML / TEXT가 있다. 이중 데이터는 주로 JSON 사용 이중..
운영시스템에선 System.out.println()가은 시스템 콘솔을 사용해서 정보를 출력하지 않고, 별도의 로깅 라이브러리를 사용하여 로그를 출력한다.import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;@RestControllerpublic class LogTestController { private final Logger log = LoggerFactory.getLogger(getClass()); //현클레스 지정..
지구용사
'김영한' 태그의 글 목록