전체 글

안녕하세요
스프링은 어떻게 이런 다양한 설정 형식을 지원하는 것일까? 그 중심에는 'BeanDefinition'이라는 추상화가 있다. 쉽게 이야기해서 '역할과 구현을 개념적으로 나눈 것'이다 XML을 읽어서 BeanDefinition을 만들면 된다. 자바 코드를 읽어서 BeanDefinition을 만들면 된다. 스프링 컨테이너는 자바 코드인지, XML인지 몰라도 된다. 오직 BeanDefinition만 알면 된다. 'BeanDefinition'을 빈 설정 메타정보라 한다. '@Bean', ''당 각각 하나씩 메타 정보가 생성된다. 스프링 컨테이너는 이 메타정보를 기반으로 스프링 빈을 생성한다. "코드 레벨로 조금 더 깊이 있게 들어가보자." 'AnnotationConfigApplicationContext'는 'An..
https://github.com/ParkPeom ParkPeom - Overview 백엔드 개발을 공부 중입니다. 깃허브 블로그 👍 https://parkpeom.github.io/#/ - ParkPeom github.com 제 깃허브 입니다. 지금부터라도.. 깃허브에 공부했던 소스코드들을 올리려고 합니다..
그냥 쿠키를 활용하는 방식이 아니라 세션을 통해서 로그인 가능하도록 만들어 보겠습니다. 이전과 가장 큰 차이점은 보안!! 입니다. 1. 세션 Session - Cookie, 보안에 취약한 너는 버린다 => Session 세션과 쿠키의 가장 큰 차이점은 아무래도 '보안' 에 집중된다. 쿠키는 기본적으로 위, 변조가 가능하기 때문에 잘못했을 경우 해커에게 쿠키값이 털려서 회원정보, admin 으로 로그인이라도하는 날에는 DB까지 전부 털리는 경우가 있기 때문이다. Session은 서버 - 클라이언트간 통신 시 쿠키의 취약점을 많이 줄 일 수 있다. 그렇다면 세션은 어떻게 동작할까? 아래 그림을 살펴보자 회원이 로그인 페이지에서 로그인을 시도한다. 로그인 정보가 POST 방식으로 서버에 전달된다. 서버는 전달..
로그인 기능을 사용하는 가장 기본적인 방법은 쿠키와 세션 2가지의 방법이 있습니다. 먼저 쿠키를 활용하여 로그인 하는 방법에 대해서 알아보고, 쿠키를 활용한 로그인 방식의 취약점도 알아보겠습니다. 1. 쿠키 Cookie - 서버가 '나' 를 기억해서 로그인하려면? 기본적으로 HTTP 는 무상태(Stateless) 프로토콜이다. 이때 클라이언트와 서버가 요청과 응답을 주고 받으면 연결이 끊어지며 클라이언트가 다시 요청하면 서버는 이전 요청을 기억하지 못하고, 서로 상태를 유지하지도 않는다. 그렇다면 기본적인 http 만을 사용해서 서버가 'parkpeom' 라는 클라이언트를 알고 응답할 수 있도록 하는 방법은 무엇일까? 바로 GET 방식으로 모든 요청과 링크에 사용자 정보를 포함해서 주는 것이다. 만약 쿠..
글 그림은 참고 스프링 부트 3 백엔드 개발자 되기 - 자바 편 를 참고하여 정리하였습니다. 이번 글에서는 스프링의 중요한 콘셉트인 IoC(제어의 역전), DI(의존성 주입), AOP(관점 지향 프로그래밍), PSA(이식 가능한 서비스 추상화)에 대해 알아보겠습니다. 이 글을 읽게 됨으로써 얻을 수 있는 지식은 아래와 같습니다. - IoC(제어의 역전)이 무엇인지 - DI(의존성 주입)이 무엇인지 - 스프링 컨테이너와 빈이 무엇인지 - AOP(관점 지향 프로그래밍)이 무엇인지 - PSA(이식 가능한 서비스 추상화)이 무엇인지 위 네 개념을 쉽게 이해하고 싶어하시는 분들에게 도움이 되고자 스프링 부트 3 백엔드 개발자 되기 - 자바 편의 일부 내용을 공개하기로 했습니다. 이 내용은 책의 2.2장을 거의 그..
Bean Validation 도메인 로직에서 값을 검증할 수 있게 도와주는 인터페이스이다. (참고:Java와 Spring의 Validaiton) 주요 어노테이션들은 아래와 같다. /** * 직접 검증을 하고 싶을 때 사용 */ @AssertTrue @AssertFalse /** * 문자열을 다룰 때 사용 */ @NotNull // null 불가능 @NotEmpty // null, 빈 문자열(스페이스 포함X) 불가 @NotBlank // null, 빈 문자열, 스페이스만 포함한 문자열 불가 @Size(min=?, max=?) // 최소 길이, 최대 길이 제한 @Null // null만 가능 ​ /** * 숫자를 다룰 때 사용 */ @Positive // 양수만 허용 @PositiveOrZero // 양수와..
스프링부트로 게시판 , 프로젝트를 해왔지만 이번에는 스프링 레거시로 게시판을 만들었습니다. 현재 까지 진행상황 입니다. JDK 1.8 , STS3 , 톰켓 , DBeaver 사용 기술 스텍 스프링 스프링 시큐리티 오라클 + MyBatis 연동 부트스트랩 제이쿼리 Ajax 기능 게시판 목록 기능 구현 , 게시글 수정 , 삭제 , 작성 게시글 조회수 게시판 페이징 게시판 검색 기능 게시판 댓글 목록 구현 부트스트랩 적용 회원가입 , 로그인 기능 구현 회원정보 수정 탈퇴 기능 구현 회원탈퇴 시 비밀번호 체크 회원가입 아이디 중복 체크 암호화 기능 추가 ( 회원가입 시 비밀번호를 암호화 해서 DB에 저장 ) 첨부파일 업로드 , 다운로드 게시판 조회수 기능 , 트랜잭션 설정 이글을 쓰면서 만들고 있는 기능 로그인..
스프링 메시지, 국제화(Message, Internationalization) -다양한 메시지를 한 곳에서 관리 - 메시지 - 국제화 - 메시지 소스 설정 - 메시지 소스 사용하기 메시지 화면에서 공통으로 사용되는 다양한 메시지를 한 곳에서 관리하는 기능을 메시지 기능 이라고 합니다. 만약, HTML에 하드코딩으로 문구가 적혀있는 경우 특정 문구가 변경되었을 때 해당 문구가 사용되는 모든 파일을 찾아 수정해주어야 합니다. 스프링에서는 다양한 메시지를 한 곳에서 관리하고 화면(View)에서 정의된 메시지를 사용할 수 있는 메시지 기능을 제공합니다. messages.properties 라는 메시지 관리용 파일을 만들고, HTML안에서 Key 값으로 해당 데이터를 불러올 수 있다. 쉽게, 여러 페이지에서 사용..
프로시저 사용 이유 PL/SQL은 Oracle 데이터베이스에서 사용하는 프로시저 언어로, SQL과 프로그래밍 언어의 기능을 결합한 것입니다. PL/SQL 프로시저는 복잡한 데이터베이스 작업을 캡슐화하고, 효율적으로 재사용할 수 있도록 도와줍니다. 기본 프로시저 구조 Oracle PL/SQL 프로시저의 기본 구조는 다음과 같습니다: CREATE OR REPLACE PROCEDURE procedure_name (parameter_list) IS -- 선언부: 변수, 상수, 커서 등을 선언 BEGIN -- 실행부: 실제 로직을 기술 (SQL 문, PL/SQL 문 등) -- 여기에 데이터베이스 작업을 수행하는 코드를 넣습니다. EXCEPTION -- 예외 처리부: 예외 처리 코드 END procedure_nam..
꾸준히개발하자
꾸준히