일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- spring
- pointcut
- Servlet
- Android
- QueryDSL
- 그리디
- 인프런
- 알고리즘
- java
- kotlin
- Greedy
- SpringBoot
- AOP
- Exception
- 자바
- jpa
- JDBC
- Thymeleaf
- 스프링 핵심 원리
- Proxy
- Spring Boot
- http
- 스프링
- 백준
- db
- 김영한
- JPQL
- transaction
- springdatajpa
- 스프링 핵심 기능
- Today
- Total
목록MVC (9)
개발자되기 프로젝트
1. Thymeleaf 매뉴얼 기본 메뉴얼: https://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.html 스프링 통합 메뉴얼: https://www.thymeleaf.org/doc/tutorials/3.0/thymeleafspring.html 2. Spring 통합으로 추가되는 기능 스프링의 SpringEL 문법 통합 SpringEL 표현식 ~~.username : 프로퍼티 접근 -> user.getUsername() ~~['username'] -> user.getUsername() ~~.getUsername() -> -> getUsername() 직접 호출. ${@myBean.doSomething()} 처럼 스프링 빈 호출 지원 편리한 폼 관리를 위..
1. Client에서 Server로 요청 데이터를 절달하는 세 가지 방법 GET - 쿼리 파라미터 /url?username=hello&age=20 메시지 바디 없이, URL의 쿼리 파라미터에 데이터를 포함해서 전달 예) 검색, 필터, 페이징등에서 많이 사용하는 방식 POST - HTML Form content-type: application/x-www-form-urlencoded 메시지 바디에 쿼리 파리미터 형식으로 전달 username=hello&age=20 예) 회원 가입, 상품 주문, HTML Form 사용 HTTP message body에 데이터를 직접 담아서 요청 HTTP API에서 주로 사용, JSON, XML, TEXT 데이터 형식은 주로 JSON 사용 POST, PUT, PATCH 2. Q..
누구는 v4, 누구는 v3로 개발하고 싶으면 어떡하지? 1. Adapter 패턴 지금까지 우리가 개발한 프론트 컨트롤러는 한가지 방식의 컨트롤러 인터페이스만 사용할 수 있다. ControllerV3 , ControllerV4 는 완전히 다른 인터페이스이다. 따라서 호환이 불가능하다. 마치 v3는 110v이고, v4는 220v 전기 콘센트 같은 것이다. 이럴 때 사용하는 것이 바로 어댑터이다. 어댑터 패턴을 사용해서 프론트 컨트롤러가 다양한 방식의 컨트롤러를 처리할 수 있도록 변경해보자. 2. V5 구조 핸들러 어댑터: 중간에 어댑터 역할을 하는 어댑터가 추가되었는데 이름이 핸들러 어댑터이다. 여기서 어댑터 역할을 해주는 덕분에 다양한 종류의 컨트롤러를 호출할 수 있다. 핸들러: 컨트롤러의 이름을 더 넓은..
Controller와 View의 역할을 명확하게 구분함. 흠 근데 현재 컨트롤러는 중복이 많음..귀찮은데.. 1. 포워드 중복 View로 이동하는 코드가 항상 중복 호출 2.ViewPath에 중복 prefix: /WEB-INF/views/ suffix: .jsp 만약 jsp가 아닌 thymeleaf 같은 다른 뷰로 변경하면.. 전체 코드를 다 변경해야 한다 3. 사용하지 않는 코드 HttpServletReponse는 현재 코드에서 사용하지 않음.. 4. 공통 처리가 어려움. 기능이 복잡해질 수 록 컨트롤러에서 공통으로 처리해야 하는 부분이 많음. 5. 정리 이러한 문제를 해결하기 위해서는 공통 기능을 처리히야함. 즉 수문장 역할을 하는 기능이 필요. Front Controller패턴을 사용하면 해결이 가..
1. MVC 패턴 적용 서블릿을 컨트롤러로 사용하고, JSP를 뷰로 사용해서 MVC 패턴을 적용 Model은 HttpServletRequest 객체를 사용한다. request는 내부에 데이터 저장소를 가지고 있음. request.setAttribute() , request.getAttribute() 를 사용하면 데이터를 보관하고, 조회할 수 있다 2. Controller Request, Response를 받아서 view에 제어권 넘김. RequestDispatcher : Defines an object that receives requests from the client and sends them to any resource (such as a servlet, HTML file, or JSP file) ..
1. 변경 주기가 다르면 분리하자. UI 를 수정하는 것과 비즈니스 로직을 수정하는 일은 변경 주기가 다를 가능성이 매~~우 높음. 변경 라이프 사이클이 다른 코드를 하나의 코드로 관리하는 것은 유지보수하기 좋지 않음.. 2. 기능 특화 JSP같은 뷰 템플릿은 화면을 렌더링하는 데 최적화 되어있음. 3. Model View Controller(MVC) 컨트롤러(Controller)와 뷰(View)라는 영역으로 서로 역할을 나눈 것을 말한다. 보통 이 MVC 패턴을 사용함 Controller HTTP 요청을 받아서 파라미터를 검증하고, 비즈니스 로직을 실행한다. 그리고 뷰에 전달할 결과데이터를 조회해서 모델에 담는다. Model 뷰에 출력할 데이터를 담음. 뷰가 필요한 데이터를 모두 모델에 담아서 전달해줌..
1. HttpServletRequest 서블릿은 개발자가HTTP 요청 메시지를 편리하게 사용할 수 있도록 알잘딱으로 HTTP 요청 메시지를 파싱한다. 그리고 그 결과를 HttpServletRequest 객체에 담아서 제공한다. 2. HTTP요청 메시지 예시 POST /save HTTP/1.1 Host: localhost:8080 Content-Type: application/x-www-form-urlencoded username=kim&age=20 START LINE HTTP 메소드 URL 쿼리 스트링 스키마, 프로토콜 헤더 헤더 조회 바디 form 파라미터 형식 조회 message body 데이터 직접 조회 3. 임시 저장소 기능 해당 HTTP 요청이 시작부터 끝날 때 까지 유지되는 임시 저장소 기능 ..
1. 쓰레드, Thread 쓰레드가 애플리케이션 코드를 하나하나 순차적으로 실행함. main 메서드 ㅋㅋㅋ main이라는 Thread가 실행되는 것. ㅋㅋ 자바 메인 메서드를 처음 실행하면 main이라는 이름의 쓰레드가 실행 쓰레드가 없다면 자바 애플리케이션 실행이 불가능 쓰레드는 한번에 하나의 코드 라인만 수행 동시 처리가 필요하면 쓰레드를 추가로 생성 2. 단일 요청 : Thread 하나 사용 3. 다중요청 - Thread 하나 사용 이런 상황은... 둘다 죽음... 4. 요청마다 Thread 생성 장점 동시 요청을 처리할 수 있다. 리소스(CPU, 메모리)가 허용할 때 까지 처리가능 하나의 쓰레드가 지연 되어도, 나머지 쓰레드는 정상 동작한다. 단점 쓰레드는 생성 비용은 매우 비싸다. 고객의 요청이..