- 주소록 프로그램
1) 구조
본 프로그램은 다음과 같은 구조로 되어 있다.
2) 설명
(1) index.jsp
- 초기 클라이언트가 request 요청을 보내는 곳이다. pageContext.forward("control.jsp?action=list");로 control.jsp 페이지로
forwarding하고 있다. 여기서 forwarding하는 이유는 클라이언트가 control.jsp로 페이지 전환하는 것을 느낄 필요가 없기 때문이다.
(2) control.jsp
- control 부분을 담당한다. 먼저 <%page, 즉 page 지시자의 errorPage 속성을 통하여 error가 발생 시 처리할 웹 페이지를 지정했다.
- 클라이언트로부터의 request를 request.getMethod().equals("POST")를 통하여 POST 방식인 경우에만 request.setCharacterEncoding("UTF-8")하고 있다.
- <jsp:useBean id="ab" class="jspbook.addrbook.AddrBean" scope="session"/>,
<jsp:useBean id="addrbook" class="jspbook.addrbook.AddrBook"/>을 통하여 Bean 객체와 Book 객체를 생성했다.
또한, <jsp:setProperty name="addrbook" property="*"/>를 통하여 request에 탑재된 파라미터들로 addrbook 객체의 멤버 변수를 초기화 하는 모습을 볼 수 있다.
- request.getParameter("action")을 통해서 action 파라미터의 값을 가져오고, 이 값에 따라 control을 하고 있다.
1) action == null || action.equals("list")
=> pageContext.forward("list.jsp") : control.jsp에서 페이지 전환이 일어나므로 forwarding한다.
=> DAO 객체인 ab.getDBList() 메서드를 통하여 ArrayList<AddrBook>를 가져오고, 이를 request.setAttribute("datas", data);하여 list.jsp로 보낸다.
2) action.equals("insertForm")
=> pageContext.forward("insertForm.jsp");
3) action.equals("insert")
=> ab.insertDB(addrbook) : 위에서 <jsp:setProperty name="addrbook" property="*"/>를 통해서 초기화한 객체를 DAO 객체를 통해서 insert한다.
=> response.sendRedirect("control.jsp?action=list");를 통해 control로 redirection하고, action=list를 주어 control이 list.jsp로 forward할 수 있도록 해준다.
4) action.equals("edit")
=> AddrBook abook = ab.getDB(addrbook.getAb_id());를 통해서 addrbook에 포함된 id 값을 가져오고, 그 id 값으로 DAO 객체의 getDB() 메서드를 통해서 해당 Book 객체를 가져온다.
=> request.setAttribute("ab", abook)를 통해서 request에 DO 객체를 set하고,
=> edit_form.jsp 페이지로 forwarding한다.
5) action.equals("update")
=> ab.updateDB(addrbook)를 통해서 update하고, response.sendRedirect(control.jsp?action=list)한다.
6) action.equals("delete")
=> 삭제할 addrbook 객체의 id를 가져오기 위해서 addrbook.getAb_id()하고, 그 id값을 이용하여 ab.deleteDB(id)한다.
=> response.sendRedirect(control.jsp?action=list);를 통해서 응답을 control.jsp로 redirect하고, action=list를 활용하여 control.jsp가 list.jsp로 forwarding할 수 있도록 한다.
(3) list.jsp
- 수정/삭제를 하려면 location.href="control.jsp?action=edit&id=" + id + "&passwd=" + passwd;를 통해서 페이지 전환한다.
- 주소록 등록 클릭 시, control.jsp?action=insertForm으로 control.jsp로 페이지 이동 후, control.jsp에서 form.jsp로 forwarding할 수 있도록 한다.
- list.jsp에 들어 오려면 request.getAttribute("datas")에 ArrayList<AddrBook> 속성 값이 있다. 이를 향상된 for문과 getter를 활용하여 모든 DO 객체의 멤버 변수의 값을 출력한다.
(4) form.jsp
- 주소록 목록으로를 클릭하면 control.jsp로 이동하고, ?action=list를 활용하여 list로 control.jsp가 forwarding할 수 있도록 해준다.
- 저장 버튼을 누르면 submit된다. hidden type의 이름이 action이고 값이 insert인 속성을 form에서 post 방식으로 control.jsp로 이동 시 탑재하며, 이 값을 통하여 control.jsp가 addrbook 객체를 DAO 객체를 통하여 insert하고, 다시 control.jsp?action=list로 response.sendRedirect()하여 주소록 목록 페이지를 보여줄 수 있도록 한다.
(5) edit_form.jsp
- <jsp:userBean id="ab" class="jspbook.addrbook.AddrBook" scope="request"/>를 통해서, request에 탑재된 ab 속성에 있는 abook(DO 객체)를 ab라는 레퍼런스 명으로 넣는다.
'JSP(JavaServer Page)' 카테고리의 다른 글
JSP(JavaServer Page) - 13 : 데이터베이스와 JDBC (0) | 2016.07.28 |
---|---|
JSP(JavaServer Page) - 12 : JSP와 자바 빈즈 연동, JSP에서의 자바 빈즈 선언 (0) | 2016.07.27 |
JSP(JavaServer Page) - 11 : request, session, application의 생성, 소멸 시점과 속성 관리, MVC 패턴과 JSP 내장객체 (0) | 2016.07.27 |
JSP(JavaServer Page) - 10 : session과 request 객체를 활용한 응용 프로그램 selProduect.jsp (0) | 2016.07.27 |
JSP(JavaServer Page) - 9 : session를 활용한 login 예제 (0) | 2016.07.27 |