spring 에 대해서 버전 별로 설정을 정리 할 필요성이 있다고 생각 되어
실제 현장에서 사용할 만한 버전(2.5) 부터 정리를 시작 합니다.
(4.0 의 prototype이 나오는 걸 보면 이제 실제 현장에서 2.0 버전 정도는 없을거고
생각이 됩니다.)
아래 내용은 기본적인 설정 내용이며 xml 로 bean 설정 하여 mvc 를 구성하는 내용과
annotation 을 이용하여 mvc 를 구성 하는 내용을 모두 한 프로젝트에서 기술 하였습니다.
1. spring site 에서 다운로드를 받습니다.
http://www.springsource.org/download/community
에서
위와 같이 SEC 라는 버전을 다운로드 받으시길 바랍니다.
2. eclipse 에 new > Others > Web > Dynamic Web Project 를 선택 하여
아래의 그림과 같이 구성 합니다. (eclipse 에 tomcat 또는 다른 container 로 server 를 추가
하여 연동 하는 내용은 적지 않겠습니다.)
3. 위의 그림 중 가장 먼저 (밑에 조금 짤렸지만) web.xml 을 작성 해 보겠습니다.
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>sample</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<!-- 공통으로 사용할 수 있는 bean 들(db 연결 등)에 대해 선 할 수 있도록 하는 설정 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:/conf/spring/applicationContext.xml</param-value>
</context-param>
<!-- web mvc 관련 설정 (service bean, url mapping 등등) -->
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:/conf/spring/dispatcher-servlet.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<!-- charater encoding 을 servlet filter 로 구현 -->
<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>
</web-app>
4. 설정 부터 해야 하므로 applicationContext.xml 과 dispatcher-servlet.xml 을 작성해
보겠습니다.
4-1. applicationContext.xml 의 경우 db 연결 같은 공통적인 bean 설정을 하는데
여기서는 기본 mvc 설정만 하므로 ibatis 나 hibernate 같은 framework 를 사용한
bean 설정 같은 것은 하지 않으므로 공란 입니다.
그래도 맛이라도 보게 하기 위해 예전에 mysql db 연결 해 놓았던 db 연결 로직을 적어 놓겠습
니다.
applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<!-- Mysql setting sample -->
<!--
<bean id="dataSource-Mysql" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="jdbc/mysql"/>
<property name="resourceRef" value="true" />
</bean>
<bean id="sqlMapClient-Mysql" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="configLocation" value="/WEB-INF/conf/sql/sqlMapConfig-Mysql.xml" />
<property name="dataSource" ref="dataSource-Mysql" />
</bean>
<bean id="trManager-Mysql" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource-Mysql" />
</bean>
-->
</beans>
4-2. dispatcher-servlet.xml 은 web mvc 관련된 url mapping 이라던지 controller, service
등의 bean 설정 입니다.
xml 태그 방식으로 설정 가능 하고 annotation 형태로도 가능하지만 점점 annotation으로
사용하는 추세 입니다.
여기서는 두 방식을 비교해 보시라고 모두 기술 하였습니다.
<?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:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:lang="http://www.springframework.org/schema/lang"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:util="http://www.springframework.org/schema/util"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd
http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang-2.5.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.5.xsd">
<!-- annotation setting -->
<context:component-scan base-package="com.test"/>
<context:annotation-config/>
<bean id="annotationMapping" class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">
<property name="alwaysUseFullPath" value="true"/>
<property name="order" value="1"/>
</bean>
<!-- basic xml setting -->
<bean id="basicController" class="com.test.controller.BasicController">
<property name="basicService" ref="basicService"/>
</bean>
<bean id="basicService" class="com.test.biz.BasicServiceImpl"></bean>
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
</bean>
<bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="urlMap">
<props>
<prop key="/basic/basic.do">basicController</prop>
</props>
</property>
</bean>
</beans>
5. 이제 설정 파일들은 거의 설정 완료 된 것 같습니다. 그러므로 controller 들을 작성해 보죠.
BasicController.java
package com.test.controller;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.validation.BindException;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;
import com.test.biz.BasicService;
public class BasicController implements Controller{
private BasicService basicService;
public void setBasicService(BasicService basicService) {
this.basicService = basicService;
}
@Override
public ModelAndView handleRequest(HttpServletRequest request,
HttpServletResponse response) throws Exception {
// TODO Auto-generated method stub
ModelAndView mav = new ModelAndView();
mav.addObject("pageName",basicService.getPageName());
mav.setViewName("/sample/basicSample");
return mav;
}
}
AnnotationController.java
package com.test.controller;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import com.test.biz.BasicService;
@Controller
public class AnnotationController {
@Resource(name="annotationService")
BasicService annotationService;
@RequestMapping(value="/annotation/annotation.do")
public ModelAndView getPage(HttpServletResponse response,HttpServletRequest request){
ModelAndView mav = new ModelAndView();
mav.addObject("pageName",annotationService.getPageName());
mav.setViewName("/sample/annotationSample");
return mav;
}
}
6. controller 작성을 끝냈으니 service 부분들을 작성해 보죠.
BasicService.java
package com.test.biz;
public interface BasicService {
public String getPageName();
}
package com.test.biz;
public class BasicServiceImpl implements BasicService{
public String getPageName(){
return "BasicSample.jsp";
}
}
AnnotationServiceImpl.java
package com.test.biz;
import org.springframework.stereotype.Service;
@Service("annotationService")
public class AnnotationServiceImpl implements BasicService{
@Override
public String getPageName() {
// TODO Auto-generated method stub
return "AnnotationSample.jsp";
}
}
<%@ 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>basic sample</title>
</head>
<body>
<%
out.println((String)request.getAttribute("pageName"));
%>
</body>
</html>
annotationSample.jsp
<%@ 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>annotationSample</title>
</head>
<body>
<%
out.println((String)request.getAttribute("pageName"));
%>
</body>
</html>
8. 위와 같이 프로젝트를 구성한 후엔 eclipse 의 navigator 나 Project Explorer 의
프로젝트 위에서 마우스 우클릭 후 Run As > Run On Server 로 프로젝트를
container(tomcat 또는 etc...)로 구동 시켜보도록 합시다.
2개의 URL 로 접근 가능한데
URL 1 (xml bean, controller 설정):
http://localhost:8080/SpringWebSample/basic/basic.do
URL 1 (annotation bean, controller 설정):
http://localhost:8080/SpringWebSample/annotation/annotation.do
로 접근 하면 아래와 같이 출력 됩니다.
'SPRING > web mvc 설정' 카테고리의 다른 글
[ SPRING ] spring 2.5 + ibatis web mvc (0) | 2013.10.27 |
---|
댓글