개발/Java

· DEV/Java
DispatcherServlet DispatcherServlet은 Spring MVC 프레임워크의 핵심 요소 중 하나로, 모든 HTTP 요청을 최초로 받아들이는 ‘프론트 컨트롤러’ 역할을 합니다. Spring의 web MVC 프레임워크의 중앙 서블릿인 DispatcherServlet는 클라이언트의 요청을 받아 적절한 컨트롤러에게 전달하고, 그 컨트롤러에서의 처리 결과를 바탕으로 적절한 뷰를 선택해주는 중요한 역할을 합니다 DispatcherServlet의 주요 역할은 다음과 같습니다: 요청 분석: 클라이언트로부터 오는 HTTP 요청을 분석합니다. 핸들러 매핑: 분석된 요청을 해당하는 컨트롤러에게 전달하기 위해 핸들러 맵핑을 수행합니다. 요청 처리: 매핑된 컨트롤러가 요청을 처리하고 결과를 반환하면, Di..
· DEV/Java
Expression Language EL은 JSP에서 Java 코드에 대한 보다 간단한 대안을 제공하는 Java 표현 언어의 약자입니다. EL을 사용하면 JavaBeans 구성 요소에 저장된 애플리케이션 데이터에 더 쉽게 액세스할 수 있습니다. 예제로 알아보자 아래 User 클래스를 생성하고, 서블릿에 요청 속성으로 추가해봅시다 public class User { private String name; private String email; // constructor, getters, setters... } User user = new User(); user.setName("John Doe"); user.setEmail("john@example.com"); request.setAttribute("user"..
· DEV/Java
Servlet 서블릿은 요청-응답 프로그래밍 모델을 통해 액세스되는 애플리케이션을 호스트하는 서버의 기능을 확장하는 데 사용되는 Java의 클래스입니다. 일반적으로 웹 서버에서 호스팅하는 응용 프로그램을 확장하는 데 사용됩니다. Servlet Lifecycle 서블릿의 수명 주기는 서블릿 컨테이너에 의해 제어되며 다음 단계로 구성됩니다. 아래 과정은 컨테이너가 자동으로 호출을 해주기 때문에 개발자들은 필요한 것들을 채워주기만 하면 됩니다 로드 및 인스턴스화 서블릿 컨테이너는 시작하는 동안 또는 첫 번째 요청이 있을 때 서블릿 클래스를 로드합니다. 서블릿 인스턴스는 Class 클래스의 newInstance() 메서드를 사용하여 생성됩니다. 초기화 서블릿 컨테이너는 init() 메서드를 호출하고 Servle..
· DEV/Java
Spring MVC Spring MVC는 Spring Framework의 일부로서 웹 애플리케이션을 개발하기 위한 프레임워크입니다. MVC는 Model-View-Controller의 약자로, 소프트웨어 디자인 패턴 중 하나입니다. 이 패턴은 애플리케이션의 논리를 쉽게 이해하고, 개발하고, 유지보수하게 해주는 유용한 구조를 제공합니다. Spring의 View Rendering Spring의 View 렌더링하는 방법을 알아보겠습니다. 먼저 모델을 생성하고 채웁니다. 이 과정에서 애플리케이션에서 사용할 데이터를 수집하고 구성합니다 @Controller public class MyController { @RequestMapping("/somePath") public String handleRequest(Mode..
· DEV/Java
Java 런타임에 매개변수 이름 얻는 방법 Reflection API Java에서 Reflection API는 프로그램이 컴파일 시점에 특정 타입을 알지 못해도 런타임에 객체를 조작할 수 있게 해줍니다. 이는 런타임에 클래스, 인터페이스, 필드, 메소드를 조사할 수 있게 하여, 컴파일 시점에 인터페이스, 필드, 메소드 등의 이름을 알지 못해도 됩니다. 매개 변수와 관련하여 Reflection API를 사용하면 런타임에 메소드 매개 변수를 조사할 수 있습니다. 다음은 예시입니다: Method[] methods = MyClass.class.getMethods(); for (Method method : methods) { Parameter[] parameters = method.getParameters(); ..
· DEV/Java
Spring의 코드 분리 단일 책임 원칙(Single Responsibility Principle, SRP)에 따라서 주어진 예제를 리팩토링 하면서 관심사 분리 즉 코드 분리를 해보자 코드 분리의 기준은 아래와 같다. 관심사 분리: 각 부분이 서로 다른 목적을 가진 코드로 분리 변하는 것과 변하지 않는 것의 분리: 이는 코드 내에서 변동성이 큰 부분과 그렇지 않은 부분을 분리하는 것을 의미합니다 일반적으로 자주 변경되는 로직은 분리하여 관리함으로써 코드의 유연성을 높이고, 유지보수를 용이하게 합니다. 반대로 변동성이 적은 부분은 안정적인 기능을 제공하는 코드로서 그 자체로 응집력을 갖도록 관리합니다. 공통 코드와 중복 코드의 분리: 코드 베이스 내에서 반복적으로 사용되는 부분(공통 코드)이나 같은 기능을..
· DEV/Java
Spring Response와 Request Servlet은 무엇인가 서블릿은 웹 브라우저(클라이언트)와 서버 간의 대화에서 중개인과 같습니다. 브라우저에서 요청을 수신하고 처리하고 응답을 다시 보내는 서버에서 실행되는 작은 프로그램입니다. 스프링 프레임워크의 맥락에서 우리는 종종 특별한 종류의 서블릿인 DispatcherServlet에 대해 이야기합니다. 점포의 점장이라고 생각하시면 됩니다. 고객(요청)이 매장에 들어오면 관리자(DispatcherServlet)가 고객을 올바른 부서(컨트롤러)로 안내합니다. 부서에서 고객이 필요로 하는 모든 것을 갖추면(요청 처리) 관리자는 고객이 이를 받도록 합니다(응답 보내기). 즉, DispatcherServlet은 모든 요청을 수신하고 처리를 위해 보낼 위치를 ..
· DEV/Java
Spring의 HTTP 처리 Spring 프레임워크에서 클라이언트, 서버, 컨트롤러 및 요청 매핑 간의 흐름을 이해하는 것을 목적으로 기술합니다 TIP 1 Spring 프레임워크에서 컨트롤러 내부의 메소드는 일반적으로 정적이 아닌 인스턴스 메소드입니다. 이는 Tomcat이 각 요청을 처리하기 위해 컨트롤러의 인스턴스를 생성하기 때문입니다. 이렇게 하면 각 요청이 별도의 컨트롤러 인스턴스에서 처리되므로 확장성과 스레드 안전성이 향상됩니다. TIP 2 WAR 파일(웹 응용 프로그램 리소스 또는 웹 응용 프로그램 ARchive)의 경우 Tomcat과 같은 모든 서블릿 컨테이너 또는 응용 프로그램 서버에 배포할 수 있는 응용 프로그램용 패키지입니다. 이 파일을 내보내고 원격으로 전송하여 AWS와 같은 서버에 직..
· DEV/Backend
Tomcat Tomcat이라고도 하는 Apache Tomcat은 Apache Software Foundation에서 개발한 오픈 소스 웹 서버 및 Servlet 컨테이너입니다. Tomcat은 Java Servlet, JSP(JavaServer Pages) 및 EL(Java Expression Language)을 포함하여 Java 플랫폼의 여러 핵심 기술을 구현합니다. Java 코드를 실행할 수 있는 “순수한 Java” 웹 서버 환경을 제공합니다. 톰캣의 특징 서블릿 컨테이너 본질적으로 Tomcat은 웹 애플리케이션에서 요청과 응답을 처리하는 작은 서버측 애플리케이션인 Java 서블릿을 실행하는 서블릿 컨테이너입니다. JSP 엔진 Tomcat에는 실행을 위해 JSP를 서블릿으로 변환한 다음 컴파일하고 나중..
· DEV/Java
Java의 Hook Method Java의 후크 메서드는 기본 클래스에서 선언되지만 해당 동작을 사용자 지정하기 위해 하위 클래스에서 재정의되는 메서드입니다. 이러한 메서드는 미리 정의된 워크플로 또는 일련의 작업에 삽입할 수 있는 사용자 지정 코드의 자리 표시자 역할을 합니다 즉 기본 코드를 변경할 필요 없이 코드 설계의 유연성을 높이고 코드 재사용을 촉진할 수 있습니다 Java 컨텍스트에서 후크 메서드는 기본 클래스에서 알고리즘의 골격을 정의하는 방법을 제공합니다 또는, 하위 클래스가 후크 메서드를 재정의하여 알고리즘의 특정 단계를 사용자 지정할 수 있는 템플릿 메소드 디자인 패턴을 구현하는 데 일반적으로 사용됩니다. 이를 통해 일반 프레임워크 구성 요소를 재사용하고 애플리케이션별 논리를 실행할 수 ..
berom
'개발/Java' 태그의 글 목록