- 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
JSTL ( JSP Tag Library )

일반적으로 사용하는 JSP 태그를 표준화 시킨건데 아래 것들이 많이 사용된다.

CORE  ::  http://java.sun.com/jstl/core   ::  c
XML    ::  http://java.sun.com/jstl/xml    ::  x
I18N     ::  http://java.sun.com/jstl/fmt     :: fmt
SQL     ::  http://java.sun.com/jstl/sql     ::  sql

예) <%@ taglib prefix="c"  uri="http://java.sun.com/jstl/core"  %>

위와같이 JSP 파일에 선언해주면 되는데 하기전에 라이브러리 파일과 tld 파일을 설치해 줘야한다.

- JSTL 설치하기

1. JSTL 다운로드

JSTL 은 아래 두사이트에서 다운로드 할수있다.
  --> 여기서 다운로드를 해봤는데 모든 툴들이 하나로 통합되어 진거 같다.
        JSTL 만 따로 받고싶은 나로선 별로 내키진 않았다.

2) http://apache.org 
  --> 여기서는 jakarta-taglibs-standard-1.1.2.zip 파일을 받으면 된다.


2. 설치
  - WEB-INF/lib 디렉토리에 jstl.jar 와 standard.jar 파일을넣는다.
  - WEB-INF/tld 에다가 tld 폴더를 복사한다.

3. WEB.XML 설정
  --> 처음에 uri="http://java.sun.com/jstl/core" 라고 쓰는걸 보고 sun 에서 해당 url 을 지원해 주는줄 알았으나 그게 아니고 WEB.xml 파일에 아래와같이 설정해 줘야지 쓸수 있는것이다.

             <taglib>
                           <taglib-uri>http://java.sun.com/jstl/core</taglib-uri>
                           <taglib-location>/WEB-INF/tld/c.tld</taglib-location>
             </taglib>
 
             <taglib>
                          <taglib-uri>http://java.sun.com/jstl/xml</taglib-uri>
                          <taglib-location>/WEB-INF/tld/x.tld</taglib-location>
             </taglib>
 
             <taglib>
                           <taglib-uri>http://java.sun.com/jstl/fmt</taglib-uri>
                          <taglib-location>/WEB-INF/tld/fmt.tld</taglib-location>
             </taglib>

4. JSP 선언
  --> 위에서 말한것처럼 JSP 파일에는 아래와같이 선언해주면 된다.
<%@ taglib prefix="c"  uri="http://java.sun.com/jstl/core"  %>



- EL(expression language) 내장객체
 
pageScope  ::  page 범위에 포함된 속성 값에 접근
requestScope  ::  request 범위에 포함된 속성값에 접근
sessionScope ::  session 범위에 포함된 속성값에 접근
applicationScope  ::  application 범위에 포함된 속성값에 접근
param  ::  request.getParameter("aa")와 동일한 기능. 사용은  $(param.aa)
paramValues  ::  request.getParameterValues의 기능. $(paramValues.aa)
header  ::  request.getHeader('aa") 와 동일.  $(header.aa)
headerValues  ::  request.getHeaderValues("aa")와 동일 $(headerValues.aa)
initParam  ::  컨텍스트의 초기화 파라미터값
cookie  ::  쿠키 정보에 접근
pageContext  :: PageContext 객체


참조 : http://blog.empas.com/zeroscience/17279705

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

기본 Controller 지정하기.  (23) 2007.05.24
SPRING  (25) 2007.02.28
hello spring 테스트  (19) 2007.02.27
스프링 프레임워크 공식 홈페이지  (16) 2007.02.26
Spring 프레임 워크북  (17) 2007.02.26
by cranix 2007. 2. 28. 10:36
| 1 |