: Controller를 Servlet으로 구현
(Model1과 동일하게 Model을 Java, View를 JSP로 구현)
→ Model1 보다 설계가 어렵지만, 유지보수가 수월
doProc()
: doGet()
과 doPost()
를 하나의 메소드로 처리
forward()
: 자주 쓰이는 구문을 메소드로 처리
작업 분기
: if
문으로 parameter 확인하여 작업 분기
@WebServlet("/bbs")
public class BbsController extends HttpServlet{
public void doProc(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doProc(req, resp);
}
public void doProc(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doProc(req, resp);
}
public void doProc(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
DBConnection.initConnection();
req.setCharacterEncoding("utf-8");
String param = req.getParameter("param");
// 작업 분기
if(param.equals("bbslist")) {
BbsDao dao = BbsDao.getInstance();
String choice = req.getParameter("choice");
String search = req.getParameter("search");
if(choice == null || search == null || choice.equals("")) {
choice = "";
search = "";
}
// 현재 페이지 번호
String sPageNumber = req.getParameter("pageNumber");
int pageNumber = 0;
if(sPageNumber != null && !sPageNumber.equals("")) {
pageNumber = Integer.parseInt(sPageNumber);
}
List<BbsDto> list = dao.getBbsPageList(choice, search, pageNumber);
// 글의 총 갯수
int count = dao.getAllBbs(choice, search);
// 페이지의 총 갯수
int pageBbs = count / 10;
if((count % 10) > 0) {
pageBbs += 1;
}
req.setAttribute("list", list);
req.setAttribute("pageBbs", pageBbs);
req.setAttribute("pageNumber", pageNumber);
req.setAttribute("choice", choice);
req.setAttribute("search", search);
forward("bbslist.jsp", req, resp);
}
}
public void forward(String linkName, HttpServletRequest req, HttpServletResponse resp) {
RequestDispatcher dispatcher = req.getRequestDispatcher(linkName);
try {
dispatcher.forward(req, resp);
} catch (ServletException | IOException e) {
e.printStackTrace();
}
}
}
JSONObject
객체를 생성하여 응답 else if(param.equals("idcheck")) { // ajax
String id = req.getParameter("id");
MemberDao dao = MemberDao.getInstance();
String str = "NO";
if(dao.getId(id) == false) {
str = "OK";
}
JSONObject obj = new JSONObject();
obj.put("str", str);
resp.setContentType("application/x-json;charset=utf-8");
resp.getWriter().print(obj);
}
<%
String bbsdelete = (String)request.getAttribute("bbsdelete");
int deleteseq = (Integer)request.getAttribute("deleteseq");
if(bbsdelete != null && !bbsdelete.equals("")) {
if(bbsdelete.equals("BBS_DELETE_OK")) {
%>
<script type="text/javascript">
alert("삭제되었습니다.");
location.href = "bbs?param=bbslist";
</script>
<%
} else {
%>
<script type="text/javascript">
alert("다시 시도해 주세요.");
location.href = "bbs?param=bbsdetail&seq=" + <%=deleteseq%>;
</script>
<%
}
}
%>