이전 JSP를 실행할 시 여러 서블릿 파일을 생성했다면 이번에는 FrontController 라는 인터페이스를 선언하여
web.xml에 서블릿으로 매핑할 코드 작성
=============================코드=============================
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" id="WebApp_ID" version="4.0">
<display-name>09_Member_MVC2</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.jsp</welcome-file>
<welcome-file>default.htm</welcome-file>
</welcome-file-list>
<!-- 서블릿 매핑(N:1) -->
<servlet>
<servlet-name>FrontController</servlet-name>
<servlet-class>com.member.controller.FrontController</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>FrontController</servlet-name>
<url-pattern>*.go</url-pattern>
</servlet-mapping>
</web-app>
request와 response를 매개변수로 받을
=============================코드=============================
package com.member.action;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public interface Action {
String execute(HttpServletRequest request, HttpServletResponse response); // 추상메서드
}
이전 JSP로 서블릿을 만들었던 틀과 똑같이 똑같이 만들면 됨!
=============================코드=============================
package com.member.controller;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.member.action.Action;
import com.member.action.MemberListAction;
public class FrontController extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 한글 깨짐 방지 설정 작업 진행
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html; charset = UTF-8");
// getRequestURI() : "/프로젝트명/파일명(*.go)" 라는 문자열을 반환해주는 메서드
String uri = request.getRequestURI();
System.out.println("URI >>> " + uri);
// getContextPath() : 현재 프로젝트명을 문자열로 반환해주는 메서드
String path = request.getContextPath();
System.out.println("Path >>> " + path);
String command = uri.substring(path.length() + 1);
// 09_Member_MVC2/select.go =>16자리 이후를 뽑아냄(select.go 로 이동!)
System.out.println("Command >>> " + command);
// Action은 인터페이스
Action action = null;
if(command.equals("select.go")) {
action = new MemberListAction(); // MemberListAction은 생성자! => 클래스를 만들면 됨
}
인터페이스 Action을 구현할
Action 인터페이스를 구현하기 위해서는 오버라이딩이 필요함!
=============================코드=============================
package com.member.action;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.member.model.MemberDAO;
import com.member.model.MemberDTO;
public class MemberListAction implements Action {
@Override
public String execute(HttpServletRequest request, HttpServletResponse response) {
// 요청 : 회원 전체 리스트를 보여달라고 요청
// 응답 : member 테이블에서 전체 회원 목록을 조회하여 view page로 이동시키는 비즈니스 로직
MemberDAO dao = MemberDAO.getInstance();
// 전체 회원 목록을 조회하는 메서드 호출
List<MemberDTO> memberList = dao.getMemberList();
// member 테이블에서 가져온 전체 회원 목록을 view page로 이동
request.setAttribute("List", memberList);
return "view/member_list.jsp";
}
}
※ 주의점 : 이전 JSP에서는 서블릿에 request.getRequestDispatcher로 페이지 이동 경로를 설정하였으나
인터페이스를 구현할 클래스에서 생성할 경우 return 값인 "view/member_list.jsp"에 request와 response 매개변수를 담음
다시 FrontController 클래스로 가서
=============================코드=============================
package com.member.controller;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.member.action.Action;
import com.member.action.MemberListAction;
public class FrontController extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 한글 깨짐 방지 설정 작업 진행
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html; charset = UTF-8");
// getRequestURI() : "/프로젝트명/파일명(*.go)" 라는 문자열을 반환해주는 메서드
String uri = request.getRequestURI();
System.out.println("URI >>> " + uri);
// getContextPath() : 현재 프로젝트명을 문자열로 반환해주는 메서드
String path = request.getContextPath();
System.out.println("Path >>> " + path);
String command = uri.substring(path.length() + 1); // 09_Member_MVC2/select.go =>16자리 이후를 뽑아냄(select.go 로 이동!)
System.out.println("Command >>> " + command);
Action action = null;
if(command.equals("select.go")) {
action = new MemberListAction(); // MemberListAction은 생성자! => 클래스를 만들면 됨
}
// ---------------------여기서부터 작성---------------------
String viewPage = action.execute(request, response);
request.getRequestDispatcher(viewPage).forward(request, response);
}
}
main.jsp에 실행해보자!

전체 회원 목록 클릭

전체 회원이 출력됨