request.getContextPath() : 프로젝트 Path만 --> /project
request.getRequestURI() : 프로젝트 + 파일경로까지
--> /project/loginServiceCon
request.getRequestURL() : 전체 경로 --> http://localhost:8090/MessageSystem/goMain
request.ServletPath() : 파일명만 --> /loginServiceCon
Str.substring(index) : index부터 문자열 시작
package inter;
import java.io.IOException;
import java.rmi.ServerException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.sql.rowset.serial.SerialException;
public interface command {
//실행 메소드를 정의
//request, response 가지고 갈 수 있도록
public String execute(HttpServletRequest request, HttpServletResponse response) throws ServerException, IOException;
}
package Controller;
import java.io.IOException;
import java.io.PrintWriter;
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 javax.servlet.http.HttpSession;
import Model.MemberDAO;
import Model.MemberDTO;
import Model.MessageDAO;
import Model.MessageDTO;
import Service.DeleteService;
import Service.IdCheckService;
import Service.JoinService;
import Service.LoginService;
import Service.LogoutService;
import Service.MsgService;
import Service.UpdateService;
import inter.command;
//.do로 끝나는 문자열 맵핑
@WebServlet("*.do")
public class FrontController extends HttpServlet {
protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println("frontController 실행");
// 프론트 컨트롤러 패턴 : 모든 요청을 하나의 서블릿으로 정의하는 패턴
// 중복되는 코드를 줄일 수 있고 보안 적용할때 하나의 서블릿에서 적용할 수 있다!
String nextpage = "";
command com = null;
// 여러객체 불러올 필요없이 부모클래스가 가지고있는 하위클래스가 재정의(오버라이딩)
// com객체에 service 패키지의 각 객체 담아주기
// com에있는 execute()메소드 호출해서 리턴값 nextpage담아주기
// 어떤기능을 수행하는 문자열인지 판단
String uri = request.getRequestURI();
System.out.println(uri);
String path = request.getContextPath();
System.out.println(path);
String command = uri.substring(path.length() + 1); //0번부터 문자열이 시작되는 시작위치
System.out.println(command);
if (command.equals("LoginServiceCon.do")) {
com = new LoginService();
nextpage = com.execute(request, response);
} else if (command.equals("JoinServiceCon.do")) {
com = new JoinService();
nextpage = com.execute(request, response);
} else if (command.equals("MsgCon.do")) {
com = new MsgService();
nextpage = com.execute(request, response);
} else if (command.equals("LogoutServiceCon.do")) {
com = new LogoutService();
nextpage = com.execute(request, response);
} else if (command.equals("idCheckServiceCon.do")) {
com = new IdCheckService();
nextpage = com.execute(request, response);
} else if (command.equals("UpdateServiceCon.do")) {
com = new UpdateService();
nextpage = com.execute(request, response);
} else if (command.equals("DeleteServiceCon.do")) {
com = new DeleteService();
nextpage = com.execute(request, response);
}
if (nextpage != null) {
response.sendRedirect(nextpage);
}
}
}