본문 바로가기

비트교육센터[전문가반]

2021.03.11 수업 내용 정리

index.jsp 페이지 요청 구조

[전체적인 index 페이지 요청 프로세스]

1. index.jsp 페이지 요청이 들어오면 Controller에서는 DAO에게 데이터를 요청한다.

2. DAO에서는 DB와 연결하여 해당 데이터 VO 를 가져와 Controller에게 전달한다.

3. Controller는 DAO에게 받은 데이터를 request에 넣어서 View로 전달

4. View에서 request에 있는 데이터를 꺼내 사용자에게 보여준다.

 

[자세한 index 페이지 요청 로직] - guestbook의 예로 함

1. index 페이지 요청 만들기

 

1) DB에 있는 데이터를 list로 만들어 저장

List<GuestbookVp> list = new GuestbookDao.findAll(); 

 

2) list를 request에 담기

request.setAttribute("list", list); // request.setAttribute("담는 저장소 이름", 저장할 값);

 

3) index.jsp에 forward 해서 전달하기

RequestDispatcher rd = request.getRequestDispatcher(path); //path는 전달할 uri

rd.forward(request, response);

 

2. 내용 등록하기

 

1) index.jsp 페이지에서 submit 버튼을 눌렀을때 action을 add로 하기위한 uri를 서블릿으로 잡기

action = "<%= request.getContextPath()%>/guestbook?a=add"

 

2) 서블릿 페이지에서 a를 넘겨받고 (request에 a="add"가 들어있다.) action 유형파악

String action = request.getParameter("a");

 

3) "add"일때 index.jsp 페이지에서 넘어온 name, password, contents, reg_date를 vo 에 저장

String name = request.getParameter("name");

String password = request.getParameter("password");

String contents = request.getParameter("contents");

       

GuestbookVo vo = new GuestbookVo();

vo.setName(name);

vo.setPassword(password);

vo.setContents(contents);

 

new GuestbookDao().insert(vo);

 

4) index.jsp를 redirect 해준다.

WebUtil.redirect(request.getContextPath() + "/guestbook", request, response);

 

3. deleteform 페이지 요청하기

1) 삭제 uri를 수정 ~> 서블릿으로 이동하게끔 (request에 a=deleteform 과 no=vo.getNo() 가 들어있다.)

<a href="<%=request.getContextPath() %>/guestbook?a=deleteform&no=<%=vo.getNo()%>">삭제</a>

 

2) servlet에서 action이 deleteform 이라는 것을 조건문을 통해 알게되었다면, deletefrom 페이지를 forward() 해준다.

WebUtil.forword("/WEB-INF/views/guestbook/deleteform.jsp", request, response)

 

4. 삭제하기

1) deleteform.jsp 에서 request에 들어있는 no를 꺼낸다.

String no = request.getParameter("no");

 

2) 해당 번호와 비밀번호를 form의 post를 통해서 Servlet에 넘겨준다.

(a="delete"라는 것을 hidden으로 설정했음.)

<div id="guestbook" class="delete-form">

                <form method="post" action="<%= request.getContextPath()%>/guestbook">

                    <input type="hidden" name="a" value="delete">

                    <input type='hidden' name="no" value="<%= no %>">

                    <label>비밀번호</label>

                    <input type="password" name="password">

                    <input type="submit" value="확인">

                </form>

                <a href="">방명록 리스트</a>

</div>

 

3) Servlet에서 action이 delete 임을 조건식을 통해 알게 되면, request.getParameter("")을 통해 no와 password를 꺼내온다. 

String no = request.getParameter("no");
String password = request.getParameter("password");

 

4) Dao에 no 와 password를 전달해서 DB에서 삭제 요청을 한다.

new GuestbookDao().delete(no, password);

 

5) index 페이지를 redirect해준다.

WebUtil.redirect(request.getContextPath() + "/guestbook", request, response);