티스토리 뷰

728x90
반응형

1. 프런트 컨트롤러

  • 단일 handler에서 모든 요청을 처리하는 패턴을 가진다.
  • 즉, 중앙집중식 요청 처리 메커니즘이라 할 수 있다.
  • 스프링 웹 MVC 프레임워크의 DispatcherServlet이 프런트 컨트롤러 패턴으로 구현되어 프런트 컨트롤러의 역할을 한다.
  • 다시 말해, 요청이 들어오면 프런트 컨트롤러가 받아 적절한 컨트롤러에게 위임해준다.

 

2. Forward VS Redirect

(1) Forward

  • 서블릿에서 웹 브라우저(클라이언트)를 거치지 않고 바로 다른 서블릿에게 요청하는 방식으로 url 주소가 달라지지 않는다.
  • 서버 내부에서 일어나는 요청이기 때문에 기존에 생성되었던 HttpServletRequest, HttpServletResponse 객체가 공유된다.
// 기존의 객체 전달
RequestDispatcher dispatcher = request.getRequestDispatcher
dispatcher.forward(request, response)

(2) Redirect

  • 서블릿이 웹 브라우저를 다시 거쳐 다른 서블릿에게 요청하는 방식으로 url 주소가 달라진다.
  • 웹 브라우저로부터 들어온 새로운 요청이기 때문에 새로운 HttpServletRequest, HttpServletResponse 객체가 생성된다.
  • HttpServletResponse객체의 sendRedirect( ) 이용한다.

 

3. 프런트 컨트롤러 실습

MVC 프레임워크 기반 코드로 사용되는 내용이다.

(1) 목표

  • DispatcherServlet과 간단한 몇가지 Controller를 생성한다.
  • 요청을 DispatcherServlet이 받아서 적절한 Controller에게 위임한다.

 

(2) mvc-practice 프로젝트 생성

  • main 메소드가 있는 파일을 WebApplicationServer라고 지정한다. (가독성을 위해)
  • main 메소드가 실행될 때, 톰캣이 실행되도록 구현할 것이기 때문이다.

 

(3) 의존성 추가

// 톰캣 의존성
implementation 'org.apache.tomcat.embed:tomcat-embed-core:8.5.42'
implementation 'org.apache.tomcat.embed:tomcat-embed-jasper:8.5.42'

// 서블릿 의존성
implementation 'javax.servlet:javax.servlet-api:4.0.1'

// jsp 의존성
implementation 'javax.servlet:jstl:1.2'

// 로그 의존성
implementation 'ch.qos.logback:logback-classic:1.2.3'

 

(4) 구현 참고사항

  • 톰캣 파트는 이전 수업내용을 참고하면 좋다.
 

[Java Project] Part 1. 나만의 MVC 프레임워크 만들기 - 환경설정2 IntelliJ webapp

어제 필요한 도구들을 설치했다면, 오늘은 IntelliJ IDEA에서 새 프로젝트 환경을 구성할 것이다. 1. IntelliJ IDEA 새 프로젝트 생성 새 프로젝트를 선택하여 'mvc-project' 이름의 프로젝트를 생성한다. Lan

code-angie.tistory.com

  • 톰캣이 DispatcherServlet.java 파일을 실행하도록 하려면 해당 파일이 서블릿이어야 하기 때문에 HttpServlet 을 상속한다.
  • WebServlet이라는 어노테이션을 통해 어떤한 경로로 요청이 들어와도 DispatcherServlet이 호출되도록 설정할 수 있다.
@WebServlet(“/”)
Public class DispatcherServlet extends HttpServlet{}
  • 로그를 찍기 위해 Logback.xml은 main/resources 아래에 붙여 넣는다.
// Logback.xml 파일
<?xml version=”1.0” encoding=”UTF-8”?>
<!DOCTYPE configuration>
<configuration>
	<appender name=”STDOUT” class=”ch.qos.logback.core.CpnsoleAppender”>
		<layout class=”ch.qos.logback.classic.PatternLayout”>
			<Pattern>%d{HH:mm:ss.SSS} [%5level] [%thread] [%logger{36}] - %m%n</Pattern>
		</layout>
	</appender>
	<logger name=”org.example” level=”DEBUG”/>
	<root level-“INFO”>
		<appender-ref ref=”STDOUT”/>
	</root>
</configuration
  • Interface로 Controller를 생성한다. 이후 HomeController class를 생성하여 Controller를 implements하고 override를 할 때, return “home.jsp”을 해줌으로써 HomeController가 호출되었을 때, home 화면이 나올 수 있도록 만들 수 있다.
  • RequestMappingHandlerMapping class 생성하여 key는 url path를 관리하고 value는 userController를 관리하도록 한다.
  • home.jsp 파일 (간단한 웹페이지)을 webapps 아래에 임시로 붙여 넣는다.

 

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.

https://bit.ly/43z0P6S

 

 

#패스트캠퍼스 #포트폴리오 #직장인자기계발 #환급챌린지 #포트폴리오챌린지 #패스트캠퍼스후기 #초격차패키지 #오공완

728x90
반응형
댓글