HTTP 요청 DispatcherServlet HandlerMapping이 해당 요청을 처리할 핸들러를 찾는다. RequestMappingHandlerMapping : 애노테이션 기반의 컨트롤러인 @RequestMapping에서 사용한다. BeanNameUrlHandlerMapping : 스프링 빈 이름으로 핸들러를 찾는다. 핸들러를 호출할 HandlerAdpater를 찾는다. RequestMappingHandlerAdapter : 애노테이션 기반의 컨트롤러인 @RequestMapping에서 사용한다. SimpleControllerHanderAdpater : Controller 인터페이스 구현한 핸들러 처리 HttpRequestHandlerAdapter : HttpRequestHandler 인터페이스를 ..

프론트 컨트롤러 패턴 (스프링 MVC의 DispatcherServlet) - 기존에는 모든 컨트롤러에 공통로직이 중복되었다. - 요청을 받으면 공통 로직을 프론트 컨트롤러가 처리한 뒤 요청에 맞는 컨트롤러를 호출한다. - 프론트 컨트롤러를 제외한 나머지 컨트롤러는 서블릿을 사용하지 않아도 된다. 스프링 MVC 1. 프론트 컨트롤러 도입 - FrontController에서 Request의 URL에 따라 Request를 처리할 컨트롤러를 찾는다. (controllerMap) - 해당 컨트롤러를 호출한다. 2. 중복되는 뷰의 로직 분리하기 - View 객체를 만들어서 뷰를 렌더링하는 함수 생성 - 컨트롤러에서는 뷰 객체를 생성해서 반환하고 프론트 컨트롤러에서 뷰 객체를 받아 render함수를 호출하면 뷰를 렌..

템플릿 엔진 서블릿으로 동적으로 원하는 HTML을 만들 수 있지만 HTML 작성이 불편하다(JAVA코드에 HTML) 템플릿 엔진으로 HTML 문서에서 필요한 곳만 코드를 적용해서 동적으로 변경할 수 있다.(HTML에 JAVA 코드) JSP - JSP는 자바 코드를 그대로 다 사용할 수 있다. - : 자바의 import 문과 동일 - : 자바 코드를 입력할 수 있다. - : 자바 코드를 출력할 수 있다. JSP와 서블릿으로 웹 애플리케이션 개발하는 것의 단점 - 서블릿과 JSP만을 이용해 뷰와 비즈니스 로직을 처리하게 되면 너무 많은 역할을 하게 된다. > 유지보수 어려워짐 - 뷰와 비즈니스 로직이 섞여있어 하나를 수정할 떄 서로 영향을 줄 가능성이 높다. - UI와 비즈니스 로직의 변경 주기가 다르기 때..
HTTP 구성 START LINE : HTTP 메소드 + URL + 쿼리 스트링 + 스키마, 프로토콜 HEADER : 헤더조회 BODY : form 파라미터 형식 조회, message body 데이터 직접 조회 HTTP Request HttpServletRequest - 서블릿은 HTTP 요청 메시지를 편리하게 사용할 수 있도록 HTTP 요청 메시지를 파싱해서 HttpServletRequest 객체에 담아서 제공한다. - 임시 저장소 기능 : HTTP 요청이 시작부터 끝날 때까지 유지되는 임시 저장소 기능을 제공해준다. ( ex - setAttribute) - 세션 관리 기능 제공 (ex - getSession) HTTP 요청 데이터 GET - 쿼리 파라미터 : 메시지 바디 없이, URL의 쿼리 파라미터..
Web Server와 Web Application Server(WAS) Web Server Web Application Server(WAS) HTTP 기반으로 동작한다. Web Server 기능 + 애플리케이션 로직 수행 주로 정적 리소스를 제공하는데 사용한다. 서블릿 컨테이너 기능을 제공해준다. NGINX, APACHE TOMCAT, JETTY - 주로 WebServer로 정적 리소스를 처리하고 애플리케이션 로직이 필요한 요청은 WAS에 요청을 위임한다. 서블릿과 멀티 쓰레드 - 서블릿 동작 1. HTTP 요청 2. WAS가 Request, Response 객체 생성한 뒤 서블릿 객체를 호출한다. 3. 개발자가 Request 객체에서 요청 정보를 꺼내 사용한다. 4. 개발자가 Response 객체에 응..
Spring AOP 관점 지향 프로그래밍 어떤 로직을 기준으로 핵심적인 관점(핵심 비즈니스 로직), 부가적인 관점(로그, 트랜잭션, DB연결) 을 나누어셔 보고 그 관점을 기준으로 각각 모듈화하는 것. 프록시 패턴 사용 어떤 클래스가 AOP 대상이면, 기존 클래스 빈이 만들어질 때 프록시를 자동으로 만들고 원본 클래스 대신 프록시를 빈으로 등록한다. 그리고 원본 클래스가 사용되는 지점에서 프록시를 대신 사용한다. 공통 기능이 한 장소에서 관리된다. 다른 서비스 모듈이 본인의 목적에만 충실하고 그 외 사항들은 신경쓰지 않아도 된다. 개념 Aspect : 관심사를 모듈화한 것(부가기능) Target : Aspect를 적용하는 곳, 부가기능을 부여할 대상 Advice : 실질적인 부가기능을 담은 구현체 Joi..
다이내믹프록시 프록시 팩토리에 의해 런타임에 프록시가 생성된다. 리플랙션을 사용하기 때문에 인터페이스를 직접 구현할 필요 없음. InvocationHandler를 사용해서 중복이 발생하는 것을 해결해준다. 생성 newProxyInstance 메소드 사용 Hello proxiedHello = (Hello) Proxy.newProxyInstance(getClass().getClassLoader(), new Class[]{ Hello.class }, new UppercaseHandler(new HelloTarget())); // 인터페이스, InvocationHandler 구현체 InvocationHandler invoke() 메소드 하나만 가지고 있는 인터페이스 프록시의 메소드가 호출됐을 때 invoke()..
- Total
- Today
- Yesterday
- orphanRemoval
- MSSQL
- @Modifying
- OWIN
- JavaScript
- 스프링 부트 테스트
- 스프링
- c#
- 고아 객체
- Java
- 스프링MVC
- Spring
- spring boot
- Nullable
- 영속성
- 다이내믹 프록시
- 자바의 정석
- default interface
- C# 문법
- 토비의 스프링
- JPA
- 준영속
- ASP.NET
- DataAnnotation
- 빌더 패턴
- jQuery
- Effective Java
- uploadfive
- JpaRepository
- SpringBoot
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |