20/11/4 1. 상품 상세 페이지에 db 레코드를 뿌리려 할 때 NullPointerException 발생

목표
상품 상세 페이지에 prd 테이블의 필드인 prd_id, prd_name, prd_img, prd_intrdc, prd_price에 저장된 정보 중 하나(where prd_id='Sf'를 뿌려준다.
 
상황
DetailActionController까지는 원활히 작동되지만(dao 객체까지 받아온다) 그 후 NullPointerException이 떨어진다.
 
문제
어디에서 NullPointerException이 떨어지는지 알 수 없다.
1. index.jsp에서 /// detail.do로 요청이 들어간다
2. web.xml에서 /// ~.do로 들어온 요청은 board-servlet.xml이 처리하라고 알려준다.
ㄴ▶혹시 새로운 dispatcher servlet을 만들어서 요청을 처리해야 했던걸까?
3. board-servlet.xml에서
1) 요청명령어에 따라 처리해주는 컨트롤러를 문의한다
2) detail.do일 경우 DetailActionController가 처리하라고 알려준다.
이 때 detailDAO클래스를 통해 dao라는 이름으로 setter메서드가 작동한다.
3) lee.SqlMapDetailDao클래스를 통해 detailDAO가 id인 객체가 생성된다. (SqlSessionFactory)
4. DetailActionController에서 ///
1) DetailDAO 클래스를 가져와서 dao 객체를 생성하고, dao객체를 통해 list2 메서드를 가져온다. 이것을 List list에 담는다.
2) 이 list를 ModelAndView 객체의 mav에 setViewName()을 통해 전달한다.
ㄴ▶setViewName은 경로를 지정해주는 것 아닌가? 객체 전달이 아니라, 이동할 페이지 명을 알려주는 것 아닌가? 맞다.
ㄴ▶ 
으로 수정한 뒤 실행해본다.
3) mav 객체의 addObject메서드를 사용해서 (키명:값)의 형태로 ("list", list)를 전달한다.
4) mav를 리턴한다.
 
원인
DetailActionController에서 ModelAndView의 객체 mav를 만든 뒤 setViewName()에 이동할 페이지名을 dao객체인 list와 착각하여 적음.
 
해결
NullPointerException이 사라지고 새로운 에러 발생.
 
해결하게 된 추론
클라이언트 요청에서부터 차근차근히 거슬러 올라가봤다.
 
공부한 내용
board-servlet.xml의 역할을 되짚을 수 있었다.
1) 요청컨트롤러를 지정할 때, detailDAO를 사용하여 객체를 생성한 뒤 DetailActionController에게 전송
2) sqlSessionFactory를 통해 sql 정보를 받아오는 내용에 대한 이해가 미흡함
 
더 알아야하는 내용
2) sqlSessionFactory를 통해 sql 정보를 받아오는 내용에 대한 이해가 미흡함