반응형
📌Controller 클래스
게시판 프로젝트의 모든 웹 요청은 controller 클래스에서 정의하는 서블릿으로 요청된다. "게시판 만들기"에서는 모든 요청을 처리해주는 서블릿을 생성할 것이다. 즉 전체 요청이 이 클래스에서 제어된다.
BoardFrontController 서블릿
package controller;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import action.Action;
import action.BoardDeleteProAction;
import action.BoardDetailAction;
import action.BoardListAction;
import action.BoardModifyFormAction;
import action.BoardModifyProAction;
import action.BoardReplyFormAction;
import action.BoardReplyProAction;
import action.BoardWriteProAction;
import vo.ActionForward;
@WebServlet("*.bo") //마지막 url이 *.bo로 끝나는 요청을 매핑하는 서블릿으로 지정하는 부분
public class BoardFrontController extends javax.servlet.http.HttpServlet
{
protected void doProcess(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
String RequestURI=request.getRequestURI();
String contextPath=request.getContextPath();
String command=RequestURI.substring(contextPath.length());
ActionForward forward=null;
Action action=null;
if(command.equals("/boardWriteForm.bo")){
forward=new ActionForward();
forward.setPath("/board/qna_board_write.jsp");
}
else if(command.equals("/boardWritePro.bo")){
action = new BoardWriteProAction();
try {
forward=action.execute(request, response );
} catch (Exception e) {
e.printStackTrace();
}
}
else if(command.equals("/boardList.bo")){
action = new BoardListAction();
try{
forward=action.execute(request, response);
}catch(Exception e){
e.printStackTrace();
}
}
else if(command.equals("/boardDetail.bo")){
action = new BoardDetailAction();
try{
forward=action.execute(request, response);
}catch(Exception e){
e.printStackTrace();
}
}
else if(command.equals("/boardReplyForm.bo")){
action = new BoardReplyFormAction();
try{
forward=action.execute(request, response);
}catch(Exception e){
e.printStackTrace();
}
}
else if(command.equals("/boardReplyPro.bo")){
action = new BoardReplyProAction();
try{
forward=action.execute(request, response);
}catch(Exception e){
e.printStackTrace();
}
}
else if(command.equals("/boardModifyForm.bo")){
action = new BoardModifyFormAction();
try{
forward=action.execute(request, response);
}catch(Exception e){
e.printStackTrace();
}
}
else if(command.equals("/boardModifyPro.bo")){
action = new BoardModifyProAction();
try{
forward=action.execute(request, response);
}catch(Exception e){
e.printStackTrace();
}
}
//게시판 글 삭제 후 원래 목록 보기 페이지로 되돌아 가야한다.
//때문에 게시판 삭제를 위해서 비밀번호를 입력하는 페이지(qna_board_delete.jsp)로
//페이지 번호를 공유한다. (request.setAttribute("page",nowPage);)
else if(command.equals("/boardDeleteForm.bo")){
String nowPage = request.getParameter("page");
request.setAttribute("page", nowPage);
int board_num=Integer.parseInt(request.getParameter("board_num"));
request.setAttribute("board_num",board_num);
forward=new ActionForward();
forward.setPath("/board/qna_board_delete.jsp");
}
else if(command.equals("/boardDeletePro.bo")){
action = new BoardDeleteProAction();
try{
forward=action.execute(request, response);
}catch(Exception e){
e.printStackTrace();
}
}
if(forward != null){
if(forward.isRedirect()){
response.sendRedirect(forward.getPath());
}else{
RequestDispatcher dispatcher=
request.getRequestDispatcher(forward.getPath());
dispatcher.forward(request, response);
}
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doProcess(request,response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doProcess(request,response);
}
}
위 코드들을 이해하기 위해선 Action 클래스들을 모아놓은 다음 포스팅을 보면 된다.
추가로 URL 경로를 얻어오는 부분은 다음 링크를 참고하면 된다.
https://yeo-computerclass.tistory.com/228
반응형
'JSP & Servlet > 실습' 카테고리의 다른 글
[JSP & Servlet] 게시판 만들기 (feat. MySQL) - DAO(Data Access Object) (0) | 2022.06.27 |
---|---|
[JSP & Servlet] 게시판 만들기 (feat. MySQL) - Service 클래스 (0) | 2022.06.27 |
[JSP & Servlet] 게시판 만들기 (feat. MySQL) - Action 클래스 (0) | 2022.06.26 |
[JSP & Servlet] 게시판 만들기 (feat. MySQL) - 테이블 생성 및 vo(Value Object) (0) | 2022.06.26 |
[JSP] 로그인, 회원 가입 및 회원 관리 (0) | 2022.06.16 |