JSP [12] Message

totwo·2024년 7월 18일

JSP/Servlet/JSTL

목록 보기
12/15
post-thumbnail

messageSelect

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

<!-- 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;
	}




messageDeleteAll

[문제] 나에게 온 모든 메시지를 삭제 시키시오
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;
	}


-> 로그인된 아이디가 받은 메세지가 전체삭제 된 것을 볼 수 있다.




messageDelete

[문제] 개별 삭제 기능을 만드시오
메세지를 어떻게 각각 지울 수 있을까?
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;
	}

메세지 개별 삭제 완료!

profile
Hello, World!

0개의 댓글