처음 웹서버에 프로그램을 붙여 동적인 페이지를 만드는 프로그램

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로 해쉬해서 생성