스프링 - 상품 리스트

Posted by 단순대왕 Spring : 2014. 10. 31. 15:59

BeanNameUrlHandlerMapping 정의

<!-- Controller -->

<bean id="indexController" name="/index.html" class="controller.IndexController" p:shopService-ref="shopService">

</bean>

BeanNameUrlHandlerMapping Controller 클래스의 name 속성에 지정한 값을 그대로 경로로 사용.

http://localhost/index.html URL 호출에서만 indexController 가 사용됩니다.

 

InternalResourceView 정의

InternalResourceView 클래스는 컨트롤러가 반환한 뷰 정보를 컨텍스트 상의 경로로 변화시켜 처리하는 클래스

명시적으로 정의도 가능하다.

<!-- ViewResolver -->

<bean id="internalResourceViewResolver"

class="org.springframework.web.servlet.view.InternalResourceViewResolver">

<property name="viewClass">

<value>org.springframework.web.servlet.view.JstlView</value>

</property>

<property name="prefix">

<value>WEB-INF/jsp/</value>

</property>

<property name="suffix">

                      <value>.jsp</value>

</property>

</bean>

 

컨트롤러

class IndexController implements Controller

ModelAndView handlerRequest()

 

InternalResourceView 클래스는 요청 스코프에 모델을 지정하고, javax.servlet.RequestDispatcher에 처리를 위임.

RequestDispatcher는 요청을 index.jsp에 전송.

index.jsp 에서는 request 변수에서 모델을 참조하여 처리.

 

[Sample DomainImpl]

public class ItemDaoImpl implements ItemDao {

private SimpleJdbcTemplate template;

 

public void setDataSource(DataSource dataSource) {

this.template = new SimpleJdbcTemplate(dataSource);

}

 

private static final String SELECT_ALL = "SELECT item_id, item_name, price, description, picture_url FROM item";

 

public List<Item> findAll() {

RowMapper<Item> mapper = new BeanPropertyRowMapper<Item>(Item.class);

return this.template.query(ItemDaoImpl.SELECT_ALL, mapper);

}

 

private static final String SELECT_BY_PRIMARY_KEY =

"SELECT item_id, item_name, price, description, picture_url FROM item WHERE item_id = ?";

// ‘?’ 기호를 사용해서 쿼리에 지정할 실제 값을 인수로 넘긴다.

 

public Item findByPrimaryKey(Integer itemId) {

RowMapper<Item> mapper = new BeanPropertyRowMapper<Item>(Item.class);

return this.template.queryForObject(SELECT_BY_PRIMARY_KEY, mapper, itemId);

}

}

 

BeanPropertyRowMapper

검색 결과값을 Java Beans에 지정하는 경우, RowMapper를 구현한 클래스를 만들지 않고 바로 쓸 수 있는 클래스.

검색결과 값을 그 column 이름에 대응하는 Java Bean 필드에 지정.

Column 이름과 같든지, column 이름을 낙타표기법과 같은 필드 이름으로 지정

 

SimpleUrlHandlerMapping 클래스

어떤 URL에 요청이 들어오면 어느 컨트롤러가 처리할지를 컨트롤러와 URL의 맵핑으로 연관짓는데,

SimpleUrlHandlerMapping 클래스를 사용하면 그 맵핑을 설정 파일 한 곳에 모아서 작성할 수 있다.

 

<!-- HandlerMapping -->

<bean id="handlerMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">

<property name="mappings">

<value>

/index.html=indexController

/detail.html=detailController

</value>

</property>

</bean>

 

[비교] BeanNameUrlHandlerMapping

BeanNameUrlHandlerMapping 클래스를 사용하면 설정 파일에 컨트롤러를 정의할 때마다 요청 URL을 기술

<!-- Controller -->

<bean id="indexController" name="/index.html" class="controller.IndexController" p:shopService-ref="shopService">

</bean>

 

네임스페이스 P를 사용한 프로퍼티 설정

<property> 요소 대신 네임스페이스 P 를 사용해서 설정.

<bean id="entityManager" class="EntityManagerBean" p:persistenceUnitName="ticketReservation"></bean>

 

<bean id="entityManager" class="EntityManagerBean">

<property name="persistencaUnitName">

<value>ticketReservation</value>

</property>

</bean>

 

프로퍼티 이름 뒤에  ‘-ref’를 붙이면, 다른 bean으로의 참조를 간주.

<bean id="selectEventUi" class="ui.SelectEventUi" p:eventDao-ref="eventDao"></bean>

 

<bean id="selectEventUi" class="ui.SelectEventUi">

<property name="eventDao" ref="eventDao"></property>

</bean>

 

 

'Spring' 카테고리의 다른 글

스프링 - 로그인  (1) 2014.10.31
스프링 Web Application 만들기 - 스프링 기본  (1) 2014.10.31