전체글 234

[JAVA] 제네릭 Generic

참고 블로그 : 데이터 형식에 의존하지 않고, 하나의 값이 여러 다른 데이터 타입들을 가질 수 있도록 하는 방법 클래스 내부에서 지정하는 것이 아닌 외부에서 사용자에 의해 지정되는 것 => 특정한 타입을 미리 지정해주는 것이 아닌 필요에 의해 지정할 수 있도록 하는 일반 타입. 장점 - 잘못된 타입이 들어올 수 있는 것을 컴파일 단계에서 방지 가능 - 클래스 외부에서 타입을 지정해주기 때문에 따로 타입을 체크하고 변환해줄 필요가 없다=> 관리하기 편함 ㅎ - 비슷한 기능을 지원하는 경우 코드의 재사용성이 높아진다. 사용방법 보통 사용하는 타입명. 암묵적인 규칙일 뿐 다른 걸로 써줘도 무방 클래스 및 인터페이스 선언 public class ClassName { ... } public Interface In..

[JAVA] Map, HashMap

Map? : 키와 값으로 구성된 Entry 객체를 저장하는 구조를 가진 자료구조 : Key 와 Value를 한 쌍으로 갖는 자료형 리스트나 배열처럼 순차적으로(sequential) 해당 요소 값을 구하지 않고 key를 통해 value를 얻는다. key와 value는 모두 객체. value는 중복저장 가능하지만 key는 중복 안됨. key value apple 사과 banana 바나나 HashMap put key와 value가 String 형태인 HashMap을 만들고 위에서 보았던 예제의 항목값들을 입력해 보자. import java.util.HashMap; public class Sample { public static void main(String[] args) { HashMap map = new H..

22.08.24 (화) 24일 차

오늘 한 것 Spring 심화 2주차 완강 강의내용 블로그 포스팅 알고리즘 1문제 풀기 개인과제 조금 건들여보기.. 오늘 배운 것 2022.08.23 - [알고리즘/JAVA] - [프로그래머스] 소수 만들기 2022.08.23 - [SPRING] - [SPRING] Spring Security - OAuth2.0 https://github.com/decaf-latte/springweek01-homework 내일 할 것 https://bcp0109.tistory.com/301 : JWT로 회원가입 로그인 구현 ->시도해보기->버전 다르다고...함..ㅎ 개인과제 - 로그인 ( Access Token, Refresh Token ) 개인과제 - 댓글 CRUD 개인과제 - jwt 고민해보기... 알고리즘 1문제 ..

🔔[항해99]/TIL 2022.08.24

[SPRING] Spring Security - OAuth2.0

: 인터넷 사용자들이 비밀번호를 제공하지 않고 다른 웹사이트 상의 자신들의 정보에 대해 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있는 공통적인 수단으로서 사용되는, 접근 위임을 위한 개방형 표준. 사용자가 애플리케이션에게 모든 권한을 넘기지 않고 사용자 대신 서비스를 이용할 수 있게 해주는 HTTP 기반의 보안 프로토콜. OAuth를 사용하는 서비스 제공자는 대표적으로 구글, 페이스북 등이 있습니다. 국내에는 대표적으로 네이버와 카카오가 있죠. : 로그인, 개인정보 관리 책임을 서드파티 애플리케이션 (Google, Facebook, Kakao 등)에게 위임할 수 있다. (단, 사용자가 기존에 서드파티 서비스에 회원가입이 되어있어야 함) 내가 만든 애플리케이션에서 사용자가 Kakao 로그인을 통해 ..

22.08.22 (월) 22일 차

오늘 한 것 채멘 특강 개념 흐름 정리하기 팀과제 질문/답변 + 키워드 질문/답변 Spring 심화 1주차 완강 Spring 심화 2주차 2-12 강의 내용 블로그에 포스팅 오늘 배운 것 1주차) 2022.08.22 - [SPRING] - [SPRING] 의존성 주입 DI , IoC 컨테이너 1주차) 2022.08.22 - [SPRING] - [SPRING] spring framwork의 이해 2주차) 2022.08.23 - [SPRING] - [SPRING] Spring Security - 쿠키 vs 세션 vs JWT + Token 2주차) 2022.08.23 - [SPRING] - [SPRING] Spring Security framework 2주차) 2022.08.23 - [SPRING] - [SP..

🔔[항해99]/TIL 2022.08.23

[SPRING] Spring Security - API 접근 권한 제어

EX) '일반 사용자'는 관리자 페이지에 접속이 인가되면 안됨! 1. 스프링 시큐리티에 "권한 (Authority)" 설정방법 회원 상세정보 (UserServiceImpl) 를 통해 "권한 (Authority)" 설정 가능 권한을 1개 이상 설정 가능 "권한 이름" 규칙 "ROLE_" 로 시작해야 함 예) "ADMIN" 권한 부여 → "ROLE_ADMIN" 스프링 시큐리티를 이용한 API 별 권한 제어 방법 Controller 에 "@Secured" 어노테이션으로 권한 설정 가능 @Secured("권한 이름") 선언 권한 1개 이상 설정 가능 "@Secured" 어노테이션 활성화 방법 (스프링부트 2.7이상도 동일)

[SPRING]Spring Security - 패스워드 암호화

❗ 회원 등록 시 '비밀번호'는 사용자가 입력한 문자 그대로 DB 에 안 된다!! '정보통신망법, 개인정보보호법' 에 의해 비밀번호는 암호화(Encryption)가 의무!! 회원가입시 Password 입력 -> 비밀번호 (암호화 알고리즘)-> 암호화 => DB에 저장 복호화가 불가능한 일반향 암호 알고리즘 사용 그럼 사용자가 로그인할 때는 암호화된 패스워드를 기억해야 할까? ⇒ 아닙니다. 사용자가 로그인을 위해 "아이디, 패스워드 (평문)" 입력 → 서버에 로그인 요청 서버에서 패스워드 (평문) 을 암호화 평문 → (암호화 알고리즘) → 암호문 DB 에 저장된 "아이디, 패스워드 (암호문)"과 일치 여부 확인 1. 암호화 알고리즘을 빈(Bean)으로 등록 security > WebSecurityConfi..

[SPRING] Spring Security framework

: Spring 기반의 애플리케이션의 보안(인증과 권한, 인가 등)을 담당하는 스프링 하위 프레임워크. 스프링 서버에 필요한 인증 및 인가를 위해 많은 기능을 제공해 줌으로써 개발의 수고를 덜어줌! Spring Security는 ' 인증'과 '권한'에 대한 부분을 Filter 흐름에 따라 처리한다. 더보기 ※ 인증 ? 해당 사용자가 본인이 맞는지를 확인하는 절차 인가 ? 인증된 사용자가 요청한 자원에 접근 가능한지를 결정하는 절차 ※ Principal (접근 주체) : 보호받는 Resource에 접근하는 대상 Credential (비밀번호) : Resource에 접근하는 대상의 비밀번호 Filter와 Interceptor는 실행되는 시점이 다름! Filter : Web Application에 등록 // ..

[SPRING] Spring Security - 쿠키 vs 세션 vs JWT + Token

미리 보면 좋은 유튜브 ! https://youtu.be/tosLBcAX1vk ※HTTP 특성 : Stateless / Connectionless = 한번의 요청/응답 시 모든 연결은 끊김. 상태도 종료됨 ❗ 쿠키와 세션 모두 HTTP 에 상태 정보를 유지(Stateful)하기 위해 사용 즉, 쿠키와 세션을 통해 서버에서는 클라이언트 별로 인증 및 인가를 할 수 있게 됨 ① 쿠키 Cookie - > 시스템을 옮기는 매개체/클라이언트와 서버 사이의 요청/응답에 더해지는 매개체 - > 클라이언트에 저장될 목적으로 생성한 작은 정보를 담은 파일 ② 세션 Session : 로그인 시 쿠키가 세션을 저장해서 계속 로그인된 상태인 것 처럼 보이게 요청/응답을 하는 것 -> 서버에서 일정시간동안 클라이언트 상태를 유..

[SPRING] spring framwork의 이해

The Spring Framework provides a comprehensive programming and configuration model for modern Java-based enterprise applications - on any kind of deployment platform. * 출처 : 스프링 공식 홈페이지 Enterprise applications 개발 편의성 제공 Enterprise applications? 기업용 애플리케이션?? 고객 대상 웹 서비스 ex) 구글, 네이버, 쿠팡 등 스프링은 결국 기업용 애플리케이션의 요구사항 해결에 초점을 맞춘 프레임워크 기업용 애플리케이션 특성 신뢰성이 중요 (ex. 병원에서 수술 시 환자 기록이 바뀐다면?) 서버의 안정성 유지 중요 (ex...

[SPRING] 의존성 주입 DI , IoC 컨테이너

강한 결합의 문제점 Controller 5 개가 각각 Service1 을 생성하여 사용 중 (각각 객체를 생성하여 사용중) Repository1 생성자 변경에 의해.. ⇒ 모든 Contoller 와 모든 Service 의 코드 변경이 필요 강한 결합 해결방법 = 느슨한 결합으로 만들어주기 각 객체에 대한 객체 생성은 딱 1번만!! 생성된 객체를 모든 곳에서 재사용!!! => 제어의 역전 (IoC : Inversion of Control) : 프로그램의 제어 흐름이 바뀜 일반적: 사용자가 자신이 필요한 객체를 생성해서 사용 IoC (제어의 역전) 용도에 맞게 필요한 객체를 그냥 가져다 사용 "DI (Dependency Injection)" 혹은 한국말로 "의존성 주입"이라고 부릅니다. 사용할 객체가 어떻게..

[CS] 절차적 프로그래밍 vs 객체지향 프로그래밍

: 초기 프로그래밍방식 / 순차적으로 나열 / 올인원컨트롤러 : 소프트웨어의 규모가 커지면서 필요가 부각 ->하나의 사물(객체)에 하나의 의미를 부여하는 것처럼 프로그래밍하게 됨. 하나의 역할에 하나의 객체를 맵핑 ex) 퀵메모 : 절차적 프로그래밍 주제별로 메모 : 객체지향 프로그래밍 => 추천 프로그래밍 : 처음엔 절차적 -> 객체지향 프로그래밍으로 리팩토링(기능상의 변경 없이 구조를 개선) ->하나의 파일에 너무 많은 코드가 들어가지 않게/ 역할별로 코드 분리, 코드를 좀 더 읽기 편하게!

🌏CS 2022.08.22

[SPRING] Controller, Service, Repository

어떤 것이든 개념을 알기 전에 왜? 부터 생각하는 것이 나중에 더 좋다는 걸 알았다. ❓Survlet 으로도 구현이 가능한데 왜 Controller를 쓸까? => 컨트롤러의 장점 : API 마다 파일을 만들 필요가 없음. => 보통 하나의 controller 안에 모든 api를 넣지는 않고 유사한 성격의 api를 하나의 controller로 관리. (함수 명도 마음대로 설정 가능 (클래스내 중복함수명은 불가)) ❓All in one Controller의 문제점? => 한 개의 클래스에 너무 많은 양의 코드가 존재 => 이해하기 어려움 - 현업에서는 코드 추가 또는 변경 요청이 계속 생김. 1. Controller의 역할 클라이언트의 요청을 받음 요청에 대한 처리는 서비스에게 전담 클라이언트에게 응답 2...

[SPRING] 입문주차 과제 - 출력 값 + 에러코드 만들어주기

=> "success" : true "data":[{ 조회 값 }] "error" : null =>"success" : true "data":[{ 작성한 것들 }] "error" : null 에러메세지 ^^,,,,, 여기까지 해놓고 다한 줄 알았음^^!!! 생각지도 못함 ㄴㅇㄱ 그러면 뭐다? 수정해줘야지 ^^ 야호!! - 출력 값을 모두 data로 감싸서 그안에 입력되어있음 + success :boolean + error : code/msg 가 따로 뜸! - success가 true일때 : 정상 출력, error : null false 일때 : 에러메세지만 출력 data : null 1차로 든 생각은 [Controller]에서 리턴 값들을 모두 바꿔주면 되겠다! 뭘로? =>Response Dto 를 따로..

22.08.18 (목) 18일 차

오늘 한 것 개인과제 제출하기 알고리즘 1문제 JAVA 개념 정리 (조금) SPRING 개념 정리 => JPA/MVC [개인과제] 또또 수정 .. -> 출력값 데이터로 감싸기 + success, error 값 뜨게하기 인텔리제이에서 커밋하지말고 되도록 소스트리에서 커밋&푸시하기.. 오늘 배운 것 멘붕 개인과제 제출 깃허브 2022.08.18 - [JAVA] - [JAVA] 기초 - 다시 정리하는 기본 개념 2022.08.18 - [SPRING] - [SPRING] JPA / ORM 2022.08.18 - [SPRING] - [SPRING] MVC 패턴 2022.08.18 - [알고리즘/JAVA] - [프로그래머스] 최소직사각형 DTO수정해서 data로 출력 값 감싸기 try, catch 사용해서 에러값 ..

🔔[항해99]/TIL 2022.08.19