글
- 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>
<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 javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;
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);
}
// 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 String description;
private Double price;
public void setDescription(String s) {
description = s;
}
description = s;
}
public String getDescription() {
return description;
}
return description;
}
public void setPrice(Double d) {
price = d;
}
price = d;
}
public Double getPrice() {
return price;
}
}
return price;
}
}
- ProductManager.java
package cranix.framework;
import java.io.Serializable;
import java.util.List;
import java.util.List;
public class ProductManager implements Serializable {
private List products;
private List products;
public void setProducts(List p) {
products = p;
}
products = p;
}
public List getProducts() {
return products;
}
}
return products;
}
}
- 컨트롤러를 아래와같이 변경한다.
package cranix.framework;
import java.util.HashMap;
import java.util.Map;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;
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;
}
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>
<!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 |
RECENT COMMENT