모든 클래스에 대한 컴파일이 완료되었다면 이제 사용자가 요청한 기능을 싱행하고 결과를 화면에 보여주는 JSP를 작성할 차례이다. JSP는 앞서 작성한 서비스 객체를 이용해서 필요한 기능을 수행하고, 서비스 객체의 실행 결과를 바탕으로 알맞은 화면을 사용자에게 제공하게 된다.
(1) 메시지 목록을 보여주는 list.jsp
chap13\list.jsp
list.jsp는 GetMessageListService를 이용해서 MessageListView 객체를 구한 뒤, MessageListView 객체에 저장된 값을 이용해서 화면에 알맞은 내용을 출력해 준다. 예를 들어, 아무 메시지도 저장되어 있지 않은 경우 list.jsp를 실행하면 다음과 같은 결과 화면이 출력된다.
(2) 메시지 등록을 처리하는 write.jsp
list.jsp는 새로운 메시지를 입력할 수 있는 폼을 제공하고 있는데, 이 폼에 알맞은 값을 입력한 뒤 [메시지 남기기]버튼을 클릭하면 writeMessage.jsp로 입력한 데이터를 전송한다.
writeMessage.jsp는 전달받은 파라미터를 이용해서 Message 객체를 생성한 뒤, WriteMessageService를 이용해서 메시지를 기록한다.
chap13\writeMessage.jsp
(3) 메시지 삭제 폼을 제공하는 confirmDeletion.jsp
confirmDeletion.jsp는 메시지를 삭제할 때 필요한 암호를 입력 받는 폼을 제공해 준다.
chap13\confirmDeletion.jsp
(4) 메시지 삭제 요청을 처리하는 deleteMessage.jsp
메시지 삭제 폼에서 암호를 입력한 뒤 [메시지 삭제하기]버튼을 클릭하면 삭제 요청이 deleteMessage.jsp에 전달된다. deleteMessage.jsp는 메시지 아이디(messageId 파라미터)와 삭제 암호(password 파라미터)를 DeleteMessageService 객체의 deleteMessage() 메서드에 전달해서 메시지 삭제를 시도한 뒤, 메시지 삭제 결과에 따라 알맞은 문구를 출력한다.
chap13\deleteMessage.jsp
(1) 메시지 목록을 보여주는 list.jsp
chap13\list.jsp
<%@ page contentType="text/html; charset=euc-kr" %> <%@ page import="kame.chap13.model.Message"%> <%@ page import="kame.chap13.model.MessageListView"%> <%@ page import="kame.chap13.service.GetMessageListService"%> <% String pageNumberStr = request.getParameter("page"); int pageNumber = 1; if(pageNumberStr != null){ pageNumber = Integer.parseInt(pageNumberStr); } GetMessageListService messageListService = GetMessageListService.getInstance(); MessageListView viewData = messageListService.getMessageList(pageNumber); %> <html> <head> <title>방명록 메시지 목록</title> </head> <body> <form action="writeMessage.jsp" method="post"> 이름 : <input type="text" name="guestName" /><br /> 암호 : <input type="password" name="password" /><br /> 메시지 : <textarea name="message" cols="30" row="3"></textarea><br /> <input type="submit" value="메시지 남기기" /> </form> <hr> <% if(viewData.isEmpty()){ %> 등록된 메시지가 없습니다. <% } else { /* 메시지 있는 경우 처리 시작 */ %> <table border="1"> <% for(Message message:viewData.getMessageList()){ %> <tr> <td> 메시지 번호 : <%= message.getId() %><br /> 손님 이름 : <%= message.getGuestName() %><br /> 메시지 : <%= message.getMessage() %> <br /> <a href="confirmDeletion.jsp?messageId=<%= message.getId() %>"> [삭제하기]</a> </td> </tr> <% } %> </table> <% for(int i=1; i<=viewData.getPageTotalCount(); i++){ %> <a href="list.jsp?page=<%= i %>">[<%=i%>]</a> <%}%> <% } /* 메시지 있는 경우 처리 끝 */ %> </body> </html>
list.jsp는 GetMessageListService를 이용해서 MessageListView 객체를 구한 뒤, MessageListView 객체에 저장된 값을 이용해서 화면에 알맞은 내용을 출력해 준다. 예를 들어, 아무 메시지도 저장되어 있지 않은 경우 list.jsp를 실행하면 다음과 같은 결과 화면이 출력된다.
(2) 메시지 등록을 처리하는 write.jsp
list.jsp는 새로운 메시지를 입력할 수 있는 폼을 제공하고 있는데, 이 폼에 알맞은 값을 입력한 뒤 [메시지 남기기]버튼을 클릭하면 writeMessage.jsp로 입력한 데이터를 전송한다.
writeMessage.jsp는 전달받은 파라미터를 이용해서 Message 객체를 생성한 뒤, WriteMessageService를 이용해서 메시지를 기록한다.
chap13\writeMessage.jsp
<%@ page contentType="text/html; charset=euc-kr" %> <%@ page errorPage="errorView.jsp" %> <%@ page import="kame.chap13.model.Message" %> <%@ page import="kame.chap13.service.WriteMessageService" %> <% request.setCharacterEncoding("euc-kr"); %> <jsp:useBean id="message" class="kame.chap13.model.Message"> <jsp:setProperty name="message" property="*" /> </jsp:useBean> <% WriteMessageService writeService = WriteMessageService.getInstance(); writeService.write(message); %> <html> <head> <title>방명록 메시지 남김</title> </head> <body> 방명록에 메시지를 남겼습니다. <br/> <a href="list.jsp">[목록 보기]</a> </body> </html>writeMessage.jsp는 <jsp:useBean> 액션 태그를 이용해서 사용자가 입력한 값을 Message 객체에 저장하고, WriteMessageService.write() 메서드를 이용해서 Message 객체의 값을 저장하게 된다. 실제 list.jsp의 입력 폼에서 데이터를 입력한 뒤 [메시지 남기기] 버튼을 클릭하면 다음과 같은 화면이 출력된다.
(3) 메시지 삭제 폼을 제공하는 confirmDeletion.jsp
confirmDeletion.jsp는 메시지를 삭제할 때 필요한 암호를 입력 받는 폼을 제공해 준다.
chap13\confirmDeletion.jsp
<%@ page contentType="text/html; charset=euc-kr" %> <html> <head> <title>방명록 메시지 삭제 확인</title> </head> <body> <form action="deleteMessage.jsp" method="post"> <input type="hidden" name="messageId" value="<%= request.getParameter("messageId") %>" /> 메시지를 삭제하시려면 암호를 입력하세요:<br/> 암호: <input type="password" name="password" /> <br /> <input type="submit" value="메시지 삭제하기" /> </form> </body> </html>confirmDletion.jsp는 hidden 타입의 <input> 태그를 이용해서 삭제할 메시지 번호를 보관하며, password 타입의 <input> 태그를 이용해서 메시지를 기록할 때 입력한 암호를 입력받고 있다.
(4) 메시지 삭제 요청을 처리하는 deleteMessage.jsp
메시지 삭제 폼에서 암호를 입력한 뒤 [메시지 삭제하기]버튼을 클릭하면 삭제 요청이 deleteMessage.jsp에 전달된다. deleteMessage.jsp는 메시지 아이디(messageId 파라미터)와 삭제 암호(password 파라미터)를 DeleteMessageService 객체의 deleteMessage() 메서드에 전달해서 메시지 삭제를 시도한 뒤, 메시지 삭제 결과에 따라 알맞은 문구를 출력한다.
chap13\deleteMessage.jsp
<%@ page contentType="text/html; charset=euc-kr" %> <%@ page errorPage="errorView.jsp" %> <%@ page import="kame.chap13.service.DeleteMessageService" %> <%@ page import="kame.chap13.service.InvalidMessagePassowrdException" %> <% int messageId = Integer.parseInt(request.getParameter("messageId")); String password = request.getParameter("password"); boolean invalidPassowrd = false; try { DeleteMessageService deleteService = DeleteMessageService.getInstance(); deleteService.deleteMessage(messageId, password); } catch(InvalidMessagePassowrdException ex) { invalidPassowrd = true; } %> <html> <head> <title>방명록 메시지 삭제함</title> </head> <body> <% if (!invalidPassowrd) { %> 메시지를 삭제하였습니다. <% } else { %> 입력한 암호가 올바르지 않습니다. 암호를 확인해주세요. <% }%> <br/> <a href="list.jsp">[목록 보기]</a> </body> </html>...
'개발 > JSP' 카테고리의 다른 글
chap15 표현 언어(Expression Language) (0) | 2011.11.08 |
---|---|
이클립스 실행되지 않는 경우 (0) | 2011.11.04 |
chap13-2.8 클래스의 컴파일 순서 정리 (0) | 2011.11.03 |
chap13-2.7 서비스 클래스의 구현 (0) | 2011.11.02 |
chap13-2.6 DBMS별 web.xml 파일 (0) | 2011.11.02 |