spring MVC 기본 동작 흐름
-클라이언트 모든요청을 받는 DispatcherServlet이 요청 URL을 Handler Mapping에게 전달하고 요청에 알맞는 Controller와 Method 정보를 알아냄 -> Dispatcher Servlet이 HandlerAdapter에게 요청 처리를 위임 -> Handler Adapter는 Controller와 해당 메서드를 실행 -> Controller는 비즈니스 로직을 처리하고, 그 결과를 바탕으로 뷰(ex. JSP)에 전달할 객체를 Model 객체에 저장-> Dispatcher Servlet은 view name을 View Resolver에게 전달하여 View 객체를 얻음 -> Dispatcher Servlet은 View 객체에 화면 표시를 의뢰 -> View 객체는 해당하는 뷰(ex. JSP, Thymeleaf)를 호출하며, 뷰는 Model 객체에서 화면 표시에 필요한 객체를 가져와 화면 표시를 처리
- Spring에서는 데이터를 전달할때 Spring 전용 저장공간인 Model이라는 Class가 존재한다. 거기에다가 저장해서 전달
- Controller에서 jsp로 데이터를 보낼때는 객체바인딩을 통해서 전달
SpringMVC 어노테이션
@Controller | 스프링 mvc의 컨트롤러 객체임을 명시하는 애노테이션 | 클래스 |
@requestmapping | 특정 uri에 매칭되는 클래스나 메소드임을 명시하는 애노테이션 | 클래스, 메소드 |
@requestparam | 요청에서 특정한 파라미터의 값을 찾아낼 때 사용하는 애노테이션 HttpServletRequest와 같은 역할로 getParameter로 파라미터를 가져왔음 | 파라미터 |
@requestheader | 요청에 특정 http 헤더 정보를 추출할 때 사용 | 파라미터 |
@Pathvariable | 현재의 uri에서 원하는 정보를 추출할 때 사용하는 애노테이션, @RequestMapping에서 context 와 {값} 쓰고 메소드 파라미터부분에 바로 @Pathvariable 쓰거나 변수명 다르게 줄때는 @Pathvariable("템플릿변수명" 데이터타입 변수명) | 파라미터 |
@cookievalue | 현재 사용자의 쿠키가 존재하는 경우 쿠키의 이름을 이용해서 쿠키의 값을 추출 | 파라미터 |
@modelattribute | 자동으로 해당 객체를 뷰까지 전달하도록 만드는 애노테이션 | 메소드, 파라미터 |
@sessionattribute | 세션상에서 모델의 정보를 유지하고 싶은 경우에 사용 | 클래스 |
@initbinder | 파라미터를 수집해서 객체로 만들 경우에 커스터마이징 | 메소드 |
@responsebody | 리턴 타입이 http의 응답 메시지로 전송 | 메소드, 리턴타입 |
@requestbody | 요청 문자열이 그대로 파라미터로 전달 | 파라미터 |
@repository | Dao 객체 | 클래스 |
@service | 서비스 객체 | 클래스 |
@RequestMapping에서 사용할 수 있는 속성 | 설명 |
---|---|
path | 요청 경로를 지정한다. |
method | 요청 메소드(GET,POST,PUT,DELETE…)를 지정한다. |
params | 요청 파라미터(유무 또는 값)을 지정한다. |
headers | 요청 헤더(유무 또는 값)를 지정한다. |
consumes | 요청 헤더의 Content-Type 값를 지정한다. |
produces | 요청 헤더의 Accept 값을 지정한다. |
@GetMapping, @PostMapping, @PutMapping, @DeleteMapping을 사용하면 method 속성을 생략 가능
스프링과 자바 버전 바꿔줘야됨 1.6 -> 11로
예제에 따라서 버전 바꿀 수있음 pom.xml에서 자바 버전 아래 프레임워크버전 변경
플러그인 태그 중 maven-compiler-plugin 내용 바꿈 jdk가 11버전이므로 11로
프로젝트 우클릭 메이븐 업데이트 프로젝트
서버 스타트
크롬 주소입력창에 localhost:포트번호/내가지정한 context path 엔터 땅 치면 헬로월드 나옴(보안폴더 - home.jsp로 연결됨)**WEB-INF 디렉토리에 뷰인 jsp : 무조건 FrontController를 거쳐 컨트롤러가붙은 POJO를 통해 jsp가 실행됨
롬복 파일 받기 (getter setter 생성자 toString 메소드 등 간편하게 어노테이션으로 설정하는 라이브러리)
https://projectlombok.org/ 에서 다운로드 후
cmd창 - cd jdk설치경로\bin 파일
java -jar lombok.jar
엔터
압축 풀어줌
고추그림 화면이 나오면 specify location에서 이클립스가 설치된 경로 찾고, eclipse.exe 선택하고 인스톨
pom.xml에 API 태그 추가함
~~참고) utf 8 설정 윈도우-제너럴-워크스페이스에서 변경
~~
jstl 주요 문법
Core(기본) 태그 종류
조건문 문법참고자료 :
https://www.devkuma.com/docs/jsp-servlet/%EC%A1%B0%EA%B1%B4%EB%AC%B8-c-if-c-choose-c-when-c-otherwise/