1. 프로젝트 파일 구조
▶ src/main/Java
Java 비즈니스 로직 즉 작성한 Java 파일 예) VO, DTO, DAO, Service, Manager 객체
▶ src/main/resources
Java가 아닌 부가적인 설정 파일 예)db.properties, 각 종 xml파일등 Java가 아니지만 동작할 때 필요한 설정 파일들
▶ src/test/java 와 src/test/resources
프로그램 기능을 test할 코드와 그 코드를 동작하도록 하기 위한 설정 파일들
▶ src
웹 페이지는 Servlet만으로 만들 수 있고, JSP만으로도 만들 수 있으며, 두 가지를 같이 사용해서도 만들 수 있다. JSP로 웹페이지를 만들 때, jsp파일이 WEB-INF 폴더 안에 위치하면 404에러가 뜬다. 그 사실은 Spring 뿐만 아니라 Eclipse에서 확인할 수 있다. 그런데 Spring에서 WEB-INF 폴더 안에 jsp 위치시켜 놓은 이유는 사용자가 직접 jsp를 호출하는 것을 막고 jsp를 Servlet이 보내주는 데이터를 받아 html형태로 응답하기 위한 하나의 그릇 역할만 수행하도록 하기 위함이다.
▶ pom.xml
dependencies 태그 안에 라이브러리, jar 파일 추가
입력을 하면 아래의 홈페이지에서 있는 라이브러리가 외부 인터넷을 통해서 자동으로 local 파일에 다운
https://mvnrepository.com/
2. Spring 구조
1.클라이언트의 모든 요청은 (web.xml에 설정되어 있는 대로) 우선 DispatcherServlet이 받는다. 2.DispatcherServlet은 Handler Mapping을 통해 그 요청에 해당하는 Controller가 존재하는지 확인한다. 3.요청에 해당하는 Controller가 있다면, 요청에 대한 처리를 위임해준다. Controller는 그에 대한 처리를 끝내고 String으로 return을 하는데 4.이때, return한 String "문자열"은 View의 이름이다. 5.다시 DispatcherServlet은 return 되어 온 String을 토대로 ViewResolver(servlet-context.xml에 존재)을 통해 동일한 이름의 View가 있는지 검색한 후 동일한 이름의 View가 6.있다면 응답, 요청 객체를 그 view(jsp파일)에 송신을 하고 View에서 그에 대한 처리를 한 후 다시 7.DispatcherServlet에 보내면 DispatcherServlet이 html로 해석해서 다시 8.클라이언트에게 보내주는 것이다.
(1) web.xml
아래의 web.xml을 통해 알 수 있는 모든 요청('/')은 appServlet이름으로 DispatcherServlet class에 맵핑되어 있다.
(2) Home.jsp
(3) HomeController.java
@Controller 어노테이션은 DispatcherServlet이 사용할 수 있는 하나의 Controller 컴포넌트로 인식하도록 하기위한 어노테이션이다.
@RequestMapping 어노테이션은 어떤 요청을 어떤 메소드로 받을 것인지에 대해 작성하는 것이다. 요청은 value에 타입은 method에 GET형식이면 RequestMethod.GET, POST형식이면 RequestMethod.POST라고 작성하면 된다.
요청에 대한 모든 처리는 물론 하나의 Controller내에서 할 수 있지만, 유지 보수 체계적 관리를 위해 포로세스별로 (예: 물건 구매, 로그인, 로그아웃....) 나눠 여러개의 Controller을 만들어서 사용하는 경우가 많다.
유의해야 할 점은 "Spring"에서 request객체를 사용하지 않고, Model이라는 객체를 사용한다는 점이다. 또한 이전에 request.setAttribute()가 아닌 model.addAttribute();를 사용한다는 것도 유념해서 봐야한다.
(4) servlet-context.xml
여기서 prefix(접두사)와 suffix(접미사)를 붙이기 때문에 Controller에서 String을 반환해도 여기서 동일한 문자열의 jsp를 찾아주는 것이다.
'■ 용어 정리' 카테고리의 다른 글
[용어정리] JavaScript - 변수, 연산자, 타입 (0) | 2020.04.28 |
---|---|
[용어정리] Spring - MyBatis 기초 및 설정 (0) | 2020.04.28 |
[용어정리] GET, POST, forward, redirect (0) | 2020.04.28 |
[용어정리] JSP(Java Server Page) - 페이지의 구성 요소 (0) | 2020.04.28 |
[용어정리] JSP(쿠키 & 세션) 사용법 (0) | 2020.04.28 |