본문 바로가기
Programming/Spring

Spring MVC 기본 설정

by TinKerBellBass 2017. 8. 23.
728x90
반응형

참고도서

초보 웹 개발자를 위한 스프링4 프로그래밍 입문
국내도서
저자 : 최범균
출판 : 가메출판사 2015.03.02
상세보기



1. 기본 설정

(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 파일


WEB-INF 는 브라우저에서 접근할 수 없는 폴더로 실제로 배포할 때는 거의 모든 파일이 이 곳에 들어간다.
JavaScript, CSS, Bootstrap 등 웹 어플리케이션에 필요한 자원 파일은 브라우저에서 접근할 수 있는
webapp 루트 폴더에 넣거나 webapp/resources 등의 파일을 만들어서 넣는다.


이클립스에서 프로젝트의 프로퍼티를 열고 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 = falseString 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=냠냠

728x90
반응형

'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

댓글