Spring을 이용한 Helloworld
1. 환경 설정
- JDK 1.5 설치 (c:\java에 설치한다. C:\java\ jdk1.5.0_06, C:\java\jre1.5.0_06와 같은 구조)
- Eclipse 3.2 설치 (http://www.eclipse.org/downloads/index.php, c:\java에 설치)
- Tomcat 5.5 설치 (http://jakarta.apache.org/site/downloads, c:\java에 설치)
- Eclipse, Tomcat 플러그인 V312 설치 (http://www.eclipsetotale.com/tomcatPlugin.html)
- 이클립스의 Windows Preference에서 Tomcat 설정한다.
- Spring 다운로드(2.5버전 의존라이브러리가 있는 , http://www.springframework.org/download)
spring-framework-2.5.3-with-dependencies 파일을 다운 후 c:\java아래 압축을 푼다.
압축을 푼후 dist 디렉토리의 spring.jar 파일을 jdk/jre/lib/ext/에 복사
(C:\java\spring-framework-2.5.3 와 같은 구조)
- common-logging.jar파일을 다운로드(http://commons.apache.org/logging/)
commons-logging-1.1.1.jar 파일을 jdk/jre/lib/ext/에 복사
2. Eclipse에서 새프로젝트 JAVA Tomcat Project를 생성한다 (spring이라는 이름으로)
3. hello1 패키지 아래… 다음과 같은 자바 클래스를 생성
[HelloWorld.java]
package hello1;
public interface HelloWorld {
public String sayHello(String message);
}
[HelloWorldImpl.java]
package hello1;
public class HelloWorldImpl implements HelloWorld {
//Property, 생성자에 의해 설정되거나 Setter에 의해 설정 가능함
//본 예제에세는 스프링 컨테이너가 message 특성을 설정(hello1.xml 참조)
private String message;
public HelloWorldImpl() {
}
public HelloWorldImpl(String message) {
this.message = "From Constructor" + message;
}
public String sayHello(String message) {
return this.message + message;
}
public void setMessage(String a) {
message = a;
}
}
[HelloClient.java]
package hello1;
import java.io.*;
import org.springframework.beans.factory.*;
import org.springframework.beans.factory.xml.*;
import org.springframework.core.io.*;
public class HelloClient {
public static void main(String[] args) {
System.out.println(" <<< Start...");
//ClassPathResource : classpath 내에 있는 리소스 검색시 사용
//아래 hello1.xml는 이클립스인 경우 WEB-INF/src에 두면 자동으로 WEB-INF/classes에 저장시킨다.
Resource res = new ClassPathResource("hello1.xml");
//아래의 BeanFactory가 스프링 컨테이너.
BeanFactory factory = new XmlBeanFactory(res);
HelloWorld bean1 = (HelloWorld)factory.getBean("hello");
String s = bean1.sayHello("OracleJava!!");
System.out.println(s);
System.out.println(" <<< End...");
}
}
[hello1.xml]
WEB-INF아래 src에 작성
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<!-- 모든 스프링 설정 파일의 루트 -->
<beans>
<!-- id 속성으로 빈을 명명, class에는 완벽한 클래스 이름을 기술 -->
<bean id="hello" class="hello1.HelloWorldImpl">
<property name="message">
<value>Good Morning1...</value>
</property>
</bean>
</beans>
<!--
위 XML의 의미는 아래와 같으며...
HelloWorldImpl hello = new HelloWorldImpl();
hello.setMessage("Good Morning!...");
또는 아래처럼 생성자를 통해 message 속성을 지정 할 수도 있다.
<beans>
<bean id="hello" class="hello1.HelloWorldImpl">
<constructor-arg>
<value>Good Morning2...</value>
</constructor-arg>
</bean>
</beans>
위 XML은 다음과 같은 의미 입니다.
HelloWorldImpl hello = new HelloWorldImpl("Good Morning2...");
-->
---------------------------
HelloClient를 실행
[결과]
<<< Start...
org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
정보: Loading XML bean definitions from class path resource [hello1.xml]
Good Morning1...OracleJava!!
<<< End...
---------------------------
이번엔 서블릿을 만들어 HelloWorld를 실행해 보자.
[HelloWorldServlet.java]
package hello1;
import java.io.*;
import org.springframework.beans.factory.*;
import org.springframework.beans.factory.xml.*;
import org.springframework.core.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class HelloWorldServlet extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
res.setContentType("text/html; charset=euc-kr");
req.setCharacterEncoding("KSC5601");
PrintWriter out = res.getWriter();
String text = req.getParameter("message");
try {
System.out.println("<<< Start ...");
Resource resource = new ClassPathResource("hello1.xml");
BeanFactory factory = new XmlBeanFactory(resource);
HelloWorld bean1 = (HelloWorld)factory.getBean("hello");
String s = bean1.sayHello(text);
out.println(s);
}
catch(Exception e) {
}
}
public void doPost(HttpServletRequest req,HttpServletResponse resp) throws ServletException,IOException
{
doGet(req, resp);
}
}
[hello1.html]
spring 프로젝트 바로 아래에 작성한다
<html>
<body>
<form method=post action="http://localhost:8080/spring/servlet/HelloWorld">
<input type=text name="message">
<input type=submit>
</form>
</body>
</html>
[web.xml]
WEB-INF 아래에 작성한다.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<servlet>
<servlet-name>HelloWorld</servlet-name>
<servlet-class>hello1.HelloWorldServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloWorld</servlet-name>
<url-pattern>/servlet/HelloWorld</url-pattern>
</servlet-mapping>
</web-app>
[실행]
http://localhost:8080/spring/hello1.html 한 후 결과 확인
댓글 없음:
댓글 쓰기