Spring Framework/Web on Servlet Stack(72)
-
HandlerAdapter의 추상화 작업
✅ HandlerAdapter가 추상화를 제공한다는 의미DispatcherServlet은 HandlerMapping으로부터 적절한 핸들러 객체(예: @Controller의 메서드) 를 찾은 후, 이를 실행해야 합니다.하지만 핸들러는 다양할 수 있고, 처리 방식도 달라질 수 있습니다.예를 들어, 다음과 같은 다양한 타입이 존재할 수 있습니다:@RequestMapping이 붙은 HandlerMethodHttpRequestHandlerController 인터페이스 구현체 등DispatcherServlet이 이 모든 타입을 직접 처리하면 매우 복잡해지므로,이를 추상화하는 계층이 바로 HandlerAdapter 입니다. ✅ 그럼 "추상화"는 무엇을 포함하나요?HandlerAdapter는 단순히 handler.ha..
2023.06.23 -
contextPath와 servletPath
Spring Boot와 같이 내장 톰캣(embedded Tomcat) 을 사용하는 경우 대부분 contextPath와 servletPath를 사용하지 않습니다. ✅ 언제 contextPath와 servletPath가 사용되지 않을까?1. contextPath가 없는 경우 (contextPath = "")Spring Boot 기본 설정디폴트로 contextPath는 빈 문자열 ""입니다.즉, http://localhost:8080/이 루트 URL이 됩니다.설정하지 않으면 contextPath는 존재하지 않는 것으로 간주됨.application.properties 또는 application.yml 에서 따로 설정하지 않으면 사용하지 않습니다.# 예: contextPath 지정하지 않음server: port..
2023.06.23 -
requestURI
requestURI는 HttpServletRequest 객체가 제공하는 요청된 URL 경로의 전체 정보 중, 도메인과 쿼리 파라미터를 제외한 경로 부분을 의미합니다. ✅ requestURI란?정의: HttpServletRequest.getRequestURI() 메서드로 얻을 수 있는 값형식: contextPath + servletPath + pathInfoString requestURI = request.getRequestURI(); ✅ 구성 예시예를 들어 다음과 같은 요청 URL이 있다고 합시다:http://localhost:8080/myapp/api/users/123?verbose=true항목값설명schemehttp프로토콜serverNamelocalhost호스트 이름serverPort8080포트 넘버..
2023.06.23 -
Filter
Spring Web 모듈 필터 개요Spring Web 모듈은 서블릿 기반 애플리케이션에서 웹 요청을 처리하는 데 유용한 여러 필터를 제공합니다. 이 필터들은 Form 데이터 처리, 전달된 헤더 관리, 얕은 ETag 캐싱, CORS(교차 출처 리소스 공유) 처리를 위한 기능을 제공합니다. 각 필터의 역할에 대해 자세히 살펴보겠습니다.Form Data 필터디폴트로 브라우저에서는 HTTP GET 또는 POST 메서드를 통해서만 폼 데이터를 전송할 수 있습니다. 하지만 Non-브라우저 클라이언트(예: REST 클라이언트)는 다른 HTTP 메서드인 PUT, PATCH, 또는 DELETE를 사용하여 폼 데이터를 전송할 수 있습니다. Servlet API는 POST 요청에 대해서만 ServletRequest.getP..
2023.05.19 -
WebDataBinder
📌 WebDataBinder란?WebDataBinder는 웹 요청 파라미터를 JavaBean 객체로 바인딩하는 특별한 DataBinder입니다.📌 서블릿 API에 종속되지 않으며, ServletRequestDataBinder와 같은 구체적인 변형 클래스의 기본 역할을 합니다.📌 주요 사용 사례:컨트롤러에서 폼 데이터를 객체로 자동 변환JSON 데이터를 Java 객체로 변환데이터 유효성 검사 수행커스텀 변환기 적용 가능⚠️ 보안 경고:데이터 바인딩을 사용할 때 외부 클라이언트가 특정 객체 그래프를 조작할 위험이 있으므로,허용되지 않은 필드 바인딩을 막고 적절한 보안 조치를 취해야 합니다.✅ WebDataBinder의 주요 기능1️⃣ 데이터 바인딩 (HTTP 요청 → Java 객체)WebDataBind..
2023.05.01 -
Servlet
Servlet(Server Applet)서블릿(Servlet) 자체는 웹 애플리케이션의 구성 요소 중 하나입니다. 웹 애플리케이션은 클라이언트의 요청에 대한 동적인 처리를 위해 서버상에서 실행되는 애플리케이션을 말하며, 서블릿은 그 중에서 Java를 사용하여 웹 서버에서 실행되는 프로그램입니다.서블릿은 HTTP 요청을 받아 처리하고, 그 결과를 웹 브라우저로 다시 전송(응답)하는 역할을 합니다. 이는 HTML, XML 등의 형태로 응답을 생성하여 클라이언트(보통 웹 브라우저)에 전달합니다. 서블릿은 Java EE(Enterprise Edition) 스펙의 일부이며, JSP(JavaServer Pages), JSF(JavaServer Faces)와 같은 다른 Java 웹 기술과 함께 웹 애플리케이션의 백엔..
2023.04.17