- springapp-servlet.xml

[code]<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">
<!--  - Application context definition for "springapp" DispatcherServlet.  -->
<beans>
 <bean id="defaultController" class="dic.controllers.DefaultController"/>
    <bean id="helloController" class="dic.controllers.HelloController"/>
   
    <bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
            <property name="mappings">           
             <props>
              <prop key="**/*.do">defaultController</prop>
              <prop key="/hello.do">helloController</prop>
             </props>
            </property>
    </bean>
    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
        <property name="prefix" value="/WEB-INF/jsp/"/>
        <property name="suffix" value=".jsp"/>
    </bean>
</beans>[/code]


- DefaultController.java

[code]package dic.controllers;

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

import org.springframework.web.servlet.ModelAndView;

public class DefaultController extends DicSuperController {

 @Override
 ModelAndView dicHandleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
  String contextPath = request.getContextPath();
  String uri = request.getRequestURI();
  String viewName = uri.substring(contextPath.length()+1,uri.lastIndexOf("."));

  return new ModelAndView(viewName);
 }

}[/code]



위와같이 셋팅하면 지정되지 않은 Controller 는 기본으로 DefaultController 로 지정되어 처리되게 된다.

' > Spring' 카테고리의 다른 글

Spring 의 exception 처리 전략  (26) 2007.05.29
클래스의 toString 및 equals 메소드 자동으로 만들어주기.  (47) 2007.05.26
SPRING  (25) 2007.02.28
JSTL 사용하기  (28) 2007.02.28
hello spring 테스트  (19) 2007.02.27
by cranix 2007. 5. 24. 22:22

- url 을 바꾸지않고 jsp 경로 변경하기
  - springapp-servlet.xml 파일에 아래와같이 추가하면 jsp 가 불러질때(컨트롤러에서) 앞과 뒤에 자동으로 붙어서 넘어가게 설정할수 있다.

    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="viewClass"><value>org.springframework.web.servlet.view.JstlView</value></property>
        <property name="prefix"><value>/jsp/</value></property>
        <property name="suffix"><value>.jsp</value></property>
    </bean>

  - 이와같이 설정하면 Controller 에서도 아래와같이 변경해 줘야한다.


package cranix.framework;
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 SpringappController implements Controller {
 public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
  // TODO Auto-generated method stub
  String now = (new java.util.Date()).toString();
  return new ModelAndView("hello","now",now);
 }
}

 - 원래는 hello.jsp 였으나 앞과 뒤에 /jsp/ , .jsp 가 각각 붙기때문에 그냥 hello 만 써주어도 된다.

  --> 처음에는 beans 에 선언되어있는 빈 들이 독립적으로 쓰이는 것인줄 알았으나 해보니 서로의 기능이 병합되어서 프로그램에 반영되는것을 알았다. 일종의 플러그인 같은걸로 이해하면 되겠다.
 


- 간단한 모델 사용하기
  - 테스트를위해 아래 두 클래스를 만든다.
    - Product.java

package cranix.framework;
import java.io.Serializable;
public class Product implements Serializable {
 private String description;
 private Double price;
 public void setDescription(String s) {
  description = s;
 }
 public String getDescription() {
  return description;
 }
 public void setPrice(Double d) {
  price = d;
 }
 public Double getPrice() {
  return price;
 }
}

    - ProductManager.java

package cranix.framework;
import java.io.Serializable;
import java.util.List;
public class ProductManager implements Serializable {
 private List products;
 public void setProducts(List p) {
  products = p;
 }
 public List getProducts() {
  return products;
 }
}

  - 컨트롤러를 아래와같이 변경한다.


package cranix.framework;
import java.util.HashMap;
import java.util.Map;
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 SpringappController implements Controller {
 private ProductManager pm =null;
 
 public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
  // TODO Auto-generated method stub
  String now = (new java.util.Date()).toString();
  Map myModel = new HashMap();
  myModel.put("now", now);
  myModel.put("products", getProductManager().getProducts());
 
  return new ModelAndView("hello","model",myModel);

 }
 
 public void setProductManager(ProductManager pm) {
  this.pm = pm;
 }
 public ProductManager getProductManager() {
  return this.pm;
 }
}

    --> ModelAndView 클래스의 이름이 왜 모델과 뷰 인지 이제야 이해가 간다.


  - springapp-servlet.xml 파일을 아래와같이 변경한다.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">
<!--  - Application context definition for "springapp" DispatcherServlet.  -->
<beans>
    <bean id="springappController" class="cranix.framework.SpringappController">
     <property name="productManager">
      <ref bean="prodMan"/>
     </property>
    </bean>
    <bean id="prodMan" class="cranix.framework.ProductManager">
     <property name="products">
      <list>
       <ref bean="product1"/>
       <ref bean="product2"/>
       <ref bean="product3"/>
      </list>
     </property>
    </bean>
    <bean id="product1" class="cranix.framework.Product">
     <property name="description"><value>Lamp</value></property>
     <property name="price"><value>12.34</value></property>
    </bean>
    <bean id="product2" class="cranix.framework.Product">
     <property name="description"><value>테스트</value></property>
     <property name="price"><value>22.12</value></property>
    </bean>
    <bean id="product3" class="cranix.framework.Product">
     <property name="description"><value>ABC</value></property>
     <property name="price"><value>234.22</value></property>
    </bean>

    <bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
            <property name="mappings">           
             <props>               
              <prop key="/hello.sdo">springappController</prop>           
             </props>       
            </property>   
    </bean>
    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="viewClass"><value>org.springframework.web.servlet.view.JstlView</value></property>
        <property name="prefix"><value>/jsp/</value></property>
        <property name="suffix"><value>.jsp</value></property>
    </bean>
</beans>

  - 설정파일에서 직접 파라메터를 셋팅하는 화면이다.
     클래스의 set 메소드들을 property 태그로 셋팅할수 있다.


 참조 : http://www.springframework.org/docs/MVC-step-by-step/Spring-MVC-step-by-step-Part-2.html

' > Spring' 카테고리의 다른 글

클래스의 toString 및 equals 메소드 자동으로 만들어주기.  (47) 2007.05.26
기본 Controller 지정하기.  (23) 2007.05.24
JSTL 사용하기  (28) 2007.02.28
hello spring 테스트  (19) 2007.02.27
스프링 프레임워크 공식 홈페이지  (16) 2007.02.26
by cranix 2007. 2. 28. 10:57

HELLO SPRING 테스트


1. SPRING 을 위한 환경설정
  - WEB-INF/lib 디렉토리를 만들고 dist/spring.jar 파일을 넣는다.
    --> Hello Spring 만을 찍기위함 이기때문에 딴건 다 필요없고 spring.jar 파일만 있으면 된다.

2. SPRING 의 WEB.XML 파일설정
  - web.xml 파일에 추가


    <servlet>
        <servlet-name>springapp</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>springapp</servlet-name>
        <url-pattern>*.sdo</url-pattern>
    </servlet-mapping>

    --> 위와같이 설정법은 스트러츠의 그것과 동일하다.


3. SPRING 의 설정파일
  - springapp-servlet.xml 파일


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">
<!--  - Application context definition for "springapp" DispatcherServlet.  -->
<beans>
    <bean id="springappController" class="cranix.framework.SpringappController"/>
    <bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
            <property name="mappings">           
             <props>               
              <prop key="/hello.sdo">springappController</prop>           
             </props>       
            </property>   
    </bean>
</beans>


    --> 1에서 servlet-name 이 springapp 로 되어있다면 설정파일은 WEB-INF/springapp-servlet.xml 이된다.
    --> 이런형태면 각 맵핑마다 컨트롤러를 따로 지정할수 있을꺼같다.
    --> API 를 잠깐 확인해봤을때 기본 컨트롤러 들이 있었는데 그런것들을 좀더 공부해봐야겠다.

4. 실행
  - http://localhost:8080/appname/hello.sdo 실행
    --> 만약 실행했는데 dtd 파일을 못찾는다고 오류가나면 2번의 설정파일에서 "http://www.springframework.org/dtd/spring-beans-2.0.dtd" 로 바꾼후 실행한다.


참고 : http://www.springframework.org/docs/MVC-step-by-step/Spring-MVC-step-by-step-Part-1.html

' > Spring' 카테고리의 다른 글

SPRING  (25) 2007.02.28
JSTL 사용하기  (28) 2007.02.28
스프링 프레임워크 공식 홈페이지  (16) 2007.02.26
Spring 프레임 워크북  (17) 2007.02.26
Spring Framework 레퍼런스  (23) 2007.02.26
by cranix 2007. 2. 27. 14:08

' > Spring' 카테고리의 다른 글

SPRING  (25) 2007.02.28
JSTL 사용하기  (28) 2007.02.28
hello spring 테스트  (19) 2007.02.27
스프링 프레임워크 공식 홈페이지  (16) 2007.02.26
Spring 프레임 워크북  (17) 2007.02.26
by cranix 2007. 2. 26. 15:12
| 1 2 |