본문 바로가기

LMS8

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 클론코딩 4 (Nav bar 디테일 수정, 로그인 페이지 그리기) 2024/1/15 오늘은 어제 만든 Nav Bar의 UI 디테일을 수정하고, 각각의 버튼을 눌렀을 때 서로 페이지간 이동을 할 수 있도록 구현했다. 또 로그인 페이지도 그렸다. 페이지의 디테일은 일단 이 정도로 구현하고 이후에 수정할 예정이다.(아이콘, 폰트 등) 이로써 초반 설계했던 mvp 기능을 위한 사용자 페이지는 모두 완성되었다.(dashboard, course, write, login) 이제 spring 공부와 html, css, js로 만든 페이지를 spring - thymeleaf 환경으로 연동하는 작업을 할 것이다. 아마 이 이후 erd 설계를 할 것 같다. 2024. 1. 15.
LMS Web 클론코딩 3 (Nav bar만들기, Markdown form 넣기) 2024/1/15 Front page를 먼저 그려놓고 이후 백엔드를 공부하고 연결하는 게 좋을 것 같다고 생각되어 3-4일은 Front에만 집중하려고 한다. html, css, js 그리고 일정 부분은 bootstrap을 사용했다. 모든 버튼에 대한 이벤트는 구현하지 않았고, 필요한 버튼만 클릭하면 다음 동작을 수행하도록만 구현해 놓았다. 사이드바를 누르면 아이콘 배경색이 변하고, Nav bar가 나온다. Nav bar안에는 수강 강의 목록이 나오고 강의 목록을 선택하면 Qna게시판으로 이동한다. +Write버튼을 누르면 Write a post 페이지로 넘어간다. 제목, 내용 그리고 파일 첨부가 가능하며 내용을 넣는 폼은 js의 마크다운 에디터인 SimpleMDE를 사용했다. 2024. 1. 15.
LMS Web 클론코딩 2 (대쉬보드 페이지 그리기) 2024/01/13 어제 설계한 것을 바탕으로 일단은 먼저 프론트 페이지를 빠르게 만들어 놓고 기능 구현을 하면 좋겠다는 생각이 들어 오늘은 무작정 첫 화면을 그리기 시작했다. 총 소요시간은 3시간 30분 정도 걸린 것 같다. 처음엔 금방 그려낼 수 있다는 생각이었는데 클론 코딩을 해본 적이 없어 디테일을 잡는 부분이 꽤나 어려웠고 애초에 html.css를 다룬 지 오래되어 초반에 조금 시간이 걸렸었다. 그래도 따라서하다 보니 금방 감을 잡고 한 것 같고 나머지 페이지들도 집중해서 한다면 금방 만들 수 있겠다는 자신감이 생겼다. 일단 오늘은 로그인 이후 첫 화면으로 생각중인 Dashboard 페이지를 만들었고, 옆에 붙어있는 사이드 바 까지 만들었다. 사이드 바의 경우 모든 페이지에 동일하게 들어가므로 .. 2024. 1. 13.