처음 웹서버에 프로그램을 붙여 동적인 페이지를 만드는 프로그램
https://www.youtube.com/watch?v=calGCwG_B4Y&t=47s
동작 순서
{ }
안쪽에 변수를 담고, 그 변수를 @PathVariable("")
로 받아서 사용할 수 있음인스턴스
를 생성하고 종속성
을 포함하여 각종 생명주기
를 관리해줌클라이언트에서 받은 요청을 객체로 바인딩하기 위해 사용하는 방법
클라이언트가 전송하는 Json 형태의 HTTP Body 내용을 Java 객체로 변환
@RequestBody
를 사용할 경우 에러 발생 Reflection
을 이용해 값을 할당 Json
기반1개의 HTTP 요청 파라미터를 받기 위해 사용
@RequestParam
이 쓰고있는 메서드의 변수로 매핑true
이기 때문에 기본적으로 해당 파라미터가 전송되어야 함 --> 전송 안되면 400 에러@Controller
와 다르게 @RestController
는 리턴 값에 자동으로 @ResponseBody
가 붙게 되어 별도 어노테이션을 명시해주지 않아도 HTTP 응답데이터(body)에 자바 객체가 매핑되어 전달
리소스가 있는 위치를 지정
하이퍼텍스트 링크를 사용해 웹 페이지를 로드하는 데 사용
네트워크 장치 간에 정보를 전송하도록 설계
컴퓨터끼리 소통을 할 때 필요한 프로토콜
메서드가 정상 종료되면 트랜잭션을 commit 하고, 예외가 발생하면 트랜잭션을 rollback
동작원리
@Transactional
이 선언되면 해당 클래스에 트랜잭션이 적용된 프록시 객체
생성주의할 점
@Order
을 이용해 순서 정하기자바의 객체와 RDB를 매핑해주는 기술
구현체가 없음
애플리케이션과 JDBC 사이에서 동작
JPA 내부에서 JDBC API를 사용해 SQL을 호출하고 DB와 통신
사용 이유
- 생산성 : 개발자가 반복적인 코드를 작성할 필요가 없음
- 유지보수 : 필드를 하나만 추가해도 관련된 SQL과 JDBC 코드를 전부 수행해야 했지만 JPA는 대신 처리해줘서 유지보수에 좋음
- 패러다임의 불일치 해결 : 연관 객체 사용 시점에 SQL을 전달할 수 있고, 같은 트랜잭션 내에서 조회할 때 동일성 보장
- 성능 : 애플리케이션과 DB 사이에서 성능 최적화 기회 제공
- 트랜잭션을 commit하기 전까지 메모리에 쌓고 한번에 SQL 전송
데이터를 저장하거나 전송할 때 많이 사용되는 경량의 데이터 교환 형식
사용자가 입력한 값을 어플리케이션 도메인 객체에 동적으로 할당
주로 문자열을 입력하는데, int형으로 받아야 할 수도 있고, Date나 객체 그 자체로 받아야하는 경우도 있는데, 그 문자열을 객체가 가지고 있는 다양한 property 타입으로 변환해주는 기능입니다.
특정 사용자인지 식별 가능
--> 로그인
특정 권한을 가진 사용자만 특정 기능에 접근
--> 접근 제한
개발자는 로그인을 요청한 사용자가 해당 사용자가 맞는지 확인할 수 있어야 하지만 DB에 저장된 password는 식별할 수 없어야 함
레인보우 테이블
로 대조해서 해킹할 수도 있음데이터에 salting 데이터를 붙여 암호화하여 공격자가 유추하기 힘들게 함
salt
를 만들어 패스워드 암호화salt
로 인해 같은 문자열로부터 서로 다른 암호화된 데이터 반환(길이 60으로 일정)salt
값 유지 가능 -> 사용자별 DB에 저장HTTP 통신 과정에서 전달하는 데이터에 양방향 암호화 추가
무상태(stateless)라서 서버가 클라이언트의 이전 상태 보존 X
-> 사용자의 로그인 여부 기억 못함
인증
되지 않아 정상적으로 요청을 처리할 수 없음접근 자격
이 없는 경우admin
등급의 리소스를 요청클라이언트 로컬
에 저장되는 데이터 파일
HTTP Header
에 쿠키를 포함시켜 응답
사용자 정보 파일을 서버 측에서 관리
HTTp Session id
로 구별Json 기반의 Access Token을 생성하는 인터네 표준 기술
비상태 프로토콜
헤더
, 내용(payload)
, 서명(signature)
로 구성
장점
- 데이터 위변조 방지
- 인증에 필요한 정보를 담고 있어서 저장소 없어도 됨
- 확장성 좋음
- DB 조회 필요없
단점
- 정보를 암호화하지 않음
- 민감한 정보를 담지 않음
- 상태를 관리하지 않음
- 공격자가 탈취했을 때 방지할 대책이 없다
- 유효기간 반드시 설
signature
부분의 값을 만드는데 사용될 알고리즘 지정json
형식으로 여러 정보가 담겨있음
Header
의 인코딩 값과 Payload
을 합친 후, secret key
로 해쉬해서 생성