
[문제] 로그인 상태시 전체 메세지를 조회하세요

<!-- main.jsp -->
<% if (info == null) { %>
<li>로그인을 하세요.</li>
<% } else {
MessageDAO dao = new MessageDAO();
ArrayList<MessageDTO> list = dao.messageSelect(info.getEmail());
for(int i = 0; i < list.size(); i++) {%>
<li>
<%= list.get(i).getName() %> :
<%= list.get(i).getContents() %>
[ <%= list.get(i).getIndate() %> ]
</li>
<br>
<% } %>
<li><a href="#">전체삭제하기</a></li>
<% } %>
// MessageDAO
public ArrayList<MessageDTO> messageSelect(String memberEmail) {
ArrayList<MessageDTO> list = new ArrayList<MessageDTO>();
MessageDTO msg = null;
dbOpen();
try {
String sql = "SELECT * FROM MESSAGE WHERE EMAIL = ?";
psmt = conn.prepareStatement(sql);
psmt.setString(1, memberEmail);
rs = psmt.executeQuery();
while(rs.next()) {
int num = rs.getInt("NUM");
String name = rs.getString("NAME");
String email = rs.getString("EMAIL");
String contents = rs.getString("CONTENTS");
String indate = rs.getString("INDATE");
msg = new MessageDTO(num, name, email, contents, indate);
list.add(msg);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
dbClose();
}
return list;
}
// MessageDTO 오버로딩!!
public MessageDTO(int num, String name, String email, String contents, String indate) {
this.num = num;
this.name = name;
this.email = email;
this.contents = contents;
this.indate = indate;
}

[문제] 나에게 온 모든 메시지를 삭제 시키시오
MessageDAO에 MessageDeleteAll 메소드를 통해 나에게 온 모든 메시지를 삭제시키고 main.jsp로 이동하시오
<!-- main.jsp -->
<% if (info == null) { %>
<li>로그인을 하세요.</li>
<% } else {
MessageDAO dao = new MessageDAO();
ArrayList<MessageDTO> list = dao.messageSelect(info.getEmail());
for(int i = 0; i < list.size(); i++) {%>
<li>
<%= list.get(i).getName() %> :
<%= list.get(i).getContents() %>
[ <%= list.get(i).getIndate() %> ]
</li>
<br>
<% } %>
<li><a href="MessageDeleteAllService" class="button next scrolly">전체삭제하기</a></li>
<% } %>
@WebServlet("/MessageDeleteAllService")
public class MessageDeleteAllService extends HttpServlet {
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
HttpSession session = request.getSession();
MemberDTO info = (MemberDTO)session.getAttribute("info");
MessageDAO dao = new MessageDAO();
String email = info.getEmail();
int cnt = dao.messageDeleteAll(email);
if (cnt > 0) {
System.out.println("메세지 전체삭제 완료");
} else {
System.out.println("메세지 전체삭제 실패");
}
response.sendRedirect("main.jsp");
}
}
// MessageDAO
public int messageDeleteAll(String email) {
int cnt = 0;
dbOpen();
try {
String sql = "DELETE FROM MESSAGE WHERE EMAIL = ?";
psmt = conn.prepareStatement(sql);
psmt.setString(1, email);
cnt = psmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
dbClose();
}
return cnt;
}


-> 로그인된 아이디가 받은 메세지가 전체삭제 된 것을 볼 수 있다.
[문제] 개별 삭제 기능을 만드시오
메세지를 어떻게 각각 지울 수 있을까?
message내용을 저장한 ArrayList list를 이용한다.
메세지마다 가지고 있는 Num을 이용하여 가져올 수 있다
a태그의 href를 get 방식을 이용한다.
<!-- main.jsp -->
<% if (info == null) { %>
<li>로그인을 하세요.</li>
<% } else {
MessageDAO dao = new MessageDAO();
ArrayList<MessageDTO> list = dao.messageSelect(info.getEmail());
for(int i = 0; i < list.size(); i++) {%>
<li>
<%= list.get(i).getName() %> :
<%= list.get(i).getContents() %>
[ <%= list.get(i).getIndate() %> ]
<a href="MessageDeleteService?num=<%= list.get(i).getNum() %>" class="button next scrolly">개별삭제</a>
</li>
<br>
<% } %>
<li><a href="MessageDeleteAllService" class="button next scrolly">전체삭제하기</a></li>
<% } %>
@WebServlet("/MessageDeleteService")
public class MessageDeleteService extends HttpServlet {
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
MessageDAO dao = new MessageDAO();
int num = Integer.parseInt(request.getParameter("num"));
int cnt = dao.messageDelete(num);
if (cnt > 0) {
System.out.println("메세지 삭제 성공");
} else {
System.out.println("메세지 삭제 실패");
}
response.sendRedirect("main.jsp");
}
}
// MessageDAO
public int messageDelete(int num) {
int cnt = 0;
dbOpen();
try {
String sql = "DELETE FROM MESSAGE WHERE NUM = ?";
psmt = conn.prepareStatement(sql);
psmt.setInt(1, num);
cnt = psmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
dbClose();
}
return cnt;
}


메세지 개별 삭제 완료!