전체 글137 [Spring/MVC] 스프링 MVC 기본 기능 로깅 import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class LogTestController { private final Logger log = LoggerFactory.getLogger(LogTestController.class); @RequestMapping("/log-test") public String logTest() { String name = "spring"; log.inf.. 2024. 3. 21. [Spring/MVC] 스프링 MVC 구조 SpringMVC 구조 DispatcherServlet.doDispatch() 서블릿 등록 → DispatcherServlet 도 부모 클래스에서 HttpServlet을 상속 받아서 사용하고, 서블릿으로 동작한다. protected void doDispatch(HttpServletRequest request, HttpServletResponse response) throws Exception { HttpServletRequest processedRequest = request; HandlerExecutionChain mappedHandler = null; ModelAndView mv = null; // 1. 핸들러 조회 mappedHandler = getHandler(processedRequest); i.. 2024. 3. 21. [Spring/MVC] MVC 프레임워크 프론트 컨트롤러 패턴 프론트 컨트롤러 도입 - v1 구조 View 분리 - v2 구조 모든 컨트롤러에서 뷰로 이동하는 부분에 중복이 있고, 깔끔하지 않다. String viewPath = "/WEB-INF/views/new-form.jsp"; RequestDispatcher dispatcher = request.getRequestDispatcher(viewPath); dispatcher.forward(request, response); Model 추가 - v3 구조 서블릿 종속성 제거 → 컨트롤러 입장에서 HttpServletRequest, HttpServletResponse 가 꼭 필요할까? 요청 파라미터 정보는 자바의 Map 으로 대신 넘기면 컨트롤러가 서블릿 기술을 몰라도 동작이 가능하다. 뷰 이름.. 2024. 3. 21. [Spring/MVC] MVC 패턴 서블릿과 JSP (JAVA Server Page)의 한계 서블릿으로 개발할 때는 뷰(View)화면을 위한 HTML 만드는 작업이 자바 코드에 섞여서 지저분했다. JSP를 사용한 덕분에 뷰를 생성하는 HTML 작업을 깔끔하게 가져가고, 중간중간 동적으로 변경이 필요한 부분에만 자바 코드를 적용했다. 그런데 이렇게 해도 해결되지 않는 것이 많다. MVC 패턴의 등장 비지니스 로직은 서블릿 처럼 다른곳에 처리하고, JSP는 목적에 맞게 HTML로 화면(View)을 그리는 일에 집중하도록 하자. Model Vew Controller 컨트롤러 : HTTP 요청을 받아서 파라미터를 검증하고, 비즈니스 로직을 실행한다. 그리고 뷰에 전달할 결과 데이터를 조회해서 모델에 담는다. 모델 : 뷰에 출력할 데이터를 담아둔다.. 2024. 3. 21. [Spring/MVC] HttpServletRequest,Response, HTTP 요청 데이터 HttpServletRequest - 개요 HttpServletRequest 역할 다음과 같은 HTTP 요청 메시지를 편리하게 조회할 수 있다. HTTP 요청 메시지 Start line HTTP 메소드 URL 쿼리 스트링 스키마, 프로토콜 헤더 헤더 조회 바디 form 파라미터 형식 조회 message body 데이터 직접 조회 HttpServletRequest - 기본 사용법 Start line 정보 protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { printStartLine(request); } //Start-line 정보 private .. 2024. 3. 21. [Spring/MVC] 웹 애플리케이션 정적 리소스 고정된 HTML 파일, CSS, JS, 이미지, 영상등 게종 주로 웹 브라우저 HTML 페이지 동적으로 필요한 HTML 파일을 생성해서 전달 웹 브라우저 : HTML 해석 HTML API HTML이 아니라 데이터를 전달 주로 JSON 형식 사용 SSR (서버 사이드 렌더링) HTML 결과를 서버에서 만들어서 웹 브라우저에 전달 주로 정적인 화면에 사용 관련기술 : JSP, 타임리프 (백엔드) CSR (클라이언트 사이드 렌더링) HTML 결과를 자바스크립트를 사용해 웹 브라우저에서 동적으로 생성해서 적용 주로 동적인 화면에 사용하고 웹 환경을 앱처럼 필요한 부분부분 변경 가능 ex) 구글 지도, Gmail 관련기술 : React, Vue.js (프론트) 서블릿 자바를 사용하여 웹페이지를 동적으.. 2024. 3. 20. [HTTP] HTTP 헤더 HTTP 헤더 1 엔티티(Entitiy) 용어가 사라지고 ⇒ 표현(Representation) 이라고 불린다. 표현 표현은 요청이나 응답에서 전달할 실제 데이터를 말함 데이터 유형(html, json), 데이터 길이 , 압축 정보 등등 종류 Content-Type : 표현 데이터의 형식 설명 application/json , image/png Content-Encoding : 표현 데이터 인코딩 데이터를 읽는 쪽에서 인코딩 헤더의 정보로 압축을 해제 gzip, deflae, identity Content-Language : 표현 데이터의 자연 언어 Content-Language: en → 영어 Content-Language: ko → 한국어 Content-Length : 표현 데이터 길이 Transfer.. 2024. 3. 20. [HTTP] HTTP 상태코드 HTTP 상태코드 클라이언트가 보낸 요청의 처리 상태를 응답에서 알려주는 기능 1xx(Informational) : 요청이 수신되어 처리중 거의 사용하지 않는다. 2xx(Successful) : 요청 정상 처리 200 OK : 요청 성공 201 Created : 요청 성공해서 새로운 리소스가 생성 202 Accepted : 요청이 성공적이지만, 처리가 완료되지않음 204 No Content : 요청이 성공적이지만, 응답 페이로드에 보낼 데이터가 없음 3xx(Redirection) : 요청을 완료하려면 추가 행동이 필요 영구 리다이렉션 : 특정 리소스의 URI가 영구적으로 이동 ex) /members → /users 301 Moved Permanenlty 리다이렉트시 요청 메서드가 GET으로 변하고 본문이.. 2024. 3. 20. [HTTP] 인터넷 네트워크 HTTP 기본 지식 IP 인터넷 프로토콜 지정한 IP 주소에 데이터(패킷 단위) 전달 TCP(Transmission Control Protocol) 특징 연결지향 - TCP 3 way handshake 데이터 전달 보증 신뢰할 수 있는 프로토콜 순서 보장 대부분 TCP사용 UDP(User Datagram Protocol)특징 연결지향 - TCP 3 way handshake X 데이터 전달 보증 X 신뢰성 X 순서보장 X 빠르다. ip와 거의 유사 +PORT +checksum 정도만 추가 PORT 0~65535 할당 가능 0~1023 : 잘 알려진 포트, 사용하지 않는 것이 좋음 FTP (File Transfer Protocol) - 20, 21 TELNET - 23 리모트(원격) 컴퓨터에 로그온하여 사용.. 2024. 3. 20. [JPA/기본편] 객체지향 쿼리 객체지향 쿼리 EntityManager.find() 메소드를 사용하면 식별자로 엔티티 하나를 조회할 수 있다. 하지만 이 기능만으로 애플리케이션을 개발하기는 어렵다. 객체지향 쿼리 소개 다음은 JPA가 공식 지원하는 기능이다. JPQL Criteria 쿼리 : JPQL을 편하게 작성하도록 도와주는 API, 빌더 클래스 모음 네이티브 SQL : JPA에서 JPQL 대신 직접 SQL을 사용할 수 있다. 다음은 JPA가 공식 지원하지는 않지만 알아둘 가치가 있다. QueryDSL : Criteria 쿼리처럼 JPQL을 편하게 작성하도록 도와주는 빌더 클래스 모음, 비표준 오픈소스 프레임워크 JDBC 직접 사용, MyBatis 같은 SQL 매퍼 프레임워크 사용 : 필요하면 JDBC를 직접 사용할 수 있다. JP.. 2024. 3. 20. 이전 1 ··· 4 5 6 7 8 9 10 ··· 14 다음