Tomcat + Spring Framework + iBatis 를 설치해야할 일이 생겨 하는 김에 여기에 정리해놓고자 한다.
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해준다.
위와 같이 프로젝트가 생성이 되었으면 성공이다.
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 한 버전에 맞게 선택하면 된다.)
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 로 이름이 바꼈다.
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)
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 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를 정상적으로 조회해 오는 걸 볼 수 있을 것이다.
'Web Programming > java-jsp' 카테고리의 다른 글
팩토리 패턴 (0) | 2013.09.08 |
---|---|
싱글톤 패턴 (0) | 2013.09.08 |
객체(Object)와 인스턴스(Instance) (0) | 2013.09.08 |
싱글톤 패턴 & 팩토리 패턴 (0) | 2013.09.04 |
ermaster (0) | 2013.09.04 |