Spring Web MVC 라이브러리 설치
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.2.9.RELEASE</version>
</dependency>
web.xml 파일에 설정
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
여기서 중요한 것은 url-pattern인데 /* 이라고 사용하면 이것은 모든 url 매핑 값이 들어올 때 Dispatcher.xml을 거쳐서 가지 않으면 오류가 발생한다는 것을 알 수 있다
URL 이동 순서
- DispatcherServlet으로 모든 url에 servlet 이동하게 설정
url-pattern 에 / 만을 입력해두면 해당 url이 없을 때는 자동으로 .jsp를 찾게됨
- 어떠한 url을 입력시 해당 class로 이동함
해당 입력 url을 bean의 id로 입력시켜서 class로 이동, /index면 index라는 url이 입력 됬을때 작동함
- IndexControoler
이렇게 저장하면 data 라는 이름에 Hello Spring MVC라는 데이터가 저장되어 있다
- View Page
위에 jsp파일에 보면 ${data}라는 모델이 있고 그를 출력할 수 있다
밑에 출력 페이지를 보면
index 는 데이터가 출력되어있지만
index.jsp 는 모델에 데이터가 저장되서 넘어오지 않아 출력되지 않는다
그 이유는 2번의 xml 파일에 셋팅을 /index로 해놨기 때문에 index로만 파일이 전송 되고
.jsp url에도 오류가 뜨지 않는 이유는 1번의 디스패처 xml에서 url 매핑을 [/] 로 해놨기 때문에
디스패처 서블렛에서 해당 url을 찾을 수 없으면 자동으로 jsp를 찾기 때문이다
프로젝트 오른쪽 마우스 - Properties - Web Project Settings - 루트 ( / )
를 입력해두면 자동으로 삭제 된다 / 서버 삭제하고 다시 재ㅜ동 필수
원래 ModelAndView를 사용해서 이동하던
mv.setViewName("/WEB-INF/view/index.jsp");
위 형태의 코드를 생략할 수 있다
Controller JAVA 파일에 해당 코드에 생성자 추가
ModelAndView mv = new ModelAndView("index");
디스패처.xml에 해당 Bean 추가
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/view/"/>
<property name="suffix" value=".jsp"/>
</bean>
위의 Bean이 말하는 해당 코드의 의미는 이러하다
1. prefix : 생성자 앞에 붙을 주소
2. suffix : 생성자 뒤에 붙을 주소
즉, prefix + 생성자 + suffix의 데이터가 합쳐져서 해당 url이 완성된다
위와 같은 url을 작성시
생성자에 index만 입력해도 실질적으로 뷰에는 /WEB-INF/view/index.jsp 라는 데이터가 저장되서 이동하게 된다
Spring은 정적 파일을 불러올 수 없다고 한다
1) 정적(Static) : 움직임이 없이 고정된.
2) 동적(Dynamic) : 움직이는 역동적인.
그렇기 때문에 다른 셋팅이 필요하다
정적 파일을 사용하기 위해서는 mvc:resources라는 태그에 해당 파일을 저장해줘야한다
location = "/static/" 이라는 것은 모든 static 폴더 안에 있는 파일 이라는 것이고
mapping = "/**" 은 모든 url 패밍일때 라는 의미이다
즉, 모든 url 매핑에서 불러오는 정적 파일들 중 static 폴더 안에 있는 파일들은 jsp 파일에서 불러 올 수 있도록 셋팅 해주는 것을 의미한다