간단한 CRUD기능을 구현한 커뮤니티에 필요한 기능을 하나씩 추가해보려고 한다. 첫번째는 한번도 건드려본적이 없던 스프링 시큐리티를 이용해 회원가입과 로그인을 구현해보려고 한다. Spring Security 간단설명 스프링 시큐리티 인증/인가 포스트 Spring Security는 스프링 기반의 애플리케이션에서 인증과 권한을 통해 접근을 제어하는 프레임워크라고 하는데 대략 어디에 어떻게 쓰는지 간단하게 공부한 내용을 정리하고 간다. 보통 스프링을 처음 접하면 아래와 같이 클라이언트와 소통한다고 생각한다. 하지만 실제로 클라이언트와 실질적인 소통을 하는 것 서블렛 컨테이너(톰캣서버)이고 서블렛 컨테이너를 거쳐 스프링 디스패쳐 서블렛이 받으면 그때 스프링 공부할 때 배웠던 핸들러 맵핑, 핸들러 어댑터를 통해서..
새롭게 생각난 약간의 아이디어와 백엔드 기초를 버무려 보려고 프로젝트를 시작하기전에 프로젝트 명세서를 작성합니다. 1. 프로젝트 주제 인터넷의 익명성이 주는 단점 중에 하나는 남이 쓴 부정적인 글에 상처를 받을 수 있다는 점이라고 생각했고, 기본적인 CRUD 기능을 가진 커뮤니티에 댓글 작성 시 글의 내용을 네이버 감정분석 API를 이용해 긍정, 중립, 부정 태그를 매겨 사용자가 원하는 감정범위의 댓글을 볼 수 있는 댓글감정 필터링 서비스를 추가해 구현한다. 2. 개요 프로젝트명 : Emotion Community 개발 인원 : 1명 개발 기간 : 2022.12.26 ~ 2023.1.27, 추가적으로 리팩터링 진행 예정 주요 기능 : 게시판 - CRUD, 페이징 처리, 검색 사용자 - 회원가입, 로그인,..
모각코 하게 된 이유? 우테코 프리코스 끝나고 아직 자바의 기초와 클린코드가 부족하다고 생각해서 우테코 프리코스 슬랙에서 대전지역 모각코 스터디에 들어감. 일단은 코테 발표를 기다리면서 2주정도 할 것 같은데 그 이후에 일정은 잘모르겠지만 학교를 벗어나 대전에서 개발하는 사람 찾는 건 유니콘 같은 느낌이였는데 처음 만나봐서 신기했음. 배울 것도 매우 많음. 1주차 간단하게 목표 설정, 매주 주말 이틀 나와서 토요일엔 5시간 동안 우테코 전 기수들 문제 랜덤하게 골라서 풀고, 일요일엔 서로 코드리뷰 및 리팩터링하는 시간을 갖기로 함 2주차 첫 날 랜덤하게 문제를 골랐는데 우테코 자판기 미션이 걸렸다. getter 안쓰기에만 용쓰다 너무 코드 짤 때도 답답했고 애플리케이션 거의 다 만들고 나서 기초 로직이 ..
스트림 사용 3단계 스트림 생성 배열이나 컬렉션의 요소들을 처리하려면 가장 먼저 요소들을 갖는 스트림을 생성해야 한다. 중개 연산 중개 연산은 스트림을 받아서 스트림을 반환한다 데이터를 추출, 변환, 조합하는 작업 등을 수행 할 수 있고 여러개의 중개연산은 지정할 수 있다. 최종 연산 결과를 산출하기 위한 최종 연산을 수행한다. 이떄 중개 연산에서 미뤘던 지연연산을 수행한다. 최종연산 이후로 스트림은 자동소멸하여 더는 사용할 수 없다. 스트림 특징 명령행 프로그래밍 방식 int[] num = {1,2,3,4,5}; int sum= 0; for(int i=0;in%2==1).sum(); 파이프 필터 패턴 입력 : Arrays.stream(num) 필터링 : filter(람다식) 출력 : sum() 이처럼 ..
제너릭 클래스 클래스 선언부에서 클래스 이름 다음에 기호를 표시한다. 그리고 안에는 타입 매개변수의 이름을 저근다. 제네릭 클래스의 인스턴스를 생설할 때 타입 매개변수는 인자로 전달받은 타입으로 대채된다. 제너릭 클래스 선언 public class Bag{ T thing; public Bag(T thing){ this.thing = thing; } } 제너릭 클래스 생성 new Bag(new Book()); new Bag(new Book()); 제너릭 클래스를 사용하면 인스턴스 생성 시 타입을 지정할 수 있으므로 동적으로 코드를 재사용 할수 있는 장점이 있다. 제너릭 클래스 참조 제너릭 클래스의 인스턴스를 생성한 후 참조하는 변수가 있어야 계속 사용할 수 있다. 제너릭 인스턴스의 참조변수 타입을 선언하는..
입출력 원리 외붕 데이터는 프로그램 외부에 존재하는 모든 데이터를 의미. 하드디스크 상에 있는 파일, 네트워크 상에 존재하는 자원, 메로리에 있는 자원이 될 수도 있음. 외부 데이터 타입이 무엇이든 자바는 외부 데이터를 읽거나 쓰기 작업을 할 때 동일하게 처리. 입출력 API java.io 패키지에 있으며 객체이름에서 InputStream, Reader, OutputStream, Writer 단어를 빼고 남은 단어가 외부 데이터 타입 InputStream, OutputStream 계열은 1바이트 단위로 Reader 와 Writer 계열은 2바이트 단위로 작업 모든 스트림은 단방향이므로 읽거나 출력하는 기능 중 하나만 처리 할 수 있음 기본 입출력 작업 파일 입출력 try{ FileInputStream f..
자바 예외 API 오류 처리를 개체로 처리하며 관련 API를 JaVA SE에서 제공, 기본적인 오류 처리 객체들은 java.lang 패키지의 Exception과 Error로 구분됨 예외처리 객체 구조 java.lang의 Throwable이 최상위 클래스 Exception은 프로그램 내에서 발생하는 예외로서 프로그램 내에서 처리가능 Error는 JVM 내에서 발생하는 에러로서 프로그램 내에서 처리 불가능 예외 발생 원리 int arr[] = new int[3]; arr[3] = 30; System.out.println("OK"); 0~2 index까지 저장할 수 있는 배열에 인덱스 3번지를 찾아가지만 존재하지 않음 => ArrayIndexOutOfBoundsException() 예외 처리 방법 try{ /..