김영한 21

springMVC 활용 - (8) HTTP응답

[정적 리소스, 뷰 템플릿] 스프링에서 응답 데이터를 받는 방법 1. 정적 리소스 예) 웹 브라우저에 정적인 HTML, css, js을 제공할 때는, 정적 리소스를 사용 2. 뷰 템플릿 사용 예) 웹 브라우저에 동적인 HTML을 제공할 때는 뷰 템플릿을 사용 3.HTTP 메시지 사용 2. - 뷰 템플릿을 호출하는 컨트롤러 @Controller public class ResponseViewController { @RequestMapping("/response-view-v1") public ModelAndView responseViewV1() { ModelAndView mav = new ModelAndView("response/hello").addObject("data", "hello!"); return m..

springMVC 활용 - (7) 스프링 기능

★정리★ 스프링 부트가 미리 핸들러를 등록해놓으면 핸들러매핑에서 핸들러를 조회해서 핸들러어댑터 목록에서 조회해서 핸들러를 호출하고, ModelAndView를 반환하고 뷰리졸버를 호출해서 뷰 렌더 [로그] SLF4j - 인터페이스/logback - 구현체 로그 선언 밑에 셋중 하나 사용 private Logger log = LoggerFactory.getLogger(getClass()); //현재 나의 클래스 지정 private static final Logger log = LoggerFactory.getLogger(Xxx.class) @Slf4j @Slf4j //밑에 private자동으로 넣어줘 @RestController //->String이 그대로 반환 public class LogTestContro..

[스프링 DB 1편] - (3) 트랜잭션

[트랜잭션] - 두개가 모두 성공해야 성공, 한번에 커밋& 롤백 원자성: 트랜잭션 내에서 실행한 작업들은 마치 하나의 작업인 것처럼 모두 성공 하거나 모두 실패 일관성: 모든 트랜잭션은 일관성 있는 데이터베이스 상태를 유지 격리성: 동시에 실행되는 트랜잭션들이 서로에게 영향을 미치지 않도록 격리. 예를 들어 동시에 같은 데이터를 수정하지 못하도록 해야 한다. 격리성은 동시성과 관련된 성능 이슈로 인해 트랜잭션 격리 수준 (Isolation level)을 선택 지속성: 트랜잭션을 성공적으로 끝내면 그 결과가 항상 기록되어야 한다. 중간에 시스템에 문제가 발생해도 데이터베이스 로그 등을 사용해서 성공한 트랜잭션 내용을 복구 [DB연결 구조와 세션] [트랜잭션 사용] 데이터 변경 쿼리를 실행하고 데이터베이스에..

Spring 강의/DB 2022.04.20

[스프링 DB 1편] - (1) JDBC 이해

1. 커넥션 연결: 애플리케이션 서버가 db에 주로 TCP/IP를 사용해서 커넥션을 연결 2. SQL 전달: 애플리케이션 서버는 DB가 이해할 수 있는 SQL을 연결된 커넥션을 통해 DB에 전달 3. 결과 응답: DB는 전달된 SQL을 수행하고 그 결과를 응답하고 애플리케이션 서버는 응답 결과를 활용 문제는 각각의 데이터베이스마다 커넥션을 연결하는 방법, SQL을 전달하는 방법, 그리고 결과를 응답 받는 방법이 모두 다름!! 1. db를 다른 종류의 db로 변경하면 애플리케이션 서버에 개발된 데이터베이스 사용 코드도 함께 변경해야됨 2. 개발자가 각각의 데이터베이스마다 커넥션 연결, SQL 전달과 그 결과를 응답 받는 방법을 새로 학습해야됨 그래서 JDBC라는 자바 표준이 등장!! [JDBC 표준 인터페..

Spring 강의/DB 2022.04.18

[network] - (8) HTTP 헤더2 : 캐시와 조건부 요청

[캐시 기본 동작] • 데이터가 변경되지 않아도 계속 네트워크를 통해서 데이터를 다운로드 받아야 됨 • 인터넷 네트워크는 매우 느리고 비쌈 • 브라우저 로딩 속도가 느림 • 캐시 덕분에 캐시 가능 시간동안 네트워크를 사용하지 않아도 됨 • 비싼 네트워크 사용량을 줄일 수 있음 • 브라우저 로딩 속도가 매우 빠름 • 빠른 사용자 경험 캐시 유효 시간이 초과하면, 서버를 통해 데이터를 다시 조회하고, 캐시를 갱신. 다시 네트워크 다운로드가 발생 캐시 유효 시간 초과해서 서버에 다시 요청하면 1. 서버에서 기존 데이터를 변경함 2. 서버에서 기존 데이터를 변경하지 않음->다시 받기 아까워 ->[검증헤더와 조건부 요청] 캐시 만료후에도 서버에서 데이터를 변경하지 않으면 데이터를 전송하는 대신에 저장해 두었던 캐..

[network] - (7) HTTP 헤더1 : 일반 헤더

[HTTP 헤더] header -필드= field이름 ":" OWS field-value OWS HTTP헤더 용도 - HTTP 전송에 필요한 모든 부가정보를 담아. 헤더 분류(과거) • General 헤더: 메시지 전체에 적용되는 정보, ex) Connection: close • Request 헤더: 요청 정보, ex) User-Agent: Mozilla/5.0 (Macintosh; ..) • Response 헤더: 응답 정보, ex) Server: Apache • Entity 헤더: 엔티티 바디 정보, ex) Content-Type: text/html, Content-Length: 3423 메시지 본문(message body)은 엔티티 본문(entity body)을 전달하는데 사용 엔티티 본문은 요청이..

[network] - (6) HTTP 상태코드

[상태코드] 클라이언트가 서버에 요청을 보내면 그 요청이 잘 처리가 됐는지 http response가 올 때 알려주는 기능 • 1xx (Informational): 요청이 수신되어 처리중 • 2xx (Successful): 요청 정상 처리 200,201, • 3xx (Redirection): 요청을 완료하려면 추가 행동이 필요 클라이언트가 서버에 요청하면 추가적인 조치가 필요해 클라에 다시 돌려보내 • 4xx (Client Error): 클라이언트 오류, 잘못된 문법등으로 서버가 요청을 수행할 수 없음 • 5xx (Server Error): 서버 오류, 서버가 정상 요청을 처리하지 못함 [2xx] - 성공 201 - 클라이언트가 요청한것을 서버쪽에서 리소스 생성. post로 등록했을 때 201 - 자원이..

[network] - (4) HTTP 메서드

[HTTP API] 리소스란? 회원이라는 개념 그 자체 리소스 식별 중요!! 등록,수정, 삭제는 배제. => 회원 리소스를 URI에 매핑 요구사항- 회원 정보 관리 API URI 설계 회원 목록 조회 /read-member-list -> 회원 목록 조회 /members 회원 조회 /read-member-by-id -> 회원 조회 /members/{id} 회원 등록 /create-member -> 회원 등록 /members/{id} 회원 수정 /update-member -> 회원 수정 /members/{id} 회원 삭제 /delete-member -> 회원 삭제 /members/{id} URI는 리소스만 식별! 리소스와 해당 리소스를 대상으로 하는 행위을 분리(회원과 조회,등록,삭제,변경을 분리) ->행위..

[network] - (3) HTTP 기본

[HTTP] HyperText Transfer Protocol : 문서간의 링크를 통해서 연결하는 html을 전송하는 프로토콜 거의 모든 형태의 데이터 전송 가능. 클라이언트 서버 구조, 무상태 프로토콜, 비연결성,단순, 확장 가능 [클라이언트와 서버의 구조] 1. 클라이언트와 서버 구조 http는 클라이언트가 http메세지를 통해서 보내고 서버에서 응답이 올때 까지 기다려. 서버가 요청에 대한 결과를 만들어서 응답해 * 클라이언트와 서버를 분리하는게 중요* 비지니스 로직이랑 데이터는 서버에 넣고 클라이언트는 UI와 사용성에 집중-> 클라이언트와 서버가 독립적으로 진화 [Stateful, Stateless] 2. 무상태 프로토콜 서버가 클라이언트 상태를 보존하지 않는다. *Stateful : 상태를 유지..

1 2 3