본문 바로가기

클론코딩14

LMS Web 클론코딩 13 (이미지 업로드) 2024/02/04 이제 게시글에 이미지를 업로드하는 기능을 추가할 것이다. 이미지 업로드는 db에 이미지 원본을 넣어 저장을 하는 것이 아니라 이미지 데이터의 정보를 저장하고, 프로젝트에서 이미지를 필요로 할 때 DB에 저장된 이미지 데이터 정보(path, name, size 등)를 통해 가져온다. local서버에 이미지를 저장하는 방법도 있고, 다른 서버를 대여하여 올리는 방법도 있다. 대표적으로는 aws의 s3를 많이 사용한다. 일단 나는 이미지 업로드 기능 자체를 구현하는것이 목표였기에, 내 local에 이미지를 저장하는 방법으로 진행했다. 1. PostFile 도메인 생성, db table 생성하기 package com.example.myapp.domain; import lombok.Getter.. 2024. 2. 7.
LMS Web 클론코딩 12 (검색기능 구현, Date 나타내기) 2024/2/2 검색기능을 구현하기 위해 어떻게 구현할지에 대해서 생각을 먼저 해보았다. 일단 두 가지 방법을 생각해 봤는데 첫 번째는 검색어를 입력하면 화면 전체를 다시 불러와서 해당 검색어가 있는 post-list를 course페이지에서 보여주는 것이고, 두 번째는 ajax를 이용하여 비동기 방식으로 처리하여 바로 post-list를 보여주는 방법이다. 첫 번째 방법이 좀 더 쉬울 것 같아 일단 첫 번째 방법을 선택했다. 검색기능구현 1. Course 페이지 Search form action으로 감싸주어 search 버튼을 눌렀을 때, get요청이 lms/search-posts로 요청되도록 구현한다. 2. PostController @GetMapping("lms/search-posts") public.. 2024. 2. 2.
LMS Web 클론코딩 11 (이전, 다음 페이지 이동 버튼 구현) 2024.01.30 오늘은 글 상세 보기 페이지에서 다음 글로 넘어가는 버튼과 전 글로 넘어가는 버튼을 구현하는 방법을 알아보자. 다음, 이전 글이 있다면 버튼이 활성화되어있고 없다면 비활성화되도록 구현할 것이다. 1. 먼저 html에서 Prev 버튼과 Next버튼을 만들어준다. Next > Prev버튼과 Next버튼 각각 활성화 된 모습과 비활성화된 모습을 만들어 준다. 2. Service를 만들어준다. 나의 경우엔 PostService에서 post관련 service를 관리한다. private final PostRepository postRepository; @Autowired public PostService(PostRepository postRepository).. 2024. 1. 30.
LMS Web 클론코딩 10 (JDBC Template로 CRUD 구현하기 2) 2024.01.28 오늘은 수정기능을 추가했으며, 또 수정하기 페이지로 넘어갈 시 기존 데이터(제목, 내용)가 담겨있도록 구현을 했다. mapping 할 때 경로설정에서 자꾸 애를 먹어서 시간이 꽤 많이 들었다. 결국 이렇게 해줬는데 최선의 방법인지는 아직 잘 모르겠다. controller @PostMapping("/lms/editPost") public String editSavePost(@RequestParam Long id, @RequestParam String title, @RequestParam String content) { 일단 CRUD 기능은 완성했으니, 빠르게 수정하기 페이지 front 수정 후 검색 기능, 파일 업로드까지 구현할 예정이다. 또 이전에 배포도 간단하게 테스트 해보면 좋을 .. 2024. 1. 28.
LMS Web 클론코딩 9 (JDBC Template로 CRUD 구현하기 1) 2024.01.26 오늘은 JDBC Template로 Create, Read 그리고 Delete를 구현했다. 먼저 JDBC로 구현 후 jpa로 구현할 예정이다. 아직은 style을 모두 입히지 않긴했지만, course페이지에서 제목을 누르면 아래와 같이 post/{id}로 페이지가 생성된다. 이 부분은 다음과 같이 설정할 수 있다. Title 일단 DB테이블에 저장되는 값은 id, content, title, date이다. 1차로 수정할 점은 date를 포맷에 맞춰 화면에 나오도록 하고, 사용자 정보를 추가하는 것이다. 한동안 계속 안되다가 오늘 시간을 많이 쓴만큼 기능이 동작했을 때 정말 기뻤다. 초반 이 부분만 잘 넘어가면 다른 기능 같은 경우는 금방 구현할 것이라고 생각하여 집중해서 빠르게 ver1.. 2024. 1. 26.
LMS Web 클론코딩 8 (Spring Dependency, 난관해결방법) 2024.01.25 이번 프로젝트는 Spring Boot가 아닌 Spring으로 진행을 한다. Spring에서 좀 더 편리하게 Spring Boot가 나왔기 때문에 Spring을 제대로 다룰 줄만 안다면 Spring Boot는 어려움 없이 배울 수 있다고 생각해서이다. 물론 Spring의 경우 Boot와 다르게 dependeny버전 설정 등 번거로운 부분이 있지만 오히려 번거로운 과정 속에 배움이 있다고 생각하며 Spring으로 진행 중이다. 1. 첫 번째 난관 (JPA dependency가 추가가 안됨) 나는 바로 JPA를 이용하여 db에 접근하려고 했다. 당연히 jpa를 사용하려면 build.gradle(나는 gradle을 사용하기 때문에)에 jpa dependency를 추가해줘야 한다. 처음엔 이렇.. 2024. 1. 25.
LMS Web 클론코딩 7 (ERD 설계, 도메인 테이블 설계) 2024/01/19 오늘은 ERD(Entity Relationship Diagram) 설계, 도메인 테이블 설계라고도 불리는 것을 해봤다. 내가 생각했을 때 ERD설계를 하는 이유는 다음과 같다. 여러 데이터가 있는 모든 서비스는 데이터(객체) 간의 관계가 있을 것이고 이 관계를 미리 설계하지 않고 개발을 한다면 개발 속도가 느려지고 문제가 생기면 어디서 문제가 생겼는지 확인하기가 어려울 것이다. 물론 작은 서비스라면 큰 문제가 없을 수도 있겠지만 서비스가 커지고 유지보수까지 본다면 ERD설계는 중요하다고 생각된다. 그래서 어떻게 할까? 막상 하려니 머리속으로 생각했던 테이블을 어떻게 나누고 어떤 데이터들이 필요하고 어느 데이터 간의 관계가 있는지 정확히 모르고 있었다는 것을 깨달았다. 그래서 일단 종이.. 2024. 1. 19.
LMS Web 클론코딩 7 (Spring 입문 강의 완강) 2024/01/18 어제부터 시작해 오늘까지는 강의를 듣는데 시간을 많이 썼다. 일단 스프링 입문 강의를 통해 기본적인 동작 원리를 이해하고 이후에 필요한 개념을 보충해 나가는 형식으로 공부하기 위해서이다. 강의 내용 중 테스트 케이스 작성과 AOP부분은 이후 다시 집중해서 봐야 할 것 같다. JPA에 대해서 잘 모르고 있었는데 JDBC -> JDBC template -> JPA -> Spring Data JPA 의 모든 과정을 보여주어 이 부분에 대해서 잘 이해가 되었고 이번 클론코딩 개발과정에서는 JDBC template와 JPA를 이용해 개발할 것이다. 일단 이번 LMS 클론 코딩은 Spring - JDBC template/JPA - Mysql - thymeleaf를 이용하여 개발할 예정이다. 내일.. 2024. 1. 18.
LMS Web 클론코딩 6 (Spring + Thymeleaf 2) 2024/1/17 오늘은 기존에 만들었던 LMS 클론코딩 페이지를 모두 Thymeleaf에서 실행될 수 있도록 설정을 완료했다. thymeleaf는 다른 파일 link를 걸어주는 방식이 html과는 약간 달라서 이 부분을 수정해 줬다. 또 지금 인코딩 방식이 EUC-KR로 되어있었어서 기존 파일을 가져올 때 글자가 깨지는 현상이 발생했다. UTF-8로 재설정해주었다. 현재 Front 폴더 구조는 다음과 같다. 페이지별로 이동하는 것과 페이지 안에 데이터를 위한 model, controller 설정은 아직 구현하지 않았다. 이제 Spring 공부(김영한 강의)와 erd 설계를 시작해야 할 것 같다. 2024. 1. 17.