본문 바로가기

개발 공부125

고수의 발자취를 따라서 - 계층형 게시판(8) 게시판 기능 구현 (2) 1. 프로젝트 생성 2. DB 연결 3. 로그인 Front Page 작성 4. 로그인 기능 구현 5. 게시판 Front Page 작성 6. 게시판 기능 구현 게시판 Front Page 작성 기능을 구현하기 전에 화면을 먼저 만들겠습니다. 게시글을 보는 페이지를 만들겠습니다. boardDetail.html 을 추가하겠습니다. boardDetail.html 타이틀 작성자 님이 작성일 작성한 글입니다. 게시글 본문 원글보기 답글달기 삭제 이제 페이지를 만들었으니 Controller를 수정하겠습니다. WebController.java package com.board.webserivce.web; import java.security.Principal; import java.util.Opt.. 2020. 3. 14.
고수의 발자취를 따라서 - 계층형 게시판(7) 게시판 기능 구현 (1) 1. 프로젝트 생성 2. DB 연결 3. 로그인 Front Page 작성 4. 로그인 기능 구현 5. 게시판 Front Page 작성 6. 게시판 기능 구현 계층형 게시판 계층형 게시판이 생소할 수도 있겠지만 의외로 주변에서 흔히 볼수있는 형식입니다. 대표적으로 답글을 다는 기능이 계층형이라고 생각하시면 됩니다. 이렇게 답글을 다는 형식을 많이 보셨을 겁니다. 오라클DB를 사용하면 CONNECT BY 와 START WITH 문법을 사용하면 비교적 간단하게 구현할 수 있습니다. 하지만 MYSQL에는 그런 기능이 없습니다. 대신 구현하는 방법이 몇가지 있었습니다. 1. 함수를 정의하는 방법 함수를 정의하는 방법은 구현이 복잡하다는 단점이 있습니다. 2. 테이블 구조를 이용하는 방법 .. 2020. 3. 13.
고수의 발자취를 따라서 - 계층형 게시판(6) 로그인 기능 구현 (2) 1. 프로젝트 생성 2. DB 연결 3. 로그인 Front Page 작성 4. 로그인 기능 구현 5. 게시판 Front Page 작성 6. 게시판 기능 구현 Spring Security(스프링 시큐리티) 회원가입, 로그인 / 로그아웃에 대한 간단한 구현이 끝났습니다. 여기서는 회원 탈퇴, 유저 정보 변경을 진행하도록 하겠습니다. 유저 정보 변경은 JPA의 Dirty checking을 이용해 구현하겠습니다. Dirty checking 더티 체킹(Dirty checking) 이란 상태 변경 검사입니다. JPA에서는 트랜잭션이 끝나는 시점에 최초 조회 상태와 비교해 변화가 있는 모든 엔티티 객체를 DB에 자동으로 반영해줍니다. JPA에서는 엔티티를 조회했을 때 조회 상태 그대로를 스냅.. 2020. 3. 10.
고수의 발자취를 따라서 - 계층형 게시판(5) 로그인 기능 구현 (1) 1. 프로젝트 생성 2. DB 연결 3. 로그인 Front Page 작성 4. 로그인 기능 구현 5. 게시판 Front Page 작성 6. 게시판 기능 구현 Spring Security(스프링 시큐리티) 아무래도 로그인 / 로그아웃의 기능에 대해서 생각해야 할 것들이 많습니다. 대표적으로 접근 주체(Principal) : 보호된 대상에 접근하는 유저 인증 (Authenticate) : 현재 유저가 누구인지 확인 (로그인) 인가 (Authorize) : 현재 유저가 어떤 서비스에 접근할 수 있는지에 대한 권한 검사 권한 : 애플리케이션의 동작을 수행할 수 있도록 허락되어있는지를 결정 간단한 예로 사용자 라는 권한 을 가진 유저는 관리자 권한을 가진 사람이 접근할 수 있는 서비스에는.. 2020. 3. 9.
고수의 발자취를 따라서 - 계층형 게시판(4) 로그인 페이지 기억보단 기록을 블로그를 참고하여 만들었습니다. 1. 프로젝트 생성 2. DB 연결 3. 로그인 Front Page 작성 4. 로그인 기능 구현 5. 게시판 Front Page 작성 6. 게시판 기능 구현 Thymeleaf 연결 DB 연결을 완료하였으니 이제 로그인 페이지를 만들겠습니다. 원래는 JSP를 사용하려고 했지만 스프링부트에서는 여러가지 제약조건이 있고, 권장하지는 않았습니다. 찾아보니 JSP, Freemarker, Velocity는 몇 년간 업데이트가 되지않고 있다고도 합니다. 스프링부트에서는 Thymeleaf(타임리프)라는 템플릿 엔진을 권장합니다. Handlebar라는 템플릿과 Thymeleaf 둘 중에 고민을 하던 중 스프링에서 밀어주고 있기 때문에 view 설정을 따로하지.. 2020. 2. 26.
고수의 발자취를 따라서 - 계층형 게시판(3) DB연결 기억보단 기록을 블로그를 참고하여 만들었습니다. 1. 프로젝트 생성 2. DB 연결 3. 로그인 Front Page 작성 4. 로그인 기능 구현 5. 게시판 Front Page 작성 6. 게시판 기능 구현 이제 2번째 단계인 프로젝트에 DB를 연결하겠습니다. DB연결을 하기전에 JPA 코드를 먼저 작성해보겠습니다. JPA에 대한 연습을 하기위해 블로그를 참조하며 작성하였습니다. webservice > domain > users 패키지를 생성하고, Users 클래스 UsersRepository 인터페이스 를 작성합니다. Users Class @NoArgsConstructor(access = AccessLevel.PROTECTED) @Getter @Entity public class Users { .. 2020. 2. 23.
고수의 발자취를 따라서 - 계층형 게시판(2) git hub에 저장하기 게시판을 만들고 있는 프로젝트를 Git Hub에 올리면서 스크린샷을 못찍어 간단히 폴더를 만들고 과정을 찍었습니다. 1. Git Init git에 대한 게시글은 다음에 기회가 되면 차근차근 정리하겠습니다. 여기서는 Git이 설치되어있다는 가정하에 진행합니다. 프로젝트 폴더를 마우스 우클릭으로 클릭하여 Git Bash Here 를 선택해 Git Bash를 폴더의 경로에서 실행합니다. Git Bash 화면입니다. git init 을 입력하고 엔터를 누릅니다. 2. Git Desktop 실행 저는 Git Desktop 을 주로 사용합니다. 여기서도 역시 Git Desktop 을 사용하겠습니다. Git Desktop 을 실행하고 file -> Add local Repository 를 클.. 2020. 2. 19.
고수의 발자취를 따라서 - 계층형 게시판(1) 계획 세우기 막연하게 프로젝트를 진행하기보다는 나름의 계획을 세우고 차근차근 진행하는게 좀 더 수월할 것 같습니다. 저같은 경우는 큰 틀을 미리 정해두고 시작하는 편입니다. 큰 틀을 생각해보자면 1. 프로젝트 생성 2. DB 연결 3. 로그인 Front Page 작성 4. 로그인 기능 구현 5. 게시판 Front Page 작성 6. 게시판 기능 구현 이정도가 될 것 같습니다. 세세한 내용은 진행하면서 추가하도록 하겠습니다. 프로젝트 생성 가장 먼저 프로젝트를 생성해보겠습니다. 기억보단 기록을 블로그를 참고하여 만들었습니다. sts 첫 화면입니다. workspace는 편하신 폴더를 선택하시면 될 것 같습니다. 빨간 테두리에 있는 Create new Spring Starter Project 를 클릭합니다. .. 2020. 2. 19.
STS 설치하기 STS 설치 원래 Java와 IDE에 대한 설치는 넘어가려고 했지만 오랜만에 STS를 설치하려고 하니 예전과 좀 달라져서 STS 설치를 정리해보려고 합니다. 먼저 STS 설치를 위해 아래의 홈페이지로 이동합니다. https://spring.io/tools 자신에게 맞는 OS용 버전을 클릭하여 설치합니다. 압축풀기 처음 당황한 부분이 바로 이 부분인데… 갑자기 jar파일로 다운받아 지길래 당황했습니다..ㅎ 다운받아진 jar파일의 압축을 풀어주면 위의 사진과 같이 나오는데 빨간 테두리의 zip파일을 한번 더 압축해제합니다. 실행 압축을 해제하시면 sts-4.5.1.RELEASE 라는 파일이 생겼을 겁니다. (현재 시점 기준이기때문에 파일명은 바뀔 수 있습니다.) 사진에 보이는 SpringToolsSuite파.. 2020. 2. 19.
스택(Stack) 구현하기 - 자바(Java) 스택(Stack) 구현하기 이번에는 앞서 설명한 Stack을 구현해보도록 하겠습니다. 구현에 앞서 필요한 기능들을 정리하자면 1. push 스택의 맨 뒤에 Data를 추가합니다. 2. pop 스택에서 Data를 추출합니다. 스택은 LIFO(Last In First Out)의 형태이기 때문에 스택에서 제일 마지막 Data를 꺼내오게됩니다. 3. peek 스택의 마지막 데이터를 보여줍니다. 단순히 스택의 마지막 데이터를 보여주기때문에 스택의 값에는 변함이 없습니다. 구현 List를 이용해 Stack을 구현하겠습니다. import java.util.ArrayList; public class StackPractice { public static void main(String[] args) { Stack stac.. 2020. 2. 19.
고수의 발자취를 따라서 - 계층형 게시판(0) 고수의 발자취를 따라서 개발 고수분들을 동경하고, 갈망하던 중 문득 그분들의 발자취를 따라가보자 는 생각이 들었습니다. 앞으로 한발 한발 나아가도록 하겠습니다. 이번에 진행할 내용은 1일 1커밋 한달 회고 에서 잠시 설명드렸던 선배 개발자 님의 블로그에 있는 포스트 중 한 부분에 있는 내용입니다. 자세한 내용은 기억보단 기록을 에서… 계층형 게시판 계층형 게시판 구현입니다. 혹시라도 문제가 생긴다면 삭제하겠습니다..ㅠ 출처 : https://jojoldu.tistory.com/ 앞으로 위의 조건에 맞게 게시판을 구현해보겠습니다. 다음 포스트부터 차근차근 진행하도록하겠습니다. 2020. 2. 14.
큐(Queue) Java로 구현하기 큐(Queue) 구현하기 이번에는 앞서 설명한 Queue를 구현해보도록 하겠습니다. 구현에 앞서 필요한 기능들을 정리하자면 1. enqueue 큐에 데이터를 삽입합니다. 2. dequeue 큐의 맨 앞에 있는 데이터를 꺼내옵니다. 꺼내온 뒤에는 큐에서 제거합니다. 3. peek 큐의 맨 앞에 있는 데이터가 뭔지 확인합니다. 4. isEmpty 큐가 비어있는지 확인합니다. 구현하기 여기서는 Java의 List를 사용해 구현하도록 하겠습니다. import java.util.ArrayList; public class QuerePractice { public static void main(String[] args) { Queue queue = new Queue(); // 데이터 넣기 queue.enqueue(1.. 2020. 2. 12.