Spring MVC
루트컨테이너 등록하고 사용하기:)
1. Dynamic Web Project를 생성합니다.
프로젝트 이름을 주고
Next 버튼을 선택 후
web.xml 체크박스를 선택 후 Finish를 선택!
2. Configure -> Convert to Maven Project를 선택해서
완료버튼을 클릭해줍니당
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80 |
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>Spring_member</groupId>
<artifactId>Spring_member</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<build>
<sourceDirectory>src</sourceDirectory>
<plugins>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.6</version>
<configuration>
<warSourceDirectory>WebContent</warSourceDirectory>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>4.1.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.1.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>4.1.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>4.1.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>4.1.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.2.8</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.38</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.2.2</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>4.1.6.RELEASE</version>
</dependency>
</dependencies>
</project> |
cs |
3. pom.xml에
디펜던시 세팅해줍니다
(spring core, context, web, webmvc, jdbc, aop, mybatis, mybatis-spring, mysql)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 |
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
<display-name>Spring_member</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<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>*.do</url-pattern>
</servlet-mapping>
</web-app> |
cs |
4. web.xml에 dispatcherServlet을 서블릿으로 등록
*.do에 대해서 처리하도록 서블릿 매핑
1
2
3
4 |
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/dispatcher-servlet.xml</param-value>
</init-param> |
cs |
+
만약
경로와 설정파일의 이름이 다르다면 이렇게 !!
+
항상
마지막에
<load-on-startup>1</load-on-startup>
써줘야함
중간에써주면안됨!
안써줘도상관은없지만!!
1
2
3
4
5
6
7
8
9
10
11
12
13 |
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd">
<context:component-scan base-package="controller"/>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="jsp/"/>
<property name="suffix" value=".jsp" />
</bean>
</beans>
|
cs |
5. dispatcherServlet이 사용할 스프링 설정파일 생성
(Spring Bean Configuration FIle)
controller패키지에 대해서 컴포넌트 스캔
internalResourceViewResolver등록
(prefix는 jsp파일을 모아놓은 폴더경로
suffix는 jsp파일들의 확장자로)
루트컨테이너 등록하고 사용하기:)
루트컨테이너 등록하는 방법
1. web.xml에 컨텍스트 로더 리스너를 등록
2. /WEB-INF/applicationContext.xml이름으로 스프링 설정 파일 작성
즉
web.xml에 ContextLoaderListener클래스를 리스너로 등록하면
/WEB-INF/applicaitonContext.xml을 설정파일로해서 스프링컨테이너를 하나 빌드하고
해당 컨테이너를 모든 서블릿 컨테이너가 공유할 수 있도록 세팅!
1
2
3 |
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener> |
cs |
1. 아까 설정해 둔 web.xml에
위의 내용 추가!
1
2
3
4 |
<context-param>
<param-name>contextConfiguration</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param> |
cs |
+
만약
applicationContext.xml 파일명을 바꾸고싶을경우는
<param-value></param-value> 사이에 원하는 설정파일 경로와 이름을 작성하면 됨!
applicationContext.xml은
서비스단 이하를 빈으로 등록
(datasource, sqlSessionFacotry, mapperFactoryBean(Dao), services클래스(컴포턴트스캔),트랜잭션 매니저 등)
dispatcher-servlet.xml은
서블릿컨테이너
여기에는 mvc구성요소들
컨트롤러(컴포넌트스캔)
1
2
3
4
5
6
7
8
9
10
11
12 |
package service;
import org.springframework.stereotype.Service;
@Service
public class MemberService {
public String getData(){
return "I am a boy";
}
}
//@Component: 이 에노테이션이 달려있는 클래스는 컴포넌트 스캔에 의해서 빈으로 등록이됨
//그때의 빈의 아이디의 첫글자는 소문자 |
cs |
2. MemberService를 만들어줍니당
1
2
3
4
5
6
7
8
9
10
11 |
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd">
<context:component-scan base-package="service"/>
</beans>
|
cs |
3. 루트컨테이너인
applicationContext.xml에
MemberService를 빈으로 등록!
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 |
package controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import service.MemberService;
//서비스주입받아서
//받은 리퀘스트를 처리하기에 피룡한 서비스의 메소드를 호출해서 결과 획득
//결과 데이터랑 적절한 페이지 세팅해서
//모델엔뷰 리턴
@Controller
public class MemberController {
@Autowired
private MemberService service;
@RequestMapping("test.do")
public ModelAndView dummy(){
ModelAndView mav = new ModelAndView();
mav.addObject("attr",service.getData());
mav.setViewName("test");
return mav;
}
} |
cs |
4. MemberController만들고
service참조변수에 루트컨테이너에 등록되있는
MemberService빈 객체를 주입
@Autowired 사용!
test.do에서
서비스객체의 getData 함수호출의 결과를 attr에 싣고
test.jsp를 뷰페이지로 지정
1
2
3
4
5
6
7
8
9
10
11
12 |
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
${attr }
</body>
</html> |
cs |
5. jsp폴더내
test.jsp를 만들어줍니당!
6. 이렇게 파일을 만드셨으면!
실행을 해보겠습니당!
7. 실행하면 404에러가 뜨지만
test.do를 입력하면
위와같은
I am a boy를 출력할 수 있습니다~
+ 알아둬야할 사항
@Component의 아들들!
@Controller, @Service, @Repository
-> 모두 @Component의 아들들
-> 그러므로 컴포넌트 스캔에의해 빈등록됨
@Controller -> hanlderMapping 추가됨
그래서 MemberController.java에서는
@Component가 아닌
@Controller을 씀
이유는
@Component를 쓰면
HandlerMapping기능이 없기 때문에
아마 조회가 안되는 일이 발생
@Controller은
HandlerMapping기능이 있어서
Controller알아서 찾을 수 있도록!?
여튼 그런 기능!
'프로그래밍 > Spring Framework' 카테고리의 다른 글
네이버 개발자센터 검색 API 이용하기:) (0) | 2016.06.23 |
---|---|
Spring MVC 회원관리 시스템 구축 (1) | 2016.06.21 |
Spring MVC 예제 (annotation방식) (0) | 2016.06.16 |
Spring MVC 예제 (xml 따로 등록하는 방식) (0) | 2016.06.16 |
Spring MVC 구성 주요 컴포넌트 (0) | 2016.06.16 |