[1편-번외] 스프링 환경 구성[스마트인재개발원]
이번 게시글은 생성된 프로젝트를 뜯어보는 시간을 가지도록 하겠습니다.
Spring으로 생성된 프로젝트를 실행해보면 최상위 패키지 경로에 접속하게 되면 Hello World!가 뜨면서 Home이라는 파일이 열린 것이 확인된다.
이제 왜 최상위 패키지 경로에 접속했더니 Home.jsp가 열렸는지 하나씩 살펴보려고 한다.
먼저 src/main/java에 있는 HomeController라는 Controller가 존재하고 webapp풀더에 Home.jsp가 존재하는 것을 확인할 수 있다.
파일들을 찾았다면 Controller를 살펴보자
'스마트인재개발원'에서 실습을 진행할 때 servlet을 배우게 되는데 이때 'URL Mapping을 배우게 된다.
servlet에 접근하게 위해서는 URL(기본 경로) + URL_mapping(servlet) 이렇게 접속하면 된다.
하지만 이렇게 웹을 구성하게 되면 Servlet에서 중복되는 부분이 많이 생겨서 이를 최적화해줘야 한다.
'스마트인재개발원'에서는 이를 FrontController라고 배웠다!!
Servlet에 기본 요소를 인터페이스로 만들고 이를 상속받는 클래스를 생성한다. 이때 생성한 클래스가 어떤 기능을 하는 메서드이고 이를 호출하는 게 Controller라고 이해했다!! (틀릴 수도 있다 ㅠㅠ)
ppt로 간단하게 그려보자!
Servlet이라는 코드가 중복으로 들어가게 된다. 이를 FrontColler에서 처리하게 된다면
이렇게 중복되던 Servlet코드를 하나로 묶고 기능을 따로 분리할 수 있다.
기능들은 Servlet에 기본 요소를 인터페이스로 만들고 이를 상속받았으니 하나에 레퍼런스 변수로 생성할 수 있게 되고 코드가 간결해진다!!
따라서 생성된 Spring프로젝트에서 HomeController도 이런 구조로 이루어져 있지 않을까??
이제 HomeController를 봐보자 어노테이션으로 RequestMapping이 적용되어 있고 value에는 URL Mapping이 Method에서는 데이터 형식이 정해져 있고 내부에 Servlet에서 실행되어야 할 기능들, 마지막으로 return에서 home이라는 문자열을 반환한다. 이때 반환된 문자열과 동일한 JSP를 찾아서 연결해주는 것 같다.
그렇다면 웹 페이지를 디자인하고 구현하기 위해서는 webapp내부에 JSP파일로 구현하고, 이를 Controller에서 연결해주면 된다. (이렇게 이해한 게 맞겠죠?...)
자자 그러면 일단 페이지를 만들어보자!!
원래 있던 home.jsp가 있던 경로에 sub.jsp를 만들고 버튼으로 Home.jsp과 Sub.jsp를 왕복하는 페이지를 만들어보자!
아래와 같이 잘 이동되는 것을 볼 수 있다.
이제 model.addAttribute()코드에 관한 부분을 알아보자!!
('객체 바인딩' 이라고 한다.)
(매개변수 부분은 Request 또는 Response를 쓰고 싶다면 선언해주면 된다!)
'스마트인재개발원'에서 진행했던 수업에 기억을 떠올려보자!!.... 음 속성을 지정하면 어디선가 불러올 수 있다고 알려주신건만 기억난다.. 정리 좀 해놓을걸!!!
예제에서 한 가지 유추해 볼 수 있는 건 Controller에서는 jsp파일 이름에 문자열 데이터를 반환하기 때문에 직접적으로 Controller에서 jsp로 데이터 전달이 불가능하다.
하지만 예제에서는 사용자 위치랑 시간을 Home.jps로 넘겨주고 있으며 Home.jsp에서는 <P> The time on the server is ${serverTime}. </P>에서 "${serverTime}"으로 데이터를 받고 있다.
'스마트인재개발원'에서 Spring 수업에 앞서 JSTL를 강의하셨는데 아마 JSTL로 출력했거나 이와 비슷한 것으로 보인다.
자세한 내용은 구글을 통해 검색해서 알아보자!!
(EL표현이며 정식 명칭은 표현 언어(Expression Language)라고 한다!!)
[JSP] JSTL 사용 방법 - 주요 태그 문법 정리
JSTL을 사용하려면 라이브러리가 필요하다. 라이브러리 다운로드 및 프로젝트 세팅은 이 포스트를 참고한다. 태그 라이브러리 선언 자바에서 import문을 선언하듯 JSP에서도 JSTL 확장 태그를 사용
atoz-develop.tistory.com
위에 게시글에 설명이 잘 되어 있다!! 작성자님 감사합니다 꾸벅!!
30분 넘게 열심히 구글을 해봤는데 '${변수명}' << 이걸 뭐라고 불렀는지 생각이 안 난다.... ㅠㅠ
Home.jsp에서 분명 JSTL이 선언되었고 Controller에서 addAttribute으로 데이터를 넘겨주고 출력한다는 느낌은 알겠는데 왜 JSTL에 문법처럼 <c:out value="데이터"></c:out> 으로 적지 않고 '${변수명}'으로만 적었는데 정상적으로 출력이 되는지 더 알아봐야겠네요..
(일단 표현식인거 같은데... 객체 바인딩으로 가져온 데이터는 c:out을 통하지 않고 그냥 출력할수 있는것 같아요!)
'스마트인재개발원'에서 수업을 듣고 있다면 선생님께 물어보면 되는데 혼자 하려니 힘들다!! 누가 좀 알려주세요!!
# 해당 수업은 '스마트인재개발원'에서 '지능형IoT 융합SW 전문가 과정(NCS) 과정'에서 진행했던 교육내용입니다.
스마트인재개발원
4차산업혁명시대를 선도하는 빅데이터, 인공지능, 사물인터넷 전문 '0원' 취업연계교육기관
www.smhrd.or.kr