분류 전체보기
-
[Spring] 서블릿(Servlet)의 필터(Filter)기능 소개Back-end/Spring 2022. 4. 11. 11:26
안녕하세요 이번 포스팅은 서블릿에서 지원하는 필터 기능에 대해서 알아보겠습니다!!! 상황 가정 우선 다음과 같은 상황이있다고 가정해보겠습니다. 관리자는 한 쇼핑몰에 상품을 등록, 수정, 삭제를 하려고 하는데 이런 여러 로직을 수행하기 위해서는 관리자가 로그인이 되어있는지 확인을 해줘야 합니다. 물론 컨트롤러 단에서 session에 있는 정보를 꺼내서 모든 메서드마다 확인을 해줄 수 있지만 이것은 중복된 코드로 코드 가 비효율적이겠죠? 그렇기 때문에 저희는 서블릿 필터를 사용할 수 있습니다. 서블릿 필터 소개 필터는 서블릿이 지원하는 수문장이고 특성은 다음과 같습니다. 필터를 적용하면 필터가 호출된 다음에 서블릿이 호출됩니다. 그래서 모든 고객의 요청 로그를 남기는 요구사항이 있다면 필터를 사용하면 됩니다..
-
[Spring] 메시지, 국제화Back-end/Spring 2022. 3. 28. 16:29
안녕하세요 이번 포스팅은 메시지와 국제화에 대해서 알아보겠습니다. 메시지 어떤 기획자가 HTML 파일에 있는 모든 상품명이라는 단어를 상품으로 변경해달라고 요청했다고 가정을 해봅시다. 그러면 여러 화면에 보이는 하드 코딩되어있는 상품명이라는 단어를 화면들을 다 찾아가면서 모두 변경해야 합니다. 화면수가 적다면 문제가 되지 않지만 수십 개 이상이라면 수십 개의 파일을 모두 고쳐야 한다는 번거로움이 생깁니다. 이런 다양한 메시지를 한 곳에서 관리하도록 하는 기능을 메시지 기능이라고 합니다. 국제화 메시지에서 한발 더 나아가서 메시지 파일(messages.properties)을 각 나라별로 관리하면 서비스를 국제화 할 수 있습니다. 예를 들어서 다음 과 같이 2개의 파일을 만들어서 분류합니다. mssages_..
-
[SPRING] PRG(POST/REDIRECT/GET)Back-end/Spring 2022. 3. 21. 16:46
안녕하세요! 이번 포스팅은 코드 없이 PRG의 개념에 대해서 알아보겠습니다 위와 같은 상황이 있다고 가정해봅시다. 클라이언트는 상품 등록 Form에 가서 주문을 하고 버튼을 누르면 컨트롤러에서 요청을 받아서 DB에 insert를 해주고 주문한 상품의 고유번호를 받아서 상품 상세 페이지를 고객에게 보여줍니다. 이 상태에서 새로고침 버튼을 누르게 되면 계속해서 상품이 주문되는 것을 확인할 수 있는데 이것은 심각한 결과를 초래할 수도 있습니다. 웹 브라우저의 새로 고침은 마지막에 서버에 전송한 데이터를 다시 전송합니다. 상품 등록 폼에서 데이터를 입력하고 저장을 선택하면 POST로 상품 데이터를 전송하고 이 상태에서 새로 고침을 또 선택하면 마지막에 전송한 POST로 상품 데이터를 서버로 다시 전송하기 때문에..
-
[Spring] HTTP 메시지 컨버터Back-end/Spring 2022. 3. 21. 16:31
안녕하세요 이번 포스팅은 HTTP 메시지 컨버터에 대해서 알아보겠습니다!! HTTP 메시지 컨버터 뷰 템플릿으로 HTML을 생성해서 응답하는 것이 아니라, HTTP API처럼 JSON 데이터를 HTTP 메시지 바디에서 직접 읽거나 쓰는 경우 HTTP 메시지 컨버터를 사용하면 편리합니다. @ResponseBody를 사용 - HTTP의 BODY에 문자 내용을 직접 반환 - viewResolver 대신에 HttpMessageConverter가 동작 - 기본 문자처리 : StringHttpMessageConverter - 기본 객체 처리 : MappingJackson2 HttpMessageConverter - byte 처리 등등 기타 여러 HttpMessageConverter가 기본으로 등록되어 있음 스프링 M..
-
[Spring] HTTP 요청 파라미터(RequestParam, PathVariable, ModelAttribute, RequestBody, ResponseBody, RestController, HttpEntity) - 쿼리 파라미터, HTML FormBack-end/Spring 2022. 3. 21. 15:15
안녕하세요 이번 포스팅은 HTTP 요청 파라미터에 대해 알아보겠습니다!!! 서블릿에서 학습했던 HTTP 요청 데이터를 조회하는 방법을 다시 떠올려봅시다. 그리고 서블릿으로 학습했던 내용을 스프링이 얼마나 깔끔하고 효율적으로 바꾸어주는지 알아보고 HTTP 요청 메시지를 통해 클라이언트에서 서버로 데이터를 전달하는 방법을 알아보겠습니다. 클라이언트에서 서버로 요청 데이터를 전달할 때는 주로 다음 3가지 방법을 사용합니다. 1. GET - 쿼리 파라미터 - /url?username-hello&age=20 - 메시지 바디 없이 URL의 쿼리 파라미터에 데이터를 포함해서 전달 - 예) 검색, 필터, 페이징 등에서 많이 사용하는 방식 2. POST - HTML Form - content-type : applicat..
-
[Spring] HTTP 요청 - 기본, 헤더 조회Back-end/Spring 2022. 3. 21. 13:01
안녕하세요 이번 포스팅은 HTTP 요청을 받아서 컨트롤러에서 헤더를 포함한 여러 정보를 조회해보겠습니다. 애노테이션 기반의 스프링 컨트롤러는 다양한 파라미터를 지원합니다. RequestHeaderController import lombok.extern.slf4j.Slf4j; import org.springframework.http.HttpMethod; import org.springframework.util.MultiValueMap; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import jav..
-
[Spring] 요청 매핑Back-end/Spring 2022. 3. 21. 12:53
안녕하세요!! 이번 포스팅은 스프링에서 제공하는 기본적인 요청 매핑에 관해 알아보겠습니다. MappingController import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.web.bind.annotation.*; @RestController public class MappingController { private Logger log = LoggerFactory.getLogger(getClass()); /** * 기본 요청 * 둘다 허용 /hello-basic, /hello-basic/ * HTTP 메서드 모두 허용 GET, HEAD, POST, PUT, PATCH, DELETE */ @RequestMap..
-
[Spring] 로깅(Logging) 간단하게 알아보기Back-end/Spring 2022. 3. 21. 12:37
안녕하세요 이번 포스팅은 로깅에 대해서 알아보겠습니다!! 운영 시스템에서는 System.out.println() 같은 시스템 콘솔을 사용해서 필요한 정보를 출력하지 않고, 별도의 로깅 라이브러리를 사용해서 로그를 출력합니다. 참고로 로그 관련 라이브러리도 많고, 깊게 들어가면 끝이 없기 때문에, 여기서는 최소한의 사용 방법만 알아봅시다. 로깅 라이브러리 스프링 부트 라이브러리를 사용하면 스프링 부트 로깅 라이브러리( spring-boot-starter-logging )가 함께 포함된다. 스프링 부트 로깅 라이브러리는 기본으로 다음 로깅 라이브러리를 사용합니다. 로그 라이브러리는 Logback, Log4J, Log4J2 등등 수많은 라이브러리가 있는데, 그것을 통합해서 인터페이스로 제공하는 것이 바로 SL..