티스토리 뷰

IT/Framework

Spring framework 시작하기(2)

Normal_One 2017. 3. 26. 11:46


 앞선 내용에선 Spring MVC project까지 완성해보았습니다. 먼저 만들어진 Spring MVC project의 구조부터 살펴보도록 하겠습니다.


 폴더 트리는 크게 두 가지로 나뉘어질 수 있습니다. 컨트롤러와 서비스, DAO, Mapper XML, logging XML 파일로 채워질 Java source 디렉토리와 서블릿 설정 파일, JSP 페이지 파일, js 파일, 각 종 이미지 및 관련 파일 등이 채워질 Servlet 관련 디렉토리입니다.
 먼저 이전에 말했던 것처럼 본격적으로 시작하기에 앞서서 각종 설정을 해둘까합니다. 일단 WEB-INF 폴더에 있는 web.xml 파일로 가봅시다. 찾아들어가기 귀찮으신 분들은 Ctrl + Shift + R로 파일 이름을 치면 해당 파일이 나오게 되어 있습니다. 


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
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
    
    <!-- The definition of the Root Spring Container shared by all Servlets and Filters -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/spring/root-context.xml</param-value>
    </context-param>
    
    <!-- Creates the Spring Container shared by all Servlets and Filters -->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
 
    <!-- Processes application requests -->
    <servlet>
        <servlet-name>appServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
        
    <servlet-mapping>
        <servlet-name>appServlet</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
 
</web-app>
cs
 
web.xml 파일을 처음 열어보면 다음과 같은 구조로 되어 있습니다. 살펴보면 contextConfigLocation, appServlet으로 이루어진걸 볼 수 있습니다. contextConfigLocation의 경우 bean의 설정 파일이고, appServlet의 경우 DispatcherServlet의 설정 파일입니다. contextConfigLocation의 경우 위에 적은 그대로 bean을 설정하는 파일인데 추후에 DB에 대한 bean을 설정할 파일입니다. DispatcherServlet은 Spring의 MVC구조 중 C에 해당하는 설정 파일로 맵핑 된 jsp파일에 맞는 컨트롤러를 찾아주는 역할을 합니다. 그럼 그 밑에 appServlet이라고 servlet-mapping이 있는데 여기에는 url-pattern을 지정할 수 있는 곳입니다. 보통 *.do나 *.action등을 사용하죠. 그냥 다 쓰고 싶으시면 *으로만 해도 무방합니다. url-pattern에서 *이란 어떤 것이 와도 상관없음을 의미합니다.
  앞으로 불륨이 커지면 Spring-security 설정이나 다양한 filter, interceptor등을 설정하겠지만 여기서 저희는 간단하게 parameter의 인코딩을 UTF-8로 변경해주는 filter를 넣도록 하겠습니다. 


1
2
3
4
5
6
7
8
9
10
11
12
13
    <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


  이렇게 작성하셔서 web.xml 파일에 넣어주시면 됩니다. UTF-8외에 어떤 인코딩을 넣어도 무방하지만, UTF-8을 넣어주는 이유는 Parameter가 한글이라도 깨지지 않기 때문입니다. 여기서 filter는 웹페이지에서 사용하는 모든 Parameter를 불러와서 UTF-8로 변경해줍니다. filter는 나중에 직접 현업을 해보시면 아시겠지만 XSS 공격 방지 등의 다양한 방면으로 인터셉터와 같이 활용되게 됩니다.
 그럼 filter설정을 끝마쳤으니 이제 pom.xml을 찾아서 들어가봅시다. pom.xml은 Spring에 내포되어 있는 Maven 설정 파일입니다. Maven은 Apache에서 제공하는 빌드 매니져로 *.jar 파일을 다운로드, 관리해줍니다. 처음 pom.xml 파일을 열면 다음과 같은 화면이 나타납니다.




우리는 여기서 아래에 있는 tab중 pom.xml이라고 쓰여지는 tab을 열어보도록 하겠습니다. 열어보면 다양한 dependency와 plugin이 있는 것을 확인할 수 있는데, 이 것들은 기본적으로 Spring project에 내포되어 있는 라이브러리들입니다. 우리는 DB를 활용해야 하니까 DB와의 연결을 담당할 라이브러리들을 넣도록 하겠습니다. 



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
    <repositories>
        <repository>
            <id>mesir-repo</id>
            <url>http://mesir.googlecode.com/svn/trunk/mavenrepo</url>
        </repository>
    </repositories>
 
    <!-- jar 추가하기 -->
        <!-- ojdbc14.jar 추가 -->
        <dependency>
            <groupId>com.oracle</groupId>
            <artifactId>ojdbc14</artifactId>
            <version>10.2.0.4.0</version>
        </dependency>
 
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-orm</artifactId>
            <version>3.1.1.RELEASE</version>
        </dependency>
 
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.2.8</version>
        </dependency>
 
        <dependency>
            <groupId>commons-dbcp</groupId>
            <artifactId>commons-dbcp</artifactId>
            <version>1.4</version>
        </dependency>
 
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>1.2.2</version>
        </dependency>
 
cs


 repositories는 dependency 설정 파일이 있는 곳 전에 넣어주시면 되고 나머지 dependency들은 dependency들이 있는 곳에 넣어주면 됩니다. 참고로 여기서 ojdbc14의 경우 JDK 1.6버전까지만 지원하기에 1.7이나 1.8이신 분들은

 위 링크를 참조하시면 되겠습니다. 저렇게 입력을 마친 후 저장하면 자동으로 STS에서 *.jar 파일들을 다운받게 되어 있습니다. 이제 마지막으로 DB연결을 위한 bean을 등록할 root-context.xml 파일을 열어보도록 하겠습니다.
 root-context.xml 파일을 처음 열면 휑합니다. 여기에 아래와 같이 bean을 넣어주도록 합시다.


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
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    
    <!-- Root Context: defines shared resources visible to all other web components -->
        <!-- DB연결 설정 -->
    <bean id = "dataSource" class = "org.apache.commons.dbcp.BasicDataSource">
        <property name = "driverClassName" value = "oracle.jdbc.driver.OracleDriver"></property>
        <property name = "url" value = "jdbc:oracle:thin:@Localhost:1521:xe"></property>
        <property name = "username" value = "hr"></property>
        <property name = "password" value = "javaclass"></property>
    </bean>
    
    <bean id = "sqlSessionFactory" class = "org.mybatis.spring.SqlSessionFactoryBean">
        <property name = "dataSource" ref = "dataSource"></property>
        <property name = "mapperLocations" value = "classpath*:com/test/spring/mapper/*.xml"></property>
    </bean>
 
    
    <bean id = "sqlSessionTemplate" class = "org.mybatis.spring.SqlSessionTemplate">
        <constructor-arg index = "0" ref = "sqlSessionFactory"></constructor-arg>
    </bean>
    
        
</beans>
cs


 dataSource에는 DB연결에 대한 설정을 기입해줍시다. 각자가 가지고 있는 DB에 대한 내용에 맞게 고쳐주시면 됩니다. 저의 경우에 위의 설정은 처음 교육센터에서 교육을 들을 때 기입한 username과 password 입니다. 그 밑에 sqlSessionFactory의 경우에는 sql문을 기입할 mapper의 위치를 설정하는 내용입니다. classpath에 본인이 사용할 mapper의 경로를 설정해주시면 됩니다.
 이것으로 모든 기본적인 설정을 마쳤습니다. 그럼 이제 다음에는 직접 Controller, Service, mapper, jsp 파일을 만들어서 기본적인 페이지가 나오도록 해보겠습니다.


'IT > Framework' 카테고리의 다른 글

Spring - Static field에 Autowired 적용하기  (2) 2018.12.08
Struts2 + Quartz2 scheduler 예제  (0) 2017.11.04
Struts 버전 업그레이드 방법  (0) 2017.04.16
Spring framework 시작하기(3)  (0) 2017.03.26
Spring framework 시작하기(1)  (0) 2017.03.26
댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday