본문 바로가기

스프링16

검증 검증-Validation 컨트롤러의 역할: HTTP 요청이 정상인지 검증 정상: PRG 직접 개발 //Map Map errors = new HashMap(); // errors.put("itemName", "상품 이름은 필수입니다."); !errors.isEmpty()-> 모델에 담고 다시 입력 폼으로 th:if="${errors?.containsKey('globalError')}" th:text="${errors['globalError']}" th:classappend="${errors?.containsKey('itemName')} ? 'field-error' : _" th:if="${errors?.containsKey('itemName&.. 2022. 6. 17.
타임리프 타임리프 순수 HTML 그대로 유지,뷰 템플릿 사용=> 네츄럴 템플릿 텍스트 model.addAttribute("data", "Hello Spring!"); [[${data}]] //직접 기본적으로 이스케이프 제공: th:text, [[...]] 이스케이프x: th:utext, [(...)] 변수 - SpringEL model.addAttribute("user", userA); model.addAttribute("users", list); model.addAttribute("userMap", map); th:text="${user.username}" th:text="${users[0].username}" th:text="${userMap['userA'].username}" //지역변수 th:with="f.. 2022. 6. 16.
[스프링] 스프링 MVC 스프링 MVC - 구조 핸들러 조회 핸들러 어댑터 조회 핸들러 어댑터 실행 핸들러 실행 ModeelAndView 반환 viewResolver 호출 View반환 render 호출 핸들러 매핑과 핸들러 어댑터 HandlerMapping(ex.스프링 빈의 이름으로 핸들러를 찾을 수 있는 핸들러 매핑) RequestMappingHandlerMapping HandlerAdapter(핸들러를 실행할 수 있는 핸들러 어댑터 필요) RequestMappingHandlerAdapter 뷰 리졸버 return new ModelAndView("new-form"); BeanNameViewResolver: 빈 이름으로 뷰를 찾아서 반환 InternalResourceViewResolver: JSP 처리할 수 있는 뷰 반환 스프링.. 2022. 6. 9.
[스프링] MVC 프레임워크 MVC 프레임워크 프론트 컨트롤러 패턴 특징 프론트 컨트롤러 서블릿 하나로 클라이언트의 요청 받음 프론트 컨트롤러가 요청에 맞는 컨트롤러 찾아 호출 공통 처리 프론트 컨트롤러 제외한 나머지 컨트롤러 서블릿 사용x 프론트 컨트롤러 도입1 컨트롤러 인터페이스-> - 회원 등록 컨트롤러, 회원 저장 컨트롤러, 회원 목록 컨트롤러void process(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException; 프론트 컨트롤러 @WebServlet(name = "frontControllerServletV1", urlPatterns = "/front-controller/v1/*") public class.. 2022. 6. 9.
[스프링] 서블릿, JSP, MVC 패턴 서블릿, JSP, MVC 패턴 서블릿 서블릿: 자바 코드로 html 작성response.setContentType("text/html"); response.setCharacterEncoding("utf-8"); PrintWriter w = response.getWriter(); w.write("html~~"); JSP JSP: import: 자바 코드 입력: 자바 코드 출력: MVC 패턴 배경: 너무 많은 역할, 변경의 라이프 사이클, 기능 특화 Model View Controller 컨트롤러: HTTP 요청-> 파라미터를 검증, 비즈니스 로직 실행, 뷰에 전달할 결과 데이터를 조회-> 모델에 담기 서비스: 비즈니스 로직 처리 리포지토리: 데이터 접근 모델: 뷰에 출력할 데이터 담아둠 뷰: 모델에 담겨있.. 2022. 6. 9.
[스프링] 웹 애플리케이션 이해, 서블릿 웹 애플리케이션 이해 웹 서버: HTTP 기반, 정적 리소스 제공, NGINX, APACHE 웹 애플리케이션 서버WAS: HTTP 기반, 웹 서버 기능+애플리케이션 로직 수행,톰캣 Jetty 서블릿: urlPatterns의 URL이 호출-> 서블릿 코드 실행, HttpServletRequest,HttpServletResponse 서블릿 컨테이너: 서블릿을 지원하는 WAS, 생명주기 관리, 싱글톤으로 관리: 최초 로딩 시점, 공유 변수 사용 주의, 서블릿 컨테이너 종료시 함께 종료 JSP도 서블릿으로 변환 멀티 쓰레드 지원: WAS가 처리 SSR(서버 사이드 렌더링): HTML 최종 결과를 서버에서 만들어서 웹 브라우저에 전달(JSP, 타임리프) CSR(클라이언트 사이드 렌더링): 동적인 화면에 사용(Re.. 2022. 6. 9.