SpringBoot

셀렉트박스 여러 가지 선택지 중 단 한가지를 선택하는 경우에 사용하는 HTML 기본 기능 태그이다. 전까지 작성했던 기능과 마찬가지로 이 셀렉트박스의 정보를 가져올 deliveryCodes() 를 생성하는데, 이 메서드에도 @ModelAttribute를 적용하여 해당 컨트롤러들이 호출될 때마다 실행시키도록 하자. 원래라면 공통으로 생성될 코드들은 묶어 한번만 실행시키는게 옳은 방법이다. @ModelAttribute("deliveryCodes") public List deliveryCodes() { List deliveryCodes = new ArrayList(); deliveryCodes.add(new DeliveryCode("FAST", "빠른배송")); deliveryCodes.add(new Deli..
타임리프 스프링 통합 스프링 통합으로 추가되는 이전 프로젝트에서의 기능들은 아래와 같다. 스프링의 SpringEL 문법의 통합 스프링 빈의 호출을 지원 편리한 폼 관리를 위한 추가속성 th:object => 기능 강화, form 커맨드 객체 선택 th:field, th:erros, th:errorclass form component 기능 check box나 radio button 등 편리하게 사용할 수 있는 기능 지원 스프링의 메시지, 국제화 기능의 편리한 통합 검증, 오류처리 통합, 변환 서비스 통합 "입력 form 처리" 기존에 구성했던 item-service 프로젝트를 타임리프와 통합해서 사용하기 위해 조금씩 구성을 변경한다. @GetMapping("/add") public String addFor..
타임리프 기본 기능 “네츄럴 템플릿” 순수 HTML 코드를 최대한 유지할 수 있다. 타임리프로 작성한 파일은 HTML을 유지하기 때문에 브라우저에서 직접 열어도 내용이 확인되고, 서버를 통해 뷰 템플릿을 거쳐 동적 웹 화면도 확인할 수 있다. JSP를 포함한 다른 뷰 템플릿들은 해당 파일을 열면 소스코드들이 섞여 정확한 HTML 코드를 파악할 수 없다. 오직 서버를 통해서 렌더링 되기 때문이다. 반면에 타임리프로 작성된 파일은 해당 파일 그대로 웹 브라우저에서도 정상적인 HTML 결과를 확인할 수 있다. “타임리프 사용 선언” @Controller @RequestMapping("/basic") public class BasicController { @GetMapping("text-basic") publi..
“HTTP 요청 메세지 - 단순 텍스트 “ ‘HTTP message body’에 데이터를 직접 담아서 요청 API에서 주로 사용된다. JSON, XML, TEXT 데이터 형식은 주로 JSON 형식이 사용됨 POST, PUT, PATCH 파라미터 요청과는 다르게 message body로 넘어올 경우는 @RequestParam, @ModelAttribute를 사용할 수 없기 때문에 다른 방법을 사용한다. @Slf4j @Controller public class RequestBodyStringController { @PostMapping("/request-body-string-v1") public void requestBodyString(HttpServletRequest request, HttpServletR..
요청 매핑 - API 예시 “회원 관리 API” 회원 목록 조회 : GET 회원 등록 : POST 회원 조회 : GET 회원 수정 : PATCH 회원 삭제 : DELETE @RestController public class MappingClassController { @GetMapping("/mapping/users") public String user() { return "get users"; } @PostMapping("/mapping/users") public String addUser() { return "post user"; } @GetMapping("mapping/users/{userId}") public String findUser(@PathVariable String userId) { re..
스프링 MVC - 기본기능 “Welcome 페이지 만들기” 스프링 부트에 ‘Jar’를 사용하면 ‘/resources/static/index.html’ 위치에 ‘index.html’ 파일을 두면 Welcome 페이지로 처리해준다. “로깅이란” 운영 시스템에서는 ‘System.out.println()’같은 시스템 콘솔을 사용하여 필요한 청보를 출력하지 않고, 별도의 로깅 라이브러리를 사용하여 출력한다. 로그 관련 라이브러리가 상당히 방대하기 때문에 사용방법만 간단히 알아보려고 한다. SLF4J : 인터페이스 Logback : 인터페이스의 구현체 로그 라이브러리는 Logback, Log4J, Log4J2 등등 수 많은 라이브러리가 존재한다. **@RestController** // RestController ..
스프링 MVC 전체 구조 “DispatcherServlet” 구조 살펴보기 “ 스프링 MVC도 프론트 컨트롤러 패턴으로 구현되어 있는데, 이 스프링 MVC의 프론트 컨트롤러가 바로 **DispatcherServlet**이다. 즉, 스프링 MVC의 핵심이다. “DispatcherServlet 서블릿 등록” DispacherServlet 도 부모 클래스에서 HttpServlet을 상속 받아서 사용, 서블릿으로 동작한다. 스프링 부트는 DispacherServlet을 서블릿으로 자동 등록하며 모든 경로에 대하여 Mapping한다. 참고 : 더 자세한 경로가 우선순위가 높음 “요청 흐름” 서블릿이 호출되면 HttpServlet이 제공하는 serviec가 호출된다. “동작 순서” 핸들러 조회 : 핸들러 매핑을 통..
MVC 패턴 - 개요 “너무 많은 역할” 하나의 서블릿이나 JSP만으로 VIEW와 BIZ를 모두 처리하면, 역할이 과하게 몰리고 유지보수가 어려워진다. “변경의 라이프 사이클” 변경 주기(라이프 사이클)이 다를때 분리하는게 좋다. UI를 변경하는 일과 BIZ를 변경하는 일은 대부분 따로 일어난다. 대부분 서로에게 영향을 주지 않는다는 뜻이다. “기능 특화” JSP 같은 뷰 템플릿은 화면을 렌더링하는데 최적화 돼 있기 때문에 이 부분의 업무만 담당시키는 것이 가장 효과적이다. “MVC” MVC 패턴은 지금까지 학습한 것처럼 하나의 서블릿, JSP로 처리하던 것을 컨트롤러와 뷰 라는 영역으로 역할을 나눈 것을 말한다. 웹 애플리케이션은 보통 이 패턴을 사용한다. “redirect vs forward” 리다이..
함형우
'SpringBoot' 카테고리의 글 목록 (6 Page)