Spring boot : 자바의 웹 프레임 워크
spring 프레임 워크 + 톰캣(내장 서버)
ㄴ 톰캣 : 클라이언트가 요청을 하면 맞는 자바 프로그램을 실행시킨다, 배포되는 jar파일에도 적용된다
대표적인 웹 브라우저 보안공격
SQL 인젝션 | SQL 주입공격 |
XSS | js 삽입공격 |
CSRF | 위조된 요청으로 공격 |
클릭재킹 | 의도하지 않는 클릭을 유도해서 공격 |
웹어플리케이션 -- WAS(software 플랫폼) -- 서버환경
Q. WAS가 필요한 이유?
웹 서버 : 정적콘텐츠(즉시 응답이 가능한 것들 : html 문서 등)를 제공한다
WAS : 데이터베이스 조회나 다양한 로직 처리가 필요한 동적 컨텐츠를 제공한다
기능을 나눠 서버부화를 방지한다
https://codechasseur.tistory.com/25
Q. type maven과 gradle의 차이점은 무엇일까?
- 스크립트 길이와 가독성 면에서 gradle이 우세하다.
- 빌드와 테스트 실행 결과 Gradle이 더 빠르다. gradle은 캐시를 사용하므로 테스트 반복 시 실행 결과 시간의 차이가 더 커진다
- 의존성이 늘어날 수록 스크립트 품질의 차이가 커진다.
Maven은 멀티 프로젝트에서 특정 설정을 다른 모듈에서 사용하려면 상속 받아야하지만, gradle은 설정 주입 방식을 사용하므로 멀티 프로젝트에 적합하다.
Q. gradle의 dependencies 종류는?
https://twinparadox.tistory.com/630
IP주소 : 컴퓨터 고유의 주소
포트 : 네트워크 서비스를 구분하는 번호; 기본값 8080
// 하나의 IP주소로 포트를 사용하여 많은 서비스 운용이 가능하다
// 로컬서버는 외부에서 접속할 수 없다
프로토콜 | 기능 | 포트번호 |
HTTP | 웹서비스 | 80 |
HTTPS | SSL을 적용한 웹서비스 | 443 |
FTP | 파일전송 서비스 | 21 |
SSH, SFTP | 보안이 강화된, TELNET과 FTP | 22 |
TELNET | 원격서버접속 서비스 | 23 |
SMTP | 메일전송 서비스 | 25 |
Q. HTTP와 HTTPS의 차이점은 뭘까?
HTTP 메시지는 일반 텍스트이므로, 권한이 없는 당사자가 인터넷을 통해 쉽게 액세스하고 읽을 수 있다.
반면, HTTPS는 모든 데이터를 암호화된 형태로 전송한다. 사용자가 민감한 데이터를 제출할 때 제3자가 네트워크를 통해 해당 데이터를 가로챌 수 없다
HTTP 오류 정리
대표) 404 (HTTP 오류) : 브라우저가 요청한 페이지를 찾을 수 없을 때
Q. TELNET은 왜 필요할까?
거리와 관계없이 쉽게 원격시스템에 접속할 수 있기 때문이다
e.g. 텔넷으로 스위치를 관리하게 되면, 스위치에 연결된 수백대의 컴퓨터를 ip, 맥 주소를 (원격으로)관리하기 용이해지기 때문에 텔넷을 사용한다. 내 pc로 직원들의 네트워크를 관리할 수 있게되고, 스위치 장비의 설정을 할 수 있으니 네트워크 관리가 용이해진다.
취약점 : 모든 데이터를 평문으로 전송하여 ID/Password, 실행한 명령어에 대한 정보가 노출된다
브라우저 요청처리
Get : 데이터를 URL에 노출시켜 요청한다. 주로 서버에서 데이터를 조회하거나 읽기 위한 HTTP 프로토콜로 데이터를 서버로 전송하는 주요방식Post : 데이터를 숨겨서 요청한다. 로그인정보와 같은 민감한 데이터를 제출 및 저장한다
어노테이션 정리어노테이션 : 자바의 클래스, 메소드, 변수 등에 정보를 부여하여 부가 동작을 할 수 있게 하는 목적으로 사용된다
@RequiredArgsConstructor 사용법 알기
https://velog.io/@gillog/Spring-Annotation-%EC%A0%95%EB%A6%AC
스프링부트의 라이브러리와 플러그인
Q. 플러그인이란?
내가 사용하고 있는 프로그램에 어떠한 기능을 더하는 기능
https://sharonprogress.tistory.com/193
Springboot Devtoolsㄴ서버를 재시작하지 않아도 클래스를 변경할때 서버가 자동으로 재가동하게 해준다lombok : Getter() Setter() 메서드, 생성자 등을 자동으로 만들어준다. 자바 클래스의 속성값을 읽거나 저장할 때 사용한다
프로젝트 이름 + application = 프로그램의 시작을 담당하는 파일이다application.properties = 프로젝트 환경을 설정(환경변수, DB설정)한다ㄴDB사용준비 및 jpa 환경설정build.gradle = 프로젝트에 필요한 플러그인 + 라이브러리Junit = 자바의 테스트 프레임워크
Controller : URL 매핑; 웹 요청과 응답처리
ㄴAPI를 모아놓은 클래스이며 창구역할을 한다
ㄴAPI 명세서에 따라 URL을 매핑한다 (Swagger 사용법)
Service : 내부에서 자바 로직 처리
Repository : DB나 파일 같은 외부 I/O 구현
Service의 존재이유 : service는 정보변동의 위험이 큰 로직을 처리한다. DB원본 정보의 손상을 막기 위함이다
Repository와 JPA : 주어진 jpa(java persistence api) 인터페이스 메소드로 CRUD(create, read, update, delete)가 가능하다
ㄴ이렇게 하기 위해선 JPA repository가 필요하다 ; <기본키, 기본키타입>
Spring은 jpa를 사용해 DB를 관리한다. jpa(인터페이스 모음;ORM 기술의 표준) 실제 구현한 클래스
: 하이버네이트(ORM의 프레임 워크)
Q. 그럼 하이버네이트가 DBMS인가?
NO
하이버네이트는 자바 기반의 객체-관계 매핑(ORM) 프레임워크로, 관계형 데이터베이스와 자바 객체 간의 매핑을 담당한다. 즉, 개발자가 객체 지향적인 방식으로 데이터를 다룰 수 있게 도와주는 도구이다
https://livenow14.tistory.com/70
ORM(object relational mapping) : 자바문법으로 DB를 다룰 수 있도록해준다
DB table : jaba class를 만들어서 관리한다
ORM의 자바클래스 = 엔티티 = DB table과 매핑되는 자바 클래스
DBMS (database management system) : 데이터베이스를 관리하는 소프트웨어
ㄴDB는 데이터를 담는 통, DBMS는 이 통을 관리하는 역할을 한다
H2 : 자바기반의 경량 DBMS
API : API는 프로그램과 프로그램 간 다리, 프로그램을 위한 인터페이스이다. 조금 더 자세하게 설명하자면 데이터를 주고 받기 위한 방법과 그 규격을 뜻한다
엔티티 클래스 : DB에 데이터를 저장하고 조회하는 클래스 ; 엔티티 클래스는 주로 데이터베이스의 테이블과 매핑되는 객체를 나타낸다
DTO 클래스 : DB로 조회한 데이터를 관리하기 위한 클래스 ; 주로 서비스 간에 데이터를 전송하기 위한 객체를 나타낸다
https://velog.io/@wbo1026/SpringBoot-%ED%8C%A8%ED%82%A4%EC%A7%80-%EA%B5%AC%EC%A1%B0
'Server > Spring & AWS' 카테고리의 다른 글
[CI/CD] Github Action, AWS로 자동 빌드 및 배포하기 (1) | 2024.08.20 |
---|---|
@PathVariable과 RequestParam 차이점 (0) | 2024.08.15 |
[Spring] MVC 구조 이해 - 함수와 람다식 (0) | 2024.08.12 |
[Spring] 스프링 MVC 구조이해 - 서블릿이란 (0) | 2024.08.02 |
[점프 투 스프링] 질문 및 요약정리 (2) (0) | 2024.03.05 |