본문 바로가기

분류 전체보기

(144)
[Spring] BindingResult / FieldError / ObjectError BindingResult는 어떠한 로직을 검증하는 데 쓰이는 인터페이스로 주로 에러가 있는지 확인할 때 쓰인다.공식 문서를 통해 알아보자. /** * General interface that represents binding results. Extends the * {@link Errors interface} for error registration capabilities, * allowing for a {@link Validator} to be applied, and adds * binding-specific analysis and model building. * * Serves as result holder for a {@link DataBinder}, obtained via * the {@link ..
[Spring] 메시지, 국제화 스프링에서 메시지 기능은 중요한 단어들을 한 파일에 모아놓고 관리하는 기능이다.이러한 기능이 쓰이는 경우는 예를 들어서 우리가 코드에 A,B,C 라는 단어들을 넣어서 코드를 짰는데 누군가가 이를 D,E,F라는 단어로 싹 다 바꿔달라고 하면 우리는 수십개의 HTML 파일들을 일일이 찾아가며 수정해야 한다. 이러한 경우를 방지하게 위해서 중요한 단어들을 한 파일에 모아서 메시지 관리용 파일을 만드는 것이다. label.item=상품label.item.id=상품 IDlabel.item.itemName=상품명label.item.price=가격label.item.quantity=수량page.items=상품 목록page.item=상품 상세page.addItem=상품 등록page.updateItem=상품 수정butt..
[Spring] 타임리프 - 리터럴 타임리프에서 리터럴을 사용할 때를 보겠습니다.타임리프에서 리터럴은 아래와 같습니다.문자 : 'hello', 'world'숫자 : 10 20 30boolean : true, falsenull : null문자는 작은 따옴표로 감싸야 하는데 이는 상당히 귀찮습니다. 그래서 띄어쓰기가 없다면 그냥 하나의 토큰으로 보고 작은 따옴표가 아닌 " "로 감싸도 됩니다.  -- O -- X이 경우는 공백이 있기 때문에 작음따옴표로 감싸주어야 합니다. -- O리터럴 'hello' + ' world!' = 'hello world!' = 'hello ' + ${data} = 리터럴 대체 |hello ${data}| =  리터럴 대체는 | |로 리터럴을 감싸는 리터럴 대체 문법인데 1,2,3번째 코드보다 훨씬 편리..
[Spring] 타임리프 - 링크 URL @GetMapping("link") public String link(Model model) { model.addAttribute("param1", "data1"); model.addAttribute("param2","data2"); return "basic/link"; } URL 링크 basic url hello query param path variable path variable + query parameter 링크 url 표현식은 @{...} 형식으로 작성한다.첫번째 코드는 기본 URL이다. @{/hello}라고 하게 되면 URL상으로 /hello가 된다.두번째 코드는 쿼리 파라미터로 받는 경우이다.URL이니까 @로 시작을 하고 괄호 안에 있..
[Spring] 타임리프 - 텍스트 타임리프(Thymeleaf)는 백엔드 서버에서 HTML을 동적으로 렌더링할 때 사용된다.타임리프의 특징으로는기존 HTML 코드를 최대한 유지한다.웹 브라우저로 열 수도 있고, 서버를 통해 뷰 템플릿으로 열 수도 있다.이 대표적인 특징 두 가지를 Natural Templates라고 한다. 타임리프 사용 선언 1. 텍스트 출력 (text) @GetMapping("text-basic") public String textBasic(Model model) { model.addAttribute("data", "Hello Spring!"); return "/basic/text-basic"; }model에 data라는 이름으로 Hello Spring!이라는 value를 담고 실행을..
[Spring] @ResponseBody 애너테이션 //@ResponseBody @RequestMapping("/request-param-v3") public String requestParamV3( @RequestParam String username, @RequestParam int age) { log.info("username={}, age={}", username, age); return "ok"; } @ResponseBody를 설명하기 전에 코드와 결과를 먼저 보여드리겠습니다. TemplateInputException으로 템플릿이 존재하지 않거나 어떠한 템플릿 리졸버로도 접근 가능하지 않을 수 있다는 내용입니다.@ResponseBody는 @ResponseHttpMes..
[Spring] HTTP 요청 파라미터 - 쿼리 파라미터 클라이언트에서 서버로 요청 데이터를 전달할 때 쓰는 방법 1. GET - 쿼리 파라미터URL의 쿼리 파라미터를 이용하는 방식으로 메시지 바디없이 URL의 쿼리 파라미터에 데이터를 포함하여 전달한다.검색, 필터, 페이징 등에서 많이 사용한다.2. POST - HTML Formcontent-type : application/x-www.form.urlencoded메시지 바디에 쿼리 파라미터 형식으로 전달한다.회원가입, 상품 주문, HTML Form에 사용한다.3. HTTP message body에 데이터를 직접 담아서 요청HTTP API에서 주로 사용하며 JSON 방식을 주로 사용한다.  1. 요청 파라미터 - 쿼리 파라미터 @RequestMapping("/request-param-v1") public ..
[Spring] 로깅 알아보기 우리가 일반적으로 출력문을 사용할 때 System.out.print를 사용했지만 실무에서는 이것을 사용하지 않고 로그로 출력을 한다. 그 이유는 시간, 쓰레드, 컨트롤러 등 다양한 정보를 알 수 있고 출력을 할 때 단순히 콘솔이 아니라 네트워크, 파일로 출력을 할 수도 있다.  @RestControllerpublic class LogTestController { private final Logger log = LoggerFactory.getLogger(getClass()); // 내 클래스를 지정하기 @RequestMapping("/log-test") public String logTest() { String name = "spring"; System.out.pr..

반응형