컨트롤러 한개만 해도 동작은 함
더보기
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);
}
}
redirect 와 forward 구분해서 사용해야 함!
삭제되었다는 것을 알릴 필요 없다면 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 |