Web단에서의 파라미터 추출

웹단에서의 파라미터추출 방식

Class  PersonVO  {

 private String name;

 private String address;

//getter

//setter

}

 

//서블릿에서

 vo.setName(request.getParameter("name");

 vo.setAddress(request.getParameter("adress");

-> 한줄이지만 name이 두번 들어간 중복된 코드. 그리고 이런 속성의 갯수만큼 코드를 반복한 경우가 많음.

 

프레임웍에서는 어떻게 처리했을까?

 

Struts

 

Spring MVC

 

MultiActionConroller

user user = new User();

bind(request,user);

 

AbstractComanndController

binding + validation

 

setComannd.class(user.class)

..

user user = (User)command;

 

 

Map vs VO

 

VO의 장점

 

Map 장점

 

 

 

 

Beanutils, PropertyUtils

 http://jakarta.apache.org/commons/beanutils/api/org/apache/commons/beanutils/PropertyUtils.html

 

 

프로젝트 사례

PersonVO vo = new PersonVO();

VOUtil.fromRequestToVO(reuqest,vo);

 

 최초 다음과 같은 의도로 작성

  1. systemier의 core service단(Business layer)까지 ActionForm을 상속한 객체를 들고 들어가지 않게 한다.
  2. DB테이블의 속성에 매핑되는 VO를  써서 파라미터를 전달할려고 한다.
  3. 비슷한 역할을 하는 VO와 ActionForm 객체를 중복해서 작성하지 않을려고 한다.

 

ActonForm을 쓰지 않고 일반 VO객체만 쓰고 별도의 utility로 변환. (spring MultiActionConroller에서 bind()와 같은 역할). 공개된 utiity들을 잘 찾아봤다면 굳이 직접 작성하지 않았을 수도 있었음