2017년 1월 9일 월요일

[자바교육/스프링교육/스프링프레임워크/스프링부트학원추천_탑크리에듀]Spring을 이용한 HelloWorld!!

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 한 후 결과 확인 

댓글 없음:

댓글 쓰기