분류 전체보기 썸네일형 리스트형 Redirect의 사용(Feat. PRG(POST/Redirct/GET) 1] 중복 실행이 절대 실행되면 안 될 때 사용ex) 상품 등록(POST)을 완료한 후, 웹 브라우저에서 새로고침 버튼을 누를 때마다 상품 등록이 중복되버리는 심각한 문제가 있다.-> GET 메소드 URL로 웹 브라우저가 Redirect하게 만든다. 2] POST온 요청 URL을 처리한고, 똑같은 요청 URL의 @Getmapping으로 자동 호출하고 싶을 때!ex) 3] 서버에서 PR(POST/Redirection) 처리를 한 뒤, 웹 브라우저에서 GET URL을 호출한 결과 URL에 쿼리 매개변수(쿼리 스트링)을 보내고 싶을 때에 RedirectAttribute를 사용하면 된다. -> React, Vue.js를 사용하는 웹 클라이언트 개발자가 Redirction 후 뭔가의 정보를 필요로 할 때 쿼리.. 더보기 PUT,PATCH,DELETE HTML Form은 GET/POST 메서드만 지원을 한다. 그리고 클라이언트에서 서버로 데이터를 전송하는 방법은 크게 아래 3가지이다. 1] GET : 쿼리 매개변수(쿼리 스트링)2] HTML Form - GET/POST만 지원3] HTTP API로 전송 - GET,POST,PUT,PATCH,DELETE-> PUT,PATCH,DELETE를 사용하려면 Ajax와 같은 javascript로 HTTP API를 사용하여야 한다. 더보기 Request Body 전체 조회!!(Feat. HttpEntity) @PostMapping("/request-body-string-v1")public void requestBodyString(HttpServletRequest request, HttpServletResponse response) throws IOException { ServletInputStream inputStream = request.getInputStream(); String messageBody = StreamUtils.copyToString(inputStream, StandardCharsets.UTF_8); log.info("messageBody = {}", messageBody); response.getWriter().write("ok");} 위 코드는 HTML FORM-P.. 더보기 Property(프로퍼티)의 정확한 의미 객체의 Property라고 하면 보통 그냥 객체의 멤버 변수를 뜻하는 줄 알았다. 그러나 아래의 정의가 정확한 정의이다. Property : 멤버 변수에 대한 getter와 setter가 있을 때에만 그 멤버 변수를 Property라고 부른다. 더보기 @ModelAttribute 실행 프로세스 @ResponseBody@RequestMapping("/model-attribute-v2")public String requestModelV2(@ModelAttribute HelloData helloData){ log.info("username={}",helloData.getUsername()); log.info("age = {}",helloData.getAge()); return "ok";} 스프링은 @ModelAttribute가 있으면 다음 프로세스대로 실행된다. 1] HelloData 객체 생성2] Request 매개변수의 이름으로 HelloData 객체의 멤버 변수를 찾는다. 3] 해당 멤버 변수의 Setter를 호출하여 Request 매개변수를 바인딩한다. -> 반드시 Hello.. 더보기 @RequestParam(required=true)의 주의점 @ResponseBody@RequestMapping("/request-param-required")public String requestParamRequired(@RequestParam(required = true) String username, @RequestParam(required = false) int age){ log.info("username={}",username); log.info("age = {}",age); return "ok";} 1] http://localhost:8080/request-param-required?username=""-> required = true는 가 무조건 있어야 한다. username="" 은 .. 더보기 @ResponseBody(Feat. produces) 스프링에서 @ResponseBody를 사용하면, 반환된 데이터를 HTTP 응답 본문에 직접 작성하며, 스프링이 자동으로 적절한 Content-Type 헤더를 설정합니다.Content-Type 설정 방식:HttpMessageConverter:@ResponseBody는 반환 데이터를 HTTP 응답 본문으로 변환하기 위해 HttpMessageConverter를 사용합니다.HttpMessageConverter는 반환 객체의 타입과 요청 헤더의 Accept를 기반으로 적절한 Content-Type을 결정합니다.일반적인 Content-Type 예시:String 반환 시: text/plain;charset=UTF-8Map, Object, 또는 JSON 변환 가능 객체 반환 시: application/json;char.. 더보기 스프링 로그(feat. SLF4J ,Logback) 스프링 부트는 기본적으로 로그 라이브러리로 SLF4J 라이브러리와 Logback 라이브러리를 사용한다. (실무에서도 대부분 이들 라이브러리를 사용한다)(SLF4J는 인터페이스이고, Logback은 그 구현체이다) 로그를 사용해야 하는 이유1. 로그 메시지가 여러 정보들을 보면 디버깅이 편해진다. -> 여러 정보에는 프로세스 ID, 쓰레드 ID, 로그 레벨, 어느 클래스에서 로그가 찍혔는지!! 등2. 기존의 방식인 System.out.println()을 사용하면 개발 서버 뿐만 아니라 운영 서버에서도 로그가 찍히는 단점이 있다. -> 이는 시스템 성능을 저하시킬 뿐만 아니라 전혀 클린하지도 않다. Logback을 사용하면 application.property에서의 로그 레벨 지정을 통하여 운영 서버에서 필.. 더보기 이전 1 ··· 3 4 5 6 7 8 9 ··· 78 다음