[JSP & Servlet] 회원 관리 - controller

 

📌컨트롤러 클래스

MemberFrontController.java

앞서 설명했듯이 모든 클라이언트의 요청을 한 컨트롤러 파일이 받아서 제어하는 FrontController 패턴을 구현할 것이다.

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.MemberDeleteAction;
import action.MemberJoinAction;
import action.MemberListAction;
import action.MemberLoginAction;
import action.MemberViewAction;
import vo.ActionForward;

@WebServlet("*.me")
public class MemberFrontController extends javax.servlet.http.HttpServlet 
{
	static final long serialVersionUID = 1L;
	protected void doProcess(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		String RequestURI=request.getRequestURI();
		String contextPath=request.getContextPath();
		String command=RequestURI.substring(contextPath.length());
		ActionForward forward=null;
		Action action=null;

		if(command.equals("/memberLogin.me")){
			forward=new ActionForward();
			forward.setRedirect(true);
			forward.setPath("./loginForm.jsp");
		}else if(command.equals("/memberJoin.me")){
			forward=new ActionForward();
			forward.setRedirect(false);
			forward.setPath("./joinForm.jsp");
		}else if(command.equals("/memberLoginAction.me")){
			action = new MemberLoginAction();
			try{
				forward=action.execute(request, response);
			}catch(Exception e){
				e.printStackTrace();
			}
		}else if(command.equals("/memberJoinAction.me")){
			action = new MemberJoinAction();
			try{
				forward=action.execute(request, response);
			}catch(Exception e){
				e.printStackTrace();
			}
		}else if(command.equals("/memberListAction.me")){
			action = new MemberListAction();
			try{
				forward=action.execute(request, response);
			}catch(Exception e){
				e.printStackTrace();
			}
		}else if(command.equals("/memberViewAction.me")){
			action = new MemberViewAction();
			try{
				forward=action.execute(request, response);
			}catch(Exception e){
				e.printStackTrace();
			}
		}else if(command.equals("/memberDeleteAction.me")){
			action = new MemberDeleteAction();
			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 {
		request.setCharacterEncoding("UTF-8");
		doProcess(request,response);
	}   	  	      	    
}

 

클라이언트에서 넘어오는 요청이 GET 방식이든 POST 방식이든 모든 요청이 doProcess 메소드를 호출하는 구조이다. 즉 모든 요청을 처리하는 로직이 정의되어 메소드가 doProcess이다.

 

추가로 URL 경로를 얻어오는 부분은 다음 링크를 참고하면 된다.

https://yeo-computerclass.tistory.com/228

 

요청(request) URL 정보 추출하기

📌HttpServletRequest의 메소드로 URL 정보 추출 요청 URL에서 특정 정보만 추출하는 HttpServletRequest의 메소드는 다음과 같다. 메소드 설명 반환값 getRequestURL() 요청 URL 리턴(단, 매개변수 제외) http://..

yeo-computerclass.tistory.com