참고도서
|
1. 기본 설정
src/main/java |
자바 소스 |
src/main/resources |
자원 파일 |
src/main/webapp |
웹 어플리케이션에 필요한 파일, 브라우저에서 접근할 수 있는 폴더. |
src/main/webapp/WEB-INF |
web.xml 파일이 위치, 브라우저에서 접근할 수 없는 폴더로 사용자의 직접적인 접근이 불가능하다. |
src/main/webapp/WEB-INF/view |
html, jsp 같은 view 파일 |
이클립스에서 프로젝트의 프로퍼티를 열고 Deployment Assembly 를 보면,
실제 배포할 때 Source 에 등록된 폴더 안의 파일들이 지정된 Deploy Path 로 복사된다.
(2) pom.xml 에 dependency 설정
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | <dependencies> <!-- Spring --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>4.3.10.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>4.3.10.RELEASE</version> </dependency> <!-- Servlet --> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.0.1</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> <version>2.2</version> <scope>provided</scope> </dependency> </dependencies> | cs |
이클립스에서 Spring Legacy Project -> Spring MVC Project 로 프로젝트를 만들면 pom.xml 파일에 작성되어 있다.
프로젝트를 만들면 각각의 버전도 맞추고, 자바 빌드 패스도 설정하고.. 설정이 귀찮은 스프링..
(3) 스프링 MVC 설정
1 2 3 4 5 6 7 8 9 10 | <!-- src/main/resources/spring-mvc.xml --> <!-- @Controller 어노테이션을 이용한 컨트롤러를 사용하기 위한 설정 --> <mvc:annotation-driven /> <!-- DispatcherServlet 의 매핑 경로를 '/'로 주었을 때 JSP/HTML/CSS 등을 올바르게 처리하기 위한 설정 --> <mvc:default-servlet-handler /> <mvc:view-resolvers> <!-- JSP를 이용해서 컨트롤러의 실행 결과를 보여주기 위한 설정 --> <mvc:jsp prefix="/WEB-INF/view/" /> </mvc:view-resolvers> | cs |
<mvc:annotation-driven> MVC 패턴에 사용할 어노테이션들의 설정을 한 방에 해결
<mvc:default-servlet-handler> 서블릿이 컨트롤러를 선택하기 위해 필요한 HandlerMapping 설정
<mvc:view-resolver> 요청을 처리하고 응답에 필요한 view 를 선택하기 위해 필요한 ViewResolver 설정
(4) web.xml 에 DispatcherServlet 설정
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | <servlet> <!-- DispatcherServlet 을 dispatcher 라는 이름으로 등록 --> <servlet-name>dispatcher</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!-- DispatcherServlet 은 초기화 과정에서 contextConfiguration 초기화 파라미터에서 지정한 설정 파일을 이용해서 스프링 컨테이너를 초기화 한다 --> <init-param> <param-name>contextConfigLocation</param-name> <param-value> <!-- 스프링 설정파일의 목록 지정, 줄로 구분하거나 콤마로 구분 --> classpath:spring-mvc.xml classpath:spring-controller.xml </param-value> </init-param> <!-- 톰캣과 같은 컨테이너가 웹 어플리케이션을 구동할 때 설정한 서블릿을 실행 --> <load-on-startup>1</load-on-startup> </servlet> <!-- 모든 요청을 DispatcherServlet 이 처리하도록 설정 --> <servlet-mapping> <servlet-name>dispatcher</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> <!-- 한글 필터 처리 --> <filter> <filter-name>encodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> | cs |
2. Contorller
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | // 컨트롤러로 사용하겠다고 알림 @Controller public class HelloController { // 메소드가 처리할 요청 경로 지정, /hello 경로로 들어온 요청을 hello() 메소드가 처리 @RequestMapping("/hello") public String hello(Model model, @RequestParam(value = "name", required = false) String name) { model.addAttribute("greeting", "안녕하세요, " + name); return "hello"; } } /* @RequestMapping("/hello") 요청 경로 지정할 때는 Context Path 를 제외하고 지정 http://localhost:포트번호/sp4-chap09/hello -> Context Path: sp4-chap09 -> 요청경로: /hello @RequestParam HTTP 요청 파라미터 값을 메소드의 파라미터로 전달 JSP 할 때 자주 사용했던 request.getParameter("name"); 과 같은 기능 get 으로 요청이 들어오는 경우 => http://localhost:port8088/sp4-chap09/hello?name=냠냠 Model - 요청을 처리하고 난 후 응답에 사용되는 값이 담기는 객체 model.addAttribute("greeting", "안녕하세요," + name); 첫 번째 파라미터는 데이터를 식별하는데 사용되는 속성 이름 두 번째 파라미터는 속성 이름에 해당하는 값 View 에서 greeting 이라는 이름으로 사용하면 "안녕하세요," + name 이 화면에 출력된다 return "hello"; ViewResolver 가 선택할 View 의 논리적 이름을 반환 */ | cs |
컨트롤러 객체를 생성하기 위해 스프링 컨테이너 설정 파일에 등록
1 2 | <!-- src/main/resources/spring-controller.xml --> <bean class="chap09.HelloController" /> | cs |
뷰로 사용할 JSP 작성
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | <!-- src/main/webapp/WEB-INF/view/hello.jsp --> <body> <!-- Model 에 greeting 이라는 이름 가지는 속성의 값을 출력 model.addAttribute("greeting", "안녕하세요, " + name); Spring MVC 프레임워크가 Model 에 담긴 데이터를 HttpServletRequest 에 옮겨준다. --> 인사말:${greeting} </body> <!-- return hello; 컨트롤로에서 hello 라는 뷰 이름이 반환 => 등록된 ViewResolver 에서 진짜 뷰 이름 생성 <mvc:view-resolver> <mvc:jsp prefix="/WEB-INF/view/"/> <mvc:view-resolver> prefix 접두어로 /WEB-IMF/view/ 가 붙고, 접미사로 기본 값인 .jsp 가 붙는다 hello => /WEB-INF/view/hello.jsp --> | cs |
실행할 때의 주소
http//localhost:포트번호/sp4-chap09/hello?name=냠냠
'Programming > Spring' 카테고리의 다른 글
Spring MVC (요청 매핑, 리다이렉트) (0) | 2017.08.24 |
---|---|
Spring MVC 프레임워크 동작 방식 (0) | 2017.08.23 |
Spring JdbcTemplate Transaction (0) | 2017.08.22 |
Spring JdbcTemplate Method (0) | 2017.08.22 |
데이터 변환 (0) | 2017.08.20 |
댓글