Spring boot

1. 검증처리 직접 개발 @PostMapping("/add") public String addItem(@ModelAttribute Item item, RedirectAttributes redirectAttributes, Model model) { //검증 오류 결과 보관 Map errors = new HashMap(); //검증 로직 if (!StringUtils.hasText(item.getItemName())) { errors.put("itemName", "상품명은 필수 입니다."); } if (item.getPrice() == null || item.getPrice() 1000000) { errors.put("price", "가격은 1,000 ~ 1..
스프링 통합으로 추가되는 기능들 스프링의 SpringEL 문법 통합 ${@myBean.doSomething()} 처럼 스프링 빈 호출 지원 편리한 폼 관리를 위한 추가 속성 th:object (기능 강화, 폼 커맨드 객체 선택) th:field , th:errors , th:errorclass 폼 컴포넌트 기능 checkbox, radio button, List 등을 편리하게 사용할 수 있는 기능 지원 스프링의 메시지, 국제화 기능의 편리한 통합 스프링의 검증, 오류 처리 통합 스프링의 변환 서비스 통합(ConversionService)
1. text, utext model.addAttribute("data", "Hello Spring!"); th:text 사용 위와 같이 입력하게 되면 html에서 태그를 사용하여 Spring! 단어가 진해져야 함. 하지만 실행결과는 Hello Spring! 이다. 1) html 엔티티 이는 ...
Controller, Service, DAO 셋을 이해하려면 먼저 MVC패턴이 왜 등장했는지부터 알아봐야 한다. 1. MVC 패턴 기존의 서블릿과 JSP 방식은 하나의 파일에 비지니스 로직(서비스 호출) 과 뷰 렌더링(HTML)이 모두 존재 했다. 즉, 하나의 파일에 자바코드와 HTML 코드가 전부 들어가 있었다. 그러다 보니 코드의 복잡성이 올라가고 결국 유지보수가 어려워 졌다. 이러한 문제를 해결하기 위해 MVC(Model View Controller)패턴이 도입되었다. View(HTML)와 Controller(비지니스 로직)을 분리하였다. 그래서 view에서 HTTP 요청을 보내면 Controller가 비지니스 로직(회원가입, 상품주문 등)을 수행하였다. 그리고 view 렌더링에 필요한 데이터는 M..
@PathVariable VS @RequestParam @PathVariable @RequestMapping 은 URL 경로를 템플릿화(동적 처리) 할 수 있는데, @PathVariable 을 사용하면 매칭 되는 부분을 편리하게 조회할 수 있다. 예) items/{itemId} 일때 @PathVariable("itemId")을 사용하면 itemId 조회 가능 변수 이름이 같을 때 @PathVariable로 생략 가능 예) @PathVariable("itemId") Long id -> @PathVariable Long itemId @RequestParam URL 경로로 GET 쿼리 파라미터(ex) xxx?username=kim) 요청이 오거나 Post로 HTML Form으로 파라미터가 넘어올때 해당 파라미..
스프링 MVC - 웹 페이지 만들기 1. 요구사항 분석 상품 도메인 모델 상품 ID 상품명 가격 수량 상품 관리 기능 상품 목록 상품 상세 상품 등록 상품 수정 프론트엔드 개발자가 만든 html 폼 상품목록(등록, 상세 버튼) 상품등록 폼(저장, 취소 버튼) 상품 상세(수정, 목록 버튼) 상품 수정 폼(저장, 취소 버튼) 1) 클라이언트가 상품 목록 요청 2) `상품목록 controller`에서 `상품목록 폼` 랜더링 2-1) 상품등록 버튼 클릭 -> `상품등록 controller`에서 `상품등록 폼` 랜더링 3-1) 상품저장 버튼 클릭 -> `상품저장 controller`에서 `상품상세 폼` 랜더링 3-2) 취소 버튼 클릭 -> `상품등록 폼`에서 `상품목록 링크`로 이동 2-2) 상품상세 버튼 클릭 ..
스프링 MVC - 기본 기능 1. 프로젝트 생성 스프링 부트 스타터 사이트로 이동해서 스프링 프로젝트 생성 https://start.spring.io 프로젝트 선택 Project: Gradle Project Language: Java Spring Boot: 2.4.x Project Metadata Group: hello Artifact: springmvc Name: springmvc Package name: hello.springmvc Packaging: Jar (주의!) Java: 11 Dependencies: Spring Web, Thymeleaf, Lombok war를 사용하면 /webapp/ 경로에 index.html 을 두면 http://localhost:8080 호출시 index.html 페이..
스프링 MVC - 구조 이해 1. 스프링 MVC 전체 구조 직접 만든 프레임워크 스프링 MVC 비교 FrontController -> DispatcherServlet handlerMappingMap -> HandlerMapping MyHandlerAdapter -> HandlerAdapter ModelView -> ModelAndView viewResolver -> ViewResolver MyView -> View DispatcherServlet 구조 스프링 MVC도 프론트 컨트롤러 패턴으로 구현 프론트 컬르롤러가 디스패처 서블릿 디스패처 서블릿도 부모 클래스에서 HttpServlet을 상속받아 서블릿으로 동작 스프링 부트는 디스패처 서블릿을 자동으로 등록하면서 모든경로(urlPatterns="/")에 ..
MVC 프레임워크 만들기 1. 프론트 컨트롤러 패턴 소개 FrontController 패턴 특징 프론트 컨트롤러 서블릿 하나로 클라이언트의 요청을 받는다. 프론트 컨트롤러를 제외한 나머지 컨트롤러는 서블릿을 사용하지 않아도 된다. 프론트 컨트롤러가 요청에 맞는 컨트롤러를 찾아서 호출해준다. 스프링 웹 MVC와 프론트 컨트롤러 스프링 웹 MVC의 DIspatcherServlet이 FrontController 패턴으로 구성 2. 프론트 컨트롤러 도입 - v1 V1 구조 HTTP요청이 오면 프론트 컨트롤러에 URL매핑 정보에서 컨트롤러를 조회한다. 조회한 컨트롤러를 호출한다. 해당 컨트롤러에서 직접 JSP forward를 수행한다. view 렌더링이 수행된다. 프론트 컨트롤러 분석 urlPatterns url..
서블릿, JSP, MVC 패턴 1. 회원 관리 웹 애플리케이션 요구사항 회원 정보 이름: username 나이: age 기능 요구사항 회원 저장 회원 목록 조회 회원 도메인 모델 id 는 Member 를 회원 저장소에 저장하면 회원 저장소가 할당한다 회원 저장소 회원 저장소는 싱글톤 패턴을 적용했다. 스프링을 사용하면 스프링 빈으로 등록하면 되지만, 지금은 최대한 스프링 없이 순수 서블릿 만으로 구현하는 것이 목적이다. 싱글톤 패턴은 객체를 단 하나만 생생해서 공유해야 하므로 생성자를 private 접근자로 막아둔다 회원 저장소 테스트 코드 회원을 저장하고, 목록을 조회하는 테스트를 작성했다. 각 테스트가 끝날 때, 다음 테스트에 영향을 주지 않도록 각 테스트의 저장소를 clearStore() 를 호출해..
코드 미식가
'Spring boot' 카테고리의 글 목록