자바

    [Spring] 🔒스프링 시큐리티 (Spring Security)

    파이널 프로젝트에서 스프링 시큐리티를 이용하여 로그인 로그아웃과 같은 계정 관리 기능을 맡았다! (+ 회원가입! ) 프로젝트에서 회원가입과 로그인, 게시판이 비교적 배우고 시작하기 때문에 쉽다고 하는데, 지난 세미 프로젝트 때 다른 팀원이 헤매던 것도 봤고, 다른 팀에서 이메일 인증 같은 기능 구현을 한 것을 보면서 '로그인/회원가입 한번 해보고 싶다 !' 생각해서 맡게 되었다. 지난 세미 때 기본적인 기능보다 결제API를 이용한 상품 주문을 구현했기 때문에 오히려 기본으로 돌아가 내가 로그인/회원가입을 제대로 구현할 수 있는지 확인해봐야겠다고 느꼈다. 다행히도 지난 Servlet에서 하던 방식 그대로 진행하는 게 아니라, 스프링 시큐리티를 이용하여 인증과 인가에 대해 더 다양한 옵션으로 로그인 기능을 ..

    [Java] java와 객체지향 프로그래밍

    1. 자바 언어와 자바 프로그램 1) Java 언어의 기원 Sun Microsusytems의 제임스 고슬링 1995년 Java와 HotJava 발표 → 웹의 확산과 함께 주목을 받음 1996년 1월 JDK 1.0 발표 (java development kit) → 2021년 9월 Java SE 17버전이 가장 최신 버전으로 급속도로 발전됨 2009년 Oracle이 Sun을 인수함 2) Java 언어의 특징 C/C++ 언어와 유사하나 단순함 플랫폼에 독립적 완전한 객체지향 언어 웹 또는 네트워크 프로그래밍이 용이 엄격한 자료형의 검사 예워 처리 기능 제공 멀티 쓰레딩 지원 3) Java 프로그램의 실행 java 소스 프로그램의 확장자는 .java 바이트 코드 java 소스를 컴파일한 결과물 확장자는 .cla..

    [Java] 컬렉션 개념 복습

    컬렉션 ? 컬렉션 이란 여러 개의 다양한 데이터들을 쉽고 효과적으로 처리할 수 있도록 표준화 된 방법을 제공하는 클래스들의 집합 데이터를 효율적으로 저장하는 자료구조 와 데이터를 처리하는 알고리즘 이 미리 구현되어 있음 Java.util 패키지에 포함 1. LIST List 인터페이스의 특징에 대해 이해하고 설명할 수 있다. List는 저장 순서가 유지되고 중복 저장을 허용한다. List 인터페이스 계열의 자료구조를 이해하고 설명할 수 있다. ArrayList, LinkedList, Vector, Stack이 있다. ArrayList의 사용 목적에 대해 이해할 수 있다. 가장 많이 사용되는 컬렉션 리스트이다. ArrayList는 배열의 단점을 보완하기 위해 만들어졌다. 배열은 크기를 변경할 수 없고, 요..

    [Java] 제네릭 개념 복습

    제네릭스가 무엇인지 이해하고 설명할 수 있다. 제네릭이란 데이터의 타입을 일반화 한다는 것을 의미한다. 다이아몬드 연산자를 사용하며, 의 T는 타입 변수를 뜻한다. 클래스나 메소드에서 사용할 내부 데이터 타입을 컴파일 시에 지정하는 방법을 말한다. 제네릭스 사용의 목적 혹은 장점에 대해 이해하고 설명할 수 있다. 제네릭을 활용하면 타입 변환 및 타입 검사에 들어가는 코드 생략이 가능하다. 컴파일 시에 미리 타입 검사를 시행하기 때문에 클래스나 애부에서 사용되는 객체의 타입 안정성이 높다. 제네릭스가 적용된 클래스에 타입변수를 지정하여 인스턴스를 생성할 수 있다. /* 타입을 Integer로 인스턴스를 생성하는 경우 */ GenericTest gt1 = new GenericTest(); /* JDK 7부터..

    [Java] API 개념 복습

    toString() 메소드 오버라이딩 목적을 이해하고 개발에 적용할 수 있다. java.lang.Object 클래스의 toString() 메소드는 인스턴스가 생성될 때 사용한 full class name과 @ 그리고 16진수 해쉬코드가 문자열로 반환된다. 16진수 해쉬코드는 인스턴스의 주소를 가키리는 값으로 인스턴스마다 모두 다르게 반환된다. Book book1 = new Book(1, "홍길동전", "허균", 50000); System.out.println("book1.toString() : " + book1.toString()); toString() 메소드로 출력한 결과 book1.toString() : com.greedy.section01.object.book.Book@77cf73f0 레퍼런스 변수..

    [Java] 다형성 개념 복습 / 추상클래스와 인터페이스

    다형성의 개념에 대해 설명할 수 있다. 하나의 인스턴스가 여러 타입을 가질 수 있는 것. 상속을 기반으로한 기술이다. 다형성의 장단점을 설명할 수 있다. 같은 동작을 하는 메소드를 새로운 객체가 생길때 마다 작성하지 않아도 된다. 여러 타입의 객체를 하나의 타입으로 관리할 수 있으므로 유지보수가 쉽고 결합도가 낮으며 확장성이 좋다. 동적 바인딩에 대해 설명할 수 있다. 컴파일 당시에는 해당 타입의 메소드와 정적으로 연결되어 있다가 런타입 당시 (실행시) 실제 객체가 가진 오버라이딩 된 메소드로 바인딩이 바뀌어 동적으로 동작하는 것을 의미한다. 동적바인딩은 상속 관계로 이루어져 메소드 오버라이딩이 되어 있어야 한다. 하나의 메소드 호출로 각기 다른 객체의 다른 메소드를 동작시키는 것. Parent p = ..

    [Java] 상속 개념 복습

    클래스 상속에 대한 개념을 설명할 수 있다. 부모 클래스가 가지는 멤버를 자식클래스가 물려받아 자신의 멤버인 것척럼 사용할 수 있도록 만든 기술 자바는 단일 상속을 지원한다. (모호성을 제거) 클래스 간의 상속 시에는 extends 키워드 사용 상속의 목적을 설명할 수 있다. 부모 클래스의 기능을 자식클래스에서 상속받아 코드를 재사용하는 것. 자식클래스는 부모 클래스가 가진 메소드를 사용할 수 있다. (private 멤버는 접근 불가) 상속의 장단점을 설명할 수 있다. 장점 새로운 클래스 작성 시 부모 클래스에서 작성된 코드를 이어받아 새로 작성하지 않아도 됨. 클래스의 재사용 클래스간 계층관계과 형성되어 다형성의 문법의 토대가 된다. 단점 부모클래스가 변경될 때 자식클래스에서 정상적인 동작을 할지 예측..

    [Java] 객체 배열 개념 복습

    객체 배열의 사용 목적과 구조를 이해하여 객체 배열을 생성하고 개발에 활용할 수 있다. 객체 배열은 레퍼런스 변수에 대한 배열이다. 생성한 인스턴스를 배열을 이용해서 관리하면 동일한 타입의 여러 개 인스턴스를 각각 취급하지 않고 연속 처리할 수 있어 유용하다. 또한 반환값은 1개의 값만 반환할 수 있기때문에 동일한 타입의 여러 인스턴스를 반환해야 하는 경우 객체 배열을 사용할 수 있다. Car 라는 클래스 타입의 객체를 car1 car2 각각의 객체로 생성했을 때 동일한 기능을 수행할 때 모든 객체를 일일히 동작해줘야 한다. car1.start(); car2.start(); .. 이러한 Car타입의 객체를 배열에 담으면 for문을 이용해 하나씩 접근하여 동일한 메소드를 처리할 수 있다. //향상된 for..

    [Java] 클래스와 객체 개념 복습

    기초적인 자바 학습이 끝났다. 그동안의 학습성취도를 평가하기 위해 학습진도표를 문제삼아 다시한번 개념정리를 하는 주간을 갖기로 했다. 반복문까지 파트는 건너뛰고, 난이도가 높아진 클래스와 객체 파트부터 차근차근 배운 내용을 정리하고 2주간 학습점검을 하기로 했다. 오늘 작성한 부분에서 막힌 개념은 포스팅 하단부분에 다시 작성하는 방식으로 한다. 사용자 정의의 자료형을 이해할 수 있다. 클래스는 서로 다른 자료형의 데이터를 사용자(개발자) 정의로 하나로 묶어 새로운 타입을 정의할 수 있다. 배열과 달리 다른 자료형들의 값을 하나로 묶을 수 있다. 클래스와 인스턴스의 차이를 이해하고 설명할 수 있다. 클래스는 객체를 만들어 내기 위한 설계도 혹은 틀이며 객체는 소프트웨어 세계에서 구현하는 대상이며, 클래스의..