본문 바로가기

개발/환경설정

Tomcat + Spring Framework + myBatis셋팅

출처: 밥팅우기's Log

기존 본문에 추가 작성은 이 색깔로 표시했음.


Tomcat + Spring Framework + iBatis(myBatis) 를 설치해야할 일이 생겨 하는 김에 여기에 정리해놓고자 한다.

 

1. 톰캣 다운로드

http://tomcat.apache.org/download-70.cgi 에서 Core zip 버전을 받으면 된다. (Linux경우 tar.gz)

ex) http://mirror.apache-kr.org/tomcat/tomcat-7/v7.0.33/bin/apache-tomcat-7.0.33.zip

다운로드 후 압축 해제하면 설치는 끝.

편의상 압축 푼 후 해당 tomcat 디렉토리를 c:\tomcat7 로 이동시켜주겠다.

 

2. Project 생성

IDE는 이클립스를 사용한다.

여기서는 Dynamic Web Project를 생성해서 사용하겠다.

 

 

 

 

이후엔 Project Name 만 설정하고 맨 마지막까지 Next한 후 마지막 창에서 web.xml 을 생성한다는 체크박스에 체크하고 Finish해준다.

 요새는 Spring 이용시에는 Spring Template Project를 이용하고 더 편리하지만 부득이하게 Dynamic web Project로 해야 하는 경우 이 포스팅이 더욱 유용하다.

 

위와 같이 프로젝트가 생성이 되었으면 성공이다.

 

3. Spring Framework lib 다운로드.

Maven을 사용하면 편하지만 원시적(?)으로 직접가서 lib를 다운로드 하겠다.

http://www.springsource.org/download/community 에 접속하면 zip파일이 있으니 다운로드 하면 된다.

(자신의 jdk버전에 맞는 가장 최신버전)

 

 

다운로드 후 압축해제.

아래와 같이 파일 list가 보인다.

우리가 사용할 곳은 libs 디렉토리이다.

 

libs안의 jar파일을 모두 다 사용하는 건 아니고 필요한 jar파일들만 사용하면 된다.

기본적인 beans, core, jdbc, context, context-support, expression, aop, tx와 spring mvc를 사용할것이므로 web, webmvc도 이클립스의 WEB-INF/lib로 드래그 하여 복사해 준다. 

 

4. Server 생성 (Eclipse)

아래의 과정은 Eclipse내에서 개발하고 바로 Tomcat을 실행시켜 브라우저에서 확인이 가능하고 디버깅도 가능하게 하는 작업이다.

 

 

 

 

OK를 누르면 Eclipse내에 Server라는 탭이 하나 생성이 될 것이다.

 

 

Tomcat v7.0 선택 (좀 전에 Tomcat download 한 버전에 맞게 선택하면 된다.)
7.0은 약간의 버그가 있어서 6.0이 더 안정적이라고 한다..

Next 하면 아래 창이 뜬다.

 

Tomcat installation directory : 에서 Browse..를 클릭하여 좀전에 download한 Tomcat디렉토리를 선택해 주고 Next.

 

 

지금 만들고 있는 서버와 매칭시킬 프로젝트를 선택하면 된다.

프로젝트를 Add하고 Finish하면 끝.

 

 

생성완료.

위 Tomcat v7.0 Server at localhost 를 더블클릭하면 아래와 같은 창이 나온다.

맨 아래의 Module 탭을 선택하자.

 

 

선택한 후 Edit 버튼을 클릭하면 아래 창이 뜬다.

 

Path를 /로 수정하고 OK를 클릭한다.

 

위 Tomcat v7.0 Server at localhost 에 마우스 우클릭해서 Start나 Debug를 선택해주자.

 

상태가 Debugging으로 변한 걸 확인 할 수 있다.

 

브라우저로 확인해보자.

http://localhost:8080/ (톰캣이 기본포트가 8080인데 설정을 변경했다면 해당 포트로 접속해보면 된다.)

 

 

페이지를 찾을 수 없다는 에러 페이지인데.. 이 에러는 Tomcat에서 내보내는 에러 페이지이니 톰캣은 정상적으로 구동된 걸 확인 할 수 있다.

 

Eclipse에서 개발하고 바로 Eclipse내에서 이렇게 Server를 구동해서 확인 및 디버깅을 할 수 있다.

 

5. Spring Framework에 의존된 library들 다운받기

- jakarta taglibs standard (Spring mvc에서 사용하는 lib)

http://archive.apache.org/dist/jakarta/taglibs/standard/binaries/ 에서 zip 파일 다운로드 후 압축해제 하면 lib 디렉토리 안에 jstl.jar, standard.jar 파일 있음.

두 파일을 WEB-INF/lib 안으로 드래그 하여 복사해줌.

 

- apache common logging (Spring core에서 사용하는 lib)

http://commons.apache.org/logging/download_logging.cgi 에서 binaries zip 파일 다운로드 후 압축해제하면 디렉토리 안에 commons-logging-x.x.x.jar 파일 있음.

이 파일도 WEB-INF/lib 안으로 드래그 하여 복사해줌.

 

- codehaus jackson (Spring mvc에서 json변환시 사용하는 lib)

http://wiki.fasterxml.com/JacksonDownload 에서 1.x 버전을 받아야 함.

받아서 WEB-INF/lib 안으로 드래그 하여 복사해줌.

 

6. spring mvc 설정

- web.xml

...

<!-- Spring Config Setting : bean 설정하는 xml 파일 위치 지정 --> 
 <context-param>
  <param-name>contextConfigLocation</param-name>
  <param-value>
    /WEB-INF/config/*-context.xml
  </param-value>
 </context-param>
<!-- Spring Config Setting -->
     
 <!-- listener Register : Spring Framework이 로딩되게 listener를 설정함 -->
 <listener>
  <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
 </listener>
 <!-- listener Register -->
     
<!-- Spring-MVC Config Setting : Spring MVC 관련 설정 -->
 <servlet>
  <servlet-name>action</servlet-name>
  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  <init-param>
   <param-name>contextConfigLocation</param-name>
   <param-value>
    /WEB-INF/config/spring-servlet.xml
   </param-value>
  </init-param>
  <load-on-startup>1</load-on-startup>
 </servlet>
 
 <servlet-mapping>
  <servlet-name>action</servlet-name>
  <url-pattern>/*</url-pattern>
 </servlet-mapping>
 <!-- Spring-MVC Config Setting -->

...

 

- WEB-INF/config/application-context.xml

...

// 컨트롤러가 리턴하는 객체를 JSON포맷의 메시지로 변환하게 하는 Converter 설정. 

<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
 <property name="messageConverters">
  <list>
   <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" />
  </list>
 </property>
</bean>

...

 

- spring-servlet.xml

<?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"
 xmlns:p="http://www.springframework.org/schema/p"
 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-3.1.xsd">

 <!-- component scan -->
 <context:component-scan base-package="trust.controller" use-default-filters="false">
  <context:include-filter type="annotation"
   expression="org.springframework.stereotype.Controller" />
 </context:component-scan>
 <!-- component scan -->
</beans>

 

- TestController

package trust.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class TestController {
 @RequestMapping(value="/test") <- URL이 /test일 경우 실행하게 함.
 @ResponseBody <- 해당 메소드가 리턴하는 객체를 JSON포맷의 메시지로 변환하게 하는 Annotation
 public String testView() {
  return "aa";
 }
}

 

결과

 

 

7. iBatis(MyBatis) 연동 - 이것 때문에 낚여서 이 포스팅 안 볼 뻔 ㅋㅋㅋ

MyBatis 로 이름이 바꼈다.

http://blog.mybatis.org/

http://code.google.com/p/mybatis/downloads/detail?name=mybatis-spring-1.1.2-SNAPSHOT-bundle.zip&can=1&q= 에서 lib 다운로드

(mybatis-spring-1.1.2-SNAPSHOT.zip)

 현재 mybatis-spring-1.2.-SNAPSHOT은 전체 jar가 아닌듯 하다. 상대적으로 용량이 매우 적으니 1.2.0이하 버전을 받는게 좋음

zip 파일 압축해제하면 aopalliance-1.0.jar, mybatis-3.1.1.jar, mybatis-spring-1.1.2-SNAPSHOT.jar 가 있다.

이 파일들을 WEB-INF/lib 안에 드래그 해서 넣어준다.

 

mysql을 사용할 것이므로 Connector도 받아야 한다.

http://www.mysql.com/products/connector/ 에서 JDBC용 커넥터를 다운받아 WEB-INF/lib 안에 넣어준다.

(mysql-connector-java-5.1.22-bin.jar)

 

- WEB-INF/config/mybatis-context.xml

<?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-3.1.xsd">

 <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
  <property name="locations">
   <value>/WEB-INF/config/mybatis.properties</value>
  </property>
 </bean>
 
 <bean id="dataSource" class="org.springframework.jdbc.datasource.SimpleDriverDataSource">
  <property name="driverClass" value="${jdbc.driverClass}"/>
  <property name="url" value="${jdbc.url}"/>
  <property name="username" value="${jdbc.username}"/>
  <property name="password" value="${jdbc.password}"/>
 </bean>
 
 <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
  <property name="dataSource" ref="dataSource" />
  <property name="configLocation" value="/WEB-INF/config/mybatis-config.xml"/>
 </bean>
 
 <bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
  <constructor-arg ref="sqlSessionFactory"/>
 </bean>
</beans>

 

- WEB-INF/config/mybatis.properties

jdbc.driverClass=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/DB명?autoReconnect=true
jdbc.username=사용자계정
jdbc.password=비밀번호

 

- WEB-INF/config/mybatis.config

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "HTTP://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>
 <settings>
  <setting name="cacheEnabled" value="false" />
  <setting name="useGeneratedKeys" value="true" />
  <setting name="defaultExecutorType" value="REUSE" />
 </settings>
 
 <mappers>
  <mapper resource="../sqlMap/sqlMapper.xml" />
 </mappers>
</configuration>

 

- WEB-INF/sqlMap/sqlMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="네임스페이스"> 
    <select id="쿼리id" parameterType="int"
        resultType="int">
        select count(*) from 테이블명
    </select>
</mapper>

sqlMapper 작성 방법 : http://www.mybatis.org/core/sqlmap-xml.html 

 

WEB-INF/config/mybatis-context.xml 파일은 Spring이 로딩되면서 자동으로 읽게끔 설정을 web.xml에 해뒀으니 로딩이 될 것이다.

 

8. DAO 작성

import java.util.List;

import org.mybatis.spring.support.SqlSessionDaoSupport;

 

public class UserGameLogDAO extends SqlSessionDaoSupport {
 public List selectLogList() {
  return getSqlSession().selectList("네임스페이스.쿼리id");
 }
}

 

- application-context.xml - 이 부분은 필수는 아닌듯 함. 없어도 구동은 되는데 넣었을 때 어떤 효과가 있는지는 모름..

...

<bean class="UserGameLogDAO" name="userGameLogDAO">
 <property name="sqlSessionTemplate" ref="sqlSessionTemplate" />
</bean>

...

 

DAO를 호출하면 DB를 정상적으로 조회해 오는 걸 볼 수 있을 것이다.

저작자 표시


'개발 > 환경설정' 카테고리의 다른 글

아파치 톰캣 Eclipse 연동방법  (0) 2014.03.17
tomcat Server.xml 설정시  (0) 2013.10.02
Spring + Mybatis 환경설정  (0) 2013.09.04