Web Development(19)
-
스프링 MVC - 구조 이해(1)
스프링 MVC 전체 구조직접 만든 MVC 프레임워크와 스프링 MVC를 비교해보자. 직접 만든 MVC 프레임워크 구조 SpringMVC 구조 직접 만든 프레임워크 -> 스프링 MVC 비교- FrontController -> DispatcherServlet- handlerMappingMap -> HandlerMapping- MyHandlerAdapter -> HandlerAdapter- ModelView -> ModelAndView- viewResolver -> ViewResolver- MyView -> View ⭐ DispatcherServlet 구조 : org.springframework.web.servlet.DispatcherServlet 스프링 MVC도 프론트 컨트롤러 패턴으로 구현되어 있다.스프..
2024.10.23 -
MVC 프레임워크 만들기(2)
단순하고 실용적인 컨트롤러 - V4앞서 만든 v3 컨트롤러는 서블릿 종속성을 제거하고 뷰 경로의 중복을 제거하는 등, 잘 설계된 컨트롤러이다.그런데 실제 컨트톨러 인터페이스를 구현하는 개발자 입장에서 보면, 항상 ModelView 객체를 생성하고 반환해야 하는 부분이 조금은 번거롭다. 좋은 프레임워크는 아키텍처도 중요하지만, 그와 더불어 실제 개발하는 개발자가 단순하고 편리하게 사용할 수 있어야 한다. 소위 실용성이 있어야 한다. 이번에는 v3를 조금 변경해서 실제 구현하는 개발자들이 매우 편리하게 개발할 수 있는 v4 버전을 개발해보자. 인터페이스 ControllerV4.javapackage hello.servlet.web.frontcontroller.v4;import java.util.Map;..
2024.10.21 -
MVC 프레임워크 만들기(1)
⭐FrontController 패턴 특징 - 프론트 컨트롤러 서블릿 하나로 클라이언트의 요청을 받음- 프론트 컨트롤러가 요청에 맞는 컨트롤러를 찾아서 호출- 입구를 하나로! - 공통 처리 가능 - 프론트 컨트롤러를 제외한 나머지 컨트롤러는 서블릿을 사용하지 않아도 됨 ⭐ 스프링 웹 MVC와 프론트 컨트롤러스프링 웹 MVC의 핵심도 바로 FrontController-> 스프링 웹 MVC의 DispatcherServlet이 FrontController 패턴으로 구현되어 있음 프론트 컨트롤러 도입 - v1목표: 기존 코드를 최대한 유지하면서, 프론트 컨트롤러를 도입해보자!먼저, 구조를 맞춰두고 점진적으로 리팩터링 해보자 인터페이스 - ControllerV1.javapackage hello.servl..
2024.10.21 -
서블릿, JSP, MVC 패턴(2)
MVC 패턴 - 개요 - "너무 많은 역할" => 유지보수가 너무 어려워짐 - "변경의 라이프 사이클" => UI변경/비즈니스 로직을 수정하는 일은 각각 다르게 발생할 가능성이 매우 높음이러한 것을 하나의 코드로 관리하는 것은 유지보수하기 좋지 않다. "기능 특화"=> JSP같은 뷰 템플릿은 화면을 렌더링 하는데 최적화되어 있기 때문에 이 부분의 업무만 담당하는 것이 가장 효과적이다. MVC(Model View Controller)MVC 패턴은 지금까지 학습한 것 처럼 하나의 서블릿이나, JSP로 처리하던 것을 컨트롤러(Controller)와 뷰(View)라 는 영역으로 서로 역할을 나눈 것을 말한다. 웹 애플리케이션은 보통 이 MVC 패턴을 사용한다.- 컨트롤러: HTTP 요청을 받아서 파라미터를 검..
2024.10.20 -
iBatis vs MyBatis
이번 프로젝트에서 갑자기 IBatis를 보게되었다.처음 접하는 iBatis와 그리고 동시에,여태 까지 사용해왔던 MyBatis에 대해서도 잘 모르는 것 같아서 자세히 정리해보고자 한다. 1. iBatisMyBatis의 전신으로 2000년대 초반에 등장했다. iBatis는 JDBC를 간편하게 다룰 수 있도록 도와주는 퍼시스턴스 프레임워크로, SQL 쿼리를 XML로 작성하고 Java 객체와 매핑할 수 있게 해준다. 등장 배경) JDBC의 복잡성을 해결하기 위한 필요성 문제점)JDBC를 사용할 때는 SQL 쿼리를 Java 코드에 직접 작성하고, 리소스 관리도 직접 해야 했음. 예시) 데이터베이스에서 사용자를 조회하는 JDBC 코드는 다음과 같다.Connection conn = null;PreparedStat..
2024.10.17 -
@resource VS @autowired
나는 이전 프로젝트에서 autowired 애노테이션을 사용해서 의존성을 주입하였는데, @resource라는 애노테이션을 pms 프로젝트에서 소스분석하다가 발견해서 차이점을 알아보기로 했다. 1. @resourceJDK 표준 애노테이션으로, Java EE의 @Resource는 Spring에서도 지원한다.빈 이름을 기준으로 의존성을 주입한다. 이름이 일치하는 빈을 찾고 주입하는 방식이다.타입으로 의존성을 주입하는 @Autowired와는 다르게, 기본적으로 이름으로 주입하며, name 속성을 사용하여 구체적으로 어떤 빈을 주입할지를 지정할 수 있다.만약 name 속성을 명시하지 않으면, 필드 이름과 동일한 빈을 찾아서 주입하게 됩니다. @Resource도 생성자, 필드, 메서드에서 사용할 수 있다.장점)정..
2024.10.16