컨트롤러 한개만 해도 동작은 함

더보기

 

package kh.backend.controller;

import java.io.IOException;
import java.util.List;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import kh.backend.dao.MessagesDAO;
import kh.backend.dto.MessagesDTO;


@WebServlet("/DeleteController")
public class DeleteController extends HttpServlet {

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		MessagesDAO dao = new MessagesDAO();
		try {
			//출력
			List<MessagesDTO> list =dao.selectAll();
			request.setAttribute("list", list);
			RequestDispatcher rd =
					request.getRequestDispatcher("deleteView.jsp");
			
			//삭제할 글번호 받아오기
			String del_num = request.getParameter("del_num");
			int del_result = dao.delete(del_num);
			if(del_result>0) {
				rd = request.getRequestDispatcher("DeleteController");
			}
					
			rd.forward(request, response);

			
		}catch(Exception e) {
			e.printStackTrace();
			response.sendRedirect("error.jsp");
		}
	}


	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
	}
}
<%@page import="kh.backend.dto.MessagesDTO"%>
<%@page import="java.util.List"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script src="https://code.jquery.com/jquery-3.5.0.js"></script>
</head>
<body>
<form action="DeleteController" method="post">
<table border=1 align=center>
		<tr>
			<td>글번호</td>
			<td>작성자</td>
			<td>글내용</td>
			<td>작성일</td>
		</tr>
		<%
		List<MessagesDTO> list = (List<MessagesDTO>) request.getAttribute("list");
		for (MessagesDTO dto : list) {
		%>
		<tr>
			<td><%=dto.getSeq()%>
			<td><%=dto.getName()%>
			<td><%=dto.getMsg()%>
			<td><%=dto.getWrite_date()%>
		</tr>
		<%
		}
		%>
		<tr>
		<input type=text name= del_num placeholder="삭제할 번호">
		<input type=submit value="삭제">
			<td colspan=4 align=center><input type=button id="back" value="돌아가기">
		</tr>
	</table>
	</form>
	<script>
		document.getElementById('back').onclick = function() {
			location.href = 'index.jsp';
		}
	</script>
</body>
</html>

1. index.jsp

인덱스에서 DeleteController(서블릿)으로 이동

데이터를 뽑아올 필요 없다면 jsp로 이동해도 되지만

이번에는 데이터를 가져오는 과정이 필요하므로

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script src="https://code.jquery.com/jquery-3.5.0.js"></script>
</head>
<body>
	<button id="toInput">toInput</button>
	<button id="toOutput">toOutput</button>
	<button id="toDelete">toDelete</button>
	<script>
		$("#toInput").on("click",function(){
			location.href="input.jsp";
		})
		$("#toOutput").on("click",function(){
			location.href="OutputController";
		})
		$("#toDelete").on("click",function(){
			location.href="DeleteController";
		})
	</script>
</body>
</html>

2. DeleteController

deleteView로 보내주는 컨트롤러

package kh.backend.controller;
import java.io.IOException;
import java.util.List;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import kh.backend.dao.MessagesDAO;
import kh.backend.dto.MessagesDTO;

@WebServlet("/DeleteController")
public class DeleteController extends HttpServlet {

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		MessagesDAO dao = new MessagesDAO();
		try {
			List<MessagesDTO> list =dao.selectAll();
			request.setAttribute("list", list);
			RequestDispatcher rd =
					request.getRequestDispatcher("deleteView.jsp");
			rd.forward(request, response);
		}catch(Exception e) {
			e.printStackTrace();
			response.sendRedirect("error.jsp");
		}
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
	}
}

3. deleteView.jsp 

삭제페이지

 

목록 출력

 

<%@page import="kh.backend.dto.MessagesDTO"%>
<%@page import="java.util.List"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script src="https://code.jquery.com/jquery-3.5.0.js"></script>
</head>
<body>
<form action="DeleteProcController" method="post">
<table border=1 align=center>
		<tr>
			<td>글번호</td>
			<td>작성자</td>
			<td>글내용</td>
			<td>작성일</td>
		</tr>
		<%
		List<MessagesDTO> list = (List<MessagesDTO>) request.getAttribute("list");
		for (MessagesDTO dto : list) {
		%>
		<tr>
			<td><%=dto.getSeq()%>
			<td><%=dto.getName()%>
			<td><%=dto.getMsg()%>
			<td><%=dto.getWrite_date()%>
		</tr>
		<%
		}
		%>
		<tr>
		<input type=text name= del_num placeholder="삭제할 번호">
		<input type=submit value="삭제">
			<td colspan=4 align=center><input type=button id="back" value="돌아가기">
		</tr>
	</table>
	</form>
	<script>
		document.getElementById('back').onclick = function() {
			location.href = 'index.jsp';
		}
	</script>
</body>
</html>

4. DeleteProcController

삭제 수행

package kh.backend.controller;

import java.io.IOException;
import java.util.List;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import kh.backend.dao.MessagesDAO;
import kh.backend.dto.MessagesDTO;


@WebServlet("/DeleteProcController")
public class DeleteProcController extends HttpServlet {

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		MessagesDAO dao = new MessagesDAO();
		String del_num = request.getParameter("del_num");
		try {
			int del_result = dao.delete(del_num);	//삭제할 글번호 받아오기

			response.sendRedirect("DeleteController");
			//deleteView로 보내면 DeleteController를 거치지 않고 이동 -> 데이터 없음
            
		}catch(Exception e) {
			e.printStackTrace();
			response.sendRedirect("error.jsp");
		}
	}


	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
	}

}

 

redirectforward 구분해서 사용해야 함!


삭제되었다는 것을 알릴 필요 없다면 redirect
데이터를 가져와야 한다면 forward


forward 는 클라이언트 측에서 url 변화 없음 // JSP 파일 숨길 수 있다

'디지털 컨버전스 > JSP' 카테고리의 다른 글

[JSP] EL - Expression language  (0) 2020.05.06
[JSP] Redirect & Forward  (0) 2020.04.28
[JSP] MVC 2 구성  (0) 2020.04.28
[JSP] MVC 모델  (0) 2020.04.28
[JSP] Delete 기능  (0) 2020.04.28

+ Recent posts