Spring

04일차_Spring MVC, 데이터송수신, 회원관리.txt

알 수 없는 사용자 2015. 7. 1. 17:35
----------------------------------------------------------
Spring MVC 

1.  웹 개발을 위한 MVC 패턴이 적용된 Spring 프레임워크. Spring 에서는 DispatcherServlet 클래스가 컨트롤러 역할을 합니다.

2. SpringMVC 의 주요 구성 요소
- DispatcherServlet
- HandlerMapping
- Controller : 사용자 작성. 액션 처리.
- ModelAndView
- ViewResolver
- View : 사용자 작성. 결과 출력.
- web.xml : DispatcherServlet 서블릿 객체 등록. 사용자 작성.
- dispatcher-servlet.xml : Controller 객체 등록. 사용자 작성.

3. SpringMVC의 실행 흐름
- 사용자 요청 -> DispatcherServlet 
- DispatcherServlet -> HandlerMapping에 주소 분석 요청
- DispatcherServlet -> 특정 Controller 객체 호출 및 결과 수신. 결과는 ModelAndView 객체. ModelAndView 객체는 View 객체 정보와 결과값이 들어있는 객체임.
- DispatcherServlet -> ViewResolver에 View 객체 분석 요청
- DispatcherServlet -> 특정 View 객체에 Model 객체를 넘겨주고 결과 출력.

4. SpringMVC에서 사용자 역할
- Controller : 액션 처리를 담당하는 Controller 클래스 작성. Controller 인터페이스를 상속받아서 구현.
- web.xml :  서블릿 주소와 DispatcherServlet 클래스 등록
- View : 결과 출력용 JSP 페이지 작성
- dispatcher-servlet.xml : 사용자가 작성한 Controller 객체 등록. URL 매핑 주소 등록.

5. SpringMVC 프로젝트 생성
- 다이나믹 웹 프로젝트 생성
- 톰캣 서버 등록
- SpringMVC 환경 설정을 위한 라이브러리 등록 (WebContent>WEB-INF>lib)
경로1: spring-docs\spring-framework-3.0.2.RELEASE\dist
org.springframework.aop-3.0.2.RELEASE.jar
org.springframework.asm-3.0.2.RELEASE.jar
org.springframework.beans-3.0.2.RELEASE.jar
org.springframework.context-3.0.2.RELEASE.jar
org.springframework.core-3.0.2.RELEASE.jar
org.springframework.expression-3.0.2.RELEASE.jar
org.springframework.web-3.0.2.RELEASE.jar
org.springframework.web.servlet-3.0.2.RELEASE.jar
org.springframework.jdbc-3.0.2.RELEASE.jar
org.springframework.transaction-3.0.2.RELEASE.jar

경로2: spring-de-framework-3.0.2.RELEASEpendencies\org.apache.commons\com.springsource.org.apache.commons.logging\1.1.1
com.springsource.org.apache.commons.logging-1.1.1.jar

ojdbc6.jar, javax.servlet.jsp.jstl-1.2.1.jar, javax.servlet.jsp.jstl-api-1.2.1.jar 파일도 추가해야 합니다.

6. 처리 과정

1) 외부 요청

2) DispatcherServlet 요청 접수
- web.xml에서 DispatcherServlet 등록
    
//web.xml  (WebContent>WEB-INF 폴더 하위에 생성)
<?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" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>SampleProject</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>
  
  <!-- Spring MVC DispatcherServlet 등록 -->
  <!--  
  <servlet>
  	<servlet-name>서블릿식별자</servlet-name>
  	<servlet-class>패키지이름.컨트롤러클래스</servlet-class>
  </servlet>
  <servlet-mapping>
  	<servlet-name>서블릿식별자</servlet-name>
  	<url-pattern>*.확장자</url-pattern>
  </servlet-mapping>
  -->  

  <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>*.it</url-pattern>
  </servlet-mapping>

</web-app>


- dispatcher-servlet.xml에서 URL 패턴 등록
- 사용자 요청 분석

3) 컨트롤러의 특정 메소드 호출 (액션 처리, 모델과 뷰 객체 리턴)
- 사용자 요청에 맞는 액션 처리
- 결과 데이터가 들어있는 모델 객체 준비
- 뷰 정보(JSP 페이지 정보-객체가 아니라 View 페이지 이름) 리턴

4) 뷰 페이지에서 최종 웹페이지를 작성.
- JSP 페이지 내에서 EL, JSTL 표기 사용.

5) 응답 완료.


----------------------------------------
JSP 템플릿 등록

<%@ page language="java" contentType="text/html; charset=${encoding}"
    pageEncoding="${encoding}"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>    
<!DOCTYPE html>
<html>
<head>
<meta charset="${encoding}">
<title>Insert title here</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

</head>
<body>
<div>

</div>
</body>
</html>



-----------------------------------------------
Hello, World! 메시지 출력

//web.xml  (WebContent>WEB-INF 폴더 하위에 생성)
<?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" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>SampleProject</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>
  
  <!-- Spring MVC DispatcherServlet 등록 -->
  <!--  
  <servlet>
  	<servlet-name>서블릿식별자</servlet-name>
  	<servlet-class>패키지이름.컨트롤러클래스</servlet-class>
  </servlet>
  <servlet-mapping>
  	<servlet-name>서블릿식별자</servlet-name>
  	<url-pattern>*.확장자</url-pattern>
  </servlet-mapping>
  -->  

  <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>*.it</url-pattern>
  </servlet-mapping>

</web-app>






//HelloController.java (com.test 패키지 하위에 생성)
package com.test;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;

public class Hello implements Controller {

	@Override
	public ModelAndView handleRequest(HttpServletRequest request,
			HttpServletResponse response) throws Exception {

		//액션 코드
		String result = "Hello, SpringMVC World!";
		
		ModelAndView mav = new ModelAndView();
		mav.addObject("result", result);
		mav.setViewName("/WEB-INF/source/Hello.jsp");

		return mav;
	}

}





//Hello.jsp (WebContent>WEB-INF/source 폴더 하위에 생성)
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>    
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

</head>
<body>
<div>
${result}
</div>
</body>
</html>
</body>
</html>





//dispatcher-servlet.xml (WebContent>WEB-INF 폴더 하위에 생성)
<?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-3.0.xsd">
    
    <bean name="/Hello.it" class="com.test.HelloController"></bean>

</beans>




//요청주소
http://localhost:8090/프로젝트이름/Hello.it



--------------------------------------
데이터 송수신 테스트
- Spring MVC 버전


1. 프로그램 구성
//SendController.java -> 컨트롤러 객체.
//Send.jsp -> 뷰 객체

//ReceiveController.java -> 컨트롤러 객체.
//Receive.jsp -> 뷰 객체

//dispatcher-servlet.xml -> 컨트롤러 객체 등록. URL 매핑 주소 등록.
Send.it -> SendController.java -> Send.jsp
Receive.it -> ReceiveController.java -> Receive.jsp


//요청주소
http://localhost:8090/프로젝트이름/Send.it



2. 프로그램 소스 코드
//SendController.java -> 컨트롤러 객체.
package com.test;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;

public class SendController implements Controller {

	@Override
	public ModelAndView handleRequest(HttpServletRequest request,
			HttpServletResponse response) throws Exception {
		
		ModelAndView mav = new ModelAndView();
		mav.setViewName("/WEB-INF/src/Send.jsp");
		return mav;
	}

}





//Send.jsp -> 뷰 객체
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>    
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

</head>
<body>
<div>
	<form action="Receive.it" method="post">
		이름 <input type="text" name="yourName">
		<input type="submit">
	</form>
</div>
</body>
</html>




//ReceiveController.java -> 컨트롤러 객체.
package com.test;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;

public class ReceiveController implements Controller {

	@Override
	public ModelAndView handleRequest(HttpServletRequest request,
			HttpServletResponse response) throws Exception {
		
		//데이터 수신 (yourName, 한글 인코딩)
		request.setCharacterEncoding("UTF-8");
		String yourName = request.getParameter("yourName");
		
		ModelAndView mav = new ModelAndView();
		mav.addObject("yourName", yourName);
		mav.setViewName("/WEB-INF/src/Receive.jsp");
		return mav;
	}

}







//Receive.jsp -> 뷰 객체
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>    
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

</head>
<body>
<div>
안녕하세요, ${yourName}님.
</div>
</body>
</html>






//dispatcher-servlet.xml -> 컨트롤러 객체 등록. URL 매핑 주소 등록.
<?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-3.0.xsd">

	<!--
	name="" 속성에는 사용자 요청 주소 등록
	class="" 속성에는 컨트롤러 클래스 등록
 	-->	
 	<bean name="/Hello.it" class="com.test.HelloController"></bean>

 	<bean name="/Send.it" class="com.test.SendController"></bean>
 	<bean name="/Receive.it" class="com.test.ReceiveController"></bean>


</beans>





//요청주소
http://localhost:8090/프로젝트이름/Send.it





---------------------------------------------
회원관리 Spring MVC 버전
- SimpleDriverDataSource 클래스 이용
- jdbc 모듈 추가

1. 기능 구현
- 이름, 전화번호 입력 받아서 데이터베이스 저장
- 이름, 전화번호를 데이터베이스에서 읽어내서 화면에 출력

2. 데이터베이스 준비
CREATE TABLE memberList(
	mid NUMBER  --PK
	,name VARCHAR2(30)
	,telephone VARCHAR2(30)
);

CREATE SEQUENCE memberListSeq;

ALTER TABLE memberList
	ADD CONSTRAINT memberList_mid_pk PRIMARY KEY(mid);

INSERT INTO memberList (mid, name, telephone)
	VALUES (memberListSeq.nextval, 'kim', '010-123-1234');
COMMIT;

SELECT mid, name, telephone 
	FROM memberList 
	ORDER BY mid;

SELECT COUNT(mid) AS count  FROM memberList;


3. 화면 구성
[회원 관리]

이름 : hong             -> <input type="text">
전화 : 010-123-1234     -> <input type="text">
회원추가                -> <input type="button">

전체 인원수 : 2명              -> <p> ... </p>
----------------------------   -> <table>...</table>
번호 이름 전화
1   hong   010-123-1234
2   kim    010-222-2222
----------------------------


4. Spring MVC + JDBC 환경 jar 파일 목록
com.springsource.org.apache.commons.logging-1.1.1.jar
javax.servlet.jsp.jstl-1.2.1.jar
javax.servlet.jsp.jstl-api-1.2.1.jar
ojdbc6.jar
org.springframework.aop-3.0.2.RELEASE.jar
org.springframework.asm-3.0.2.RELEASE.jar
org.springframework.beans-3.0.2.RELEASE.jar
org.springframework.context-3.0.2.RELEASE.jar
org.springframework.core-3.0.2.RELEASE.jar
org.springframework.expression-3.0.2.RELEASE.jar
org.springframework.jdbc-3.0.2.RELEASE.jar
org.springframework.transaction-3.0.2.RELEASE.jar
org.springframework.web-3.0.2.RELEASE.jar
org.springframework.web.servlet-3.0.2.RELEASE.jar



5. 프로그램 구성

//Member.java -> 사용자 정의 자료형 클래스
//MemberDAO.java -> 데이터베이스 액션 클래스. Connection 객체에 대한 의존성 주입. setter 메소드 추가
//MemberList.jsp -> 회원 명단 출력. 회원 추가 폼 화면 구성.

//MemberListController.java -> 컨트롤러 클래스.  출력 액션. DAO 객체에 대한 의존성 주입. setter 메소드 추가
//MemberInsertController.java -> 컨트롤러 클래스. 회원 추가 액션. DAO 객체에 대한 의존성 주입. setter 메소드 추가
//dispatcher-servlet.xml  
->  컨트롤러 객체 등록. 사용자 요청 주소 등록. SimpleDriverDataSource 객체 등록. 의존 객체 주입 설정. DAO 객체 등록.

//요청주소
http://localhost:8090/프로젝트이름/MemberList.it


6. 프로그램 소스코드

//Member.java -> 사용자 정의 자료형 클래스
package com.test;

public class Member {
	
	private String mid, name, telephone ;

	public String getMid() {
		return mid;
	}

	public void setMid(String mid) {
		this.mid = mid;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getTelephone() {
		return telephone;
	}

	public void setTelephone(String telephone) {
		this.telephone = telephone;
	}

}





//MemberDAO.java -> 데이터베이스 액션 클래스. Connection 객체에 대한 의존성 주입. setter 메소드 추가
package com.test;

import java.sql.*;
import java.util.*;

import javax.sql.DataSource;

public class MemberDAO {
	
	//의존객체 주입(DI) 준비
	private DataSource dataSource;
	public void setDataSource(DataSource dataSource) {
		this.dataSource = dataSource;
	}
	
	public ArrayList<Member> list()  {
		ArrayList<Member> result = new ArrayList<Member>();
		
		Connection conn = null;
		PreparedStatement pstmt = null;
		try {
			//Connection 객체 얻는 방법
			conn = dataSource.getConnection();
			
			String sql = "SELECT mid, name, telephone FROM memberList ORDER BY mid";
			pstmt = conn.prepareStatement(sql);
			ResultSet rs = pstmt.executeQuery();
			while(rs.next()) {
				Member member = new Member();
				member.setMid(rs.getString("mid"));
				member.setName(rs.getString("name"));
				member.setTelephone(rs.getString("telephone"));
				result.add(member);				
			}
			rs.close();
			
		} catch (SQLException e) {
			e.printStackTrace();
		}finally {
		    try{
		    	if (pstmt != null) {
		    		pstmt.close();
		    	}
				conn.close();
		    }catch(SQLException se){
		       se.printStackTrace();
		    }
		}			
		
		return result;
	}
	
	//전체 회원수 출력 액션 처리
	public int count() {
		int result = 0;
		
		Connection conn = null;
		PreparedStatement pstmt = null;
		try {
			//Connection 객체 얻는 방법
			conn = dataSource.getConnection();
			
			String sql = "SELECT COUNT(mid) AS count FROM memberList";
			
			pstmt = conn.prepareStatement(sql);
			ResultSet rs = pstmt.executeQuery();
			while(rs.next()) {
				result = rs.getInt("count");
			}
			rs.close();
			
		} catch (SQLException e) {
			e.printStackTrace();
		}finally {
		    try{
		    	if (pstmt != null) {
		    		pstmt.close();
		    	}
				conn.close();
		    }catch(SQLException se){
		       se.printStackTrace();
		    }
		}			
			
		return result;
	}	
	
	
	//회원 추가 액션 처리
	public int add(Member member) {
		int result = 0;
		
		Connection conn = null;
		PreparedStatement pstmt = null;
		try {
			//Connection 객체 얻는 방법
			conn = dataSource.getConnection();

			String sql = "INSERT INTO memberList (mid, name, telephone) VALUES (memberListSeq.nextval, ?, ?)";
			
			pstmt = conn.prepareStatement(sql);
			pstmt.setString(1, member.getName());
			pstmt.setString(2, member.getTelephone());
			pstmt.executeUpdate();
			
		} catch (SQLException e) {
			e.printStackTrace();
		}finally {
		    try{
		    	if (pstmt != null) {
		    		pstmt.close();
		    	}
				conn.close();
		    }catch(SQLException se){
		       se.printStackTrace();
		    }
		}			
			
		
		return result;
	}	
	
	
}




문제) 아래 나머지 소스 코드 작성할 것.

//MemberListController.java -> 컨트롤러 클래스.  출력 액션. DAO 객체에 대한 의존성 주입. setter 메소드 추가
package com.test;

import java.util.ArrayList;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;

public class MemberListController implements Controller {

	//의존객체 주입(DI) 준비
	private MemberDAO dao;
	public void setMemberDAO(MemberDAO dao) {
		this.dao = dao;
	}
	
	@Override
	public ModelAndView handleRequest(HttpServletRequest request,
			HttpServletResponse response) throws Exception {

		//액션 코드 추가
		//데이터베이스 액션 -> count(), list() 메소드 호출
		int count = dao.count();
		ArrayList<Member> list = dao.list();	
		
		ModelAndView mav = new ModelAndView();
		mav.addObject("count", count);
		mav.addObject("list", list);
		mav.setViewName("/WEB-INF/src/MemberList.jsp");
		return mav;
	}

}




//MemberList.jsp -> 회원 명단 출력. 회원 추가 폼 화면 구성.
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>회원관리</title>

<link rel="stylesheet" type="text/css" href="MyTable.css">

<style type="text/css">
	#error { display: none; color: red; }
</style>

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
	$("#myForm").submit(function() {
		$("#error").css("display", "none");
		if ($("#name").val()=="" || $("#telephone").val()=="") {
			$("#error").css("display", "inline");
			return false;
		}
		return true;
	});
	$("#name").keyup(function(){
		$("#nameLength").html($(this).val().length);
	});
	$("#telephone").keyup(function(){
		$("#telephoneLength").html($(this).val().length);
	});
});
</script>

</head>
<body>
<div>
<h1>[회원 관리]</h1>

<%-- action="" 속성에서 서블릿 주소 지정 (*.it) --%>
<form action="MemberInsert.it" method="post" id="myForm">
	<table>
		<tr>
			<th>이름*</th>
			<td>
			<input type="text" id="name" name="name" 
					required="required"> ( <span id="nameLength">0</span> / 30 )
			</td>
		</tr>
		<tr>
			<th>전화*</th>
			<td>
			<input type="text" id="telephone" name="telephone" 
					required="required"> ( <span id="telephoneLength">0</span> / 30 )
			</td>
		</tr>
		<tr>
			<th></th>
			<td>
			<input type="submit">
			<span id="error">모든 항목을 채워야 합니다.</span>
			</td>
		</tr>
	</table>
</form>

<h2>
	전체 인원수 : ${count} 명
</h2>
<table id="customers">
	<tr>
		<th>번호</th><th>이름</th><th>전화</th>
	</tr>
	<c:forEach var="member" items="${list}">
	<tr>
		<td>${member.mid}</td>
		<td>${member.name}</td>
		<td>${member.telephone}</td>
	</tr>	
	</c:forEach>
</table>

</div>
</body>
</html>




//MemberInsertController.java -> 컨트롤러 클래스. 회원 추가 액션. DAO 객체에 대한 의존성 주입. setter 메소드 추가
package com.test;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;

public class MemberInsertController implements Controller {

	//의존객체 주입(DI) 준비
	private MemberDAO dao;
	public void setMemberDAO(MemberDAO dao) {
		this.dao = dao;
	}
	
	@Override
	public ModelAndView handleRequest(HttpServletRequest request,
			HttpServletResponse response) throws Exception {

		//액션 코드 추가
		//데이터 수신 (한글 인코딩)
		request.setCharacterEncoding("UTF-8");
		String name = request.getParameter("name"); 
		String telephone = request.getParameter("telephone");
		
		//데이터베이스 액션
		Member member = new Member();
		member.setName(name);
		member.setTelephone(telephone);
		dao.add(member);	
		
		ModelAndView mav = new ModelAndView();
		mav.setViewName("redirect:MemberList.it");
		return mav;
	}

}





//dispatcher-servlet.xml  
->  컨트롤러 객체 등록. 사용자 요청 주소 등록. SimpleDriverDataSource 객체 등록. 의존 객체 주입 설정. DAO 객체 등록.
<?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-3.0.xsd">
    
    <bean id="remoteDataSource" 
    class="org.springframework.jdbc.datasource.SimpleDriverDataSource">
    	<property name="driverClass" 
    			value="oracle.jdbc.driver.OracleDriver" />
    	<property name="url" 
    			value="jdbc:oracle:thin:@211.63.89.72:1521:xe" />
    	<property name="username" value="username" />
    	<property name="password" value="password" />
    </bean>
    
   <bean id="memberDAO" class="com.test.MemberDAO">
    	<property name="dataSource">
    		<ref bean="remoteDataSource" />
    	</property>
    </bean>  

 	<bean name="/MemberList.it" class="com.test.MemberListController">
    	<property name="memberDAO">
    		<ref bean="memberDAO" />
    	</property>
 	</bean>
 	
 	<bean name="/MemberInsert.it" class="com.test.MemberInsertController">
    	<property name="memberDAO">
    		<ref bean="memberDAO" />
    	</property>
 	</bean>

</beans>






//요청주소
http://localhost:8090/프로젝트이름/MemberList.it


--------------------------------------