[JSP] 프론트 컨트롤러

형이·2023년 8월 30일
0

JSP

목록 보기
32/32
post-thumbnail
post-custom-banner

📝 JSP

🖥️ 1. 프론트 컨트롤러

1-1. 특징

  • 프론트 컨트롤러 서블릿 하나로 클라이언트 요청을 받는다.
  • 프론트 컨트롤러가 클라이언트의 요청에 맞는 컨트롤러를 찾아 호출해준다.
  • 컨트롤러에 대한 공통 로직에 처리가 가능하다.
  • 프론트 컨트롤러를 제외한 나머지 컨트롤러는 서블릿을 사용하지 않아도 된다.

1-2. 상대경로, 절대경로

http://localhost:8080/project01/abc.jsp

📌 ${pageContext.request.requestURL}

  ⇢ http://localhost:8080/project01/abc.jsp

📌 ${pageContext.request.schema}

  ⇢ http

📌 ${pageContext.request.serverName}

  ⇢ localhost

📌 ${pageContext.request.serverPort}

  ⇢ 8080

📌 ${pageContext.request.requestURI}

  ⇢ project01/abc.jsp

📌 ${pageContext.request.servletPath}

  ⇢ /abc.jsp

📌 ${pageContext.request.contextPath}

  <%=request.getContextPath() %>

  ⇢ 현재 나의 위치


📝 예제

EX)

package com.codingbox.web.user;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
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 com.codingbox.web.user.action.ActionForward;

@WebServlet("*.us")
public class UserFrontController extends HttpServlet {

	@Override
	protected void doGet(HttpServletRequest req,
			HttpServletResponse resp) throws ServletException, IOException {
            
		doProcess(req, resp);
	}
	
	@Override
	protected void doPost(HttpServletRequest req, 
			HttpServletResponse resp) throws ServletException, IOException {
		
        doProcess(req, resp);
	}
	
	protected void doProcess(HttpServletRequest request, HttpServletResponse response) 
    				throws ServletException, IOException {
		
        String requestURI = request.getRequestURI();
		String responseURI = null;
		ActionForward forward = null;
		
		if(requestURI.equals("/user/UserJoin.us")) {
			forward = new UserJoinAction().excute(request, response);
		} else if(requestURI.equals("/user/UserLogin.us")) {
			forward = new ActionForward(false, "/user/loginview.jsp");
		} else if(requestURI.equals("/user/UserLoginOk.us")) {
			System.out.println("front 도착");
			forward = new UserLoginOkAction().excute(request, response);
		}
		
		// 일괄처리
		if( forward != null ) {
			if( forward.isRedirect() ) {
				// redirect 방식으로 페이지 이동
				response.sendRedirect( forward.getPath() );
			} else {
				// forward 방식으로 페이지 이동
				RequestDispatcher disp 
					= request.getRequestDispatcher( forward.getPath() );
				disp.forward(request, response);
			}
			
		}
		
	}
}

post-custom-banner

0개의 댓글