자바 38

Springboot 예약내역 페이지 만들기!(1) with thymeleaf

이제 예약 내역 페이지를 만들 건데 1. 예약시간이 지난 예약은 표시해주지 않는다 2. 히스토리를 같이 표시해준다 vo를 고쳐주자! 추후 수정/삭제를 위해 몇 가지를 추가해주자! @Column(name = "rid",nullable = false) int rid; @Column(name="email",nullable = false) String email; @Column(name = "seat",nullable = false) String seat; controller 예약 내역 페이지에 갈 때 필요한 것들이다 reservationservice.getReservationByEmail(email)는 시간이 아직인 예약 historyservice.getHistories(email,page,totalpages..

Springboot 당일 예약 시스템 만들기!(3) with json and Transactional

+추가 20210821 당일이 아닌 더 업그레이드 된 예약시스템은 여기있습니다 https://cordingmonster.tistory.com/138 Springboot 예약시스템 만들기!(1) 연/월/일/요일 뿌리기! 이전에 kimscafe에서는 '당일' 예약만 가능한 시스템이었다 이번엔 언제든 가능한 예약시스템을 사용해보자! 시나리오 자리 선택->년/월/날짜 표시-> 날짜 선택-> 시간표시-> 예약 프런트 서버 html cordingmonster.tistory.com 이제 예약 시스템 2번째 히스토리 시스템을 만들어보자! 이게 히스토리와/예약의 다른 부분은 예약 시스템은 사용자가 예약을 사용하거나/예약시간을 놓치거나 하거나 예약의 효력이 없어지는 상황이 된다면 사라진다 하지만 히스토리는 사용하든/효력이..

Springboot 당일 예약시스템 만들기!(2) with Enum

생활 치료소에 온 지 5일이 지났다 5일 동안 열이 좀 나서 코딩을 못하다 이제 괜찮아져서 다시 적는다 두 가지에 대한 검증을 할 건데 1. 예약하는 사이에 이미 예약 이참 2. 불법 적으로 이전 시간으로 조작해서 예약을 시도 service 상황에 맞게 검증해보자 그리고 경우가 늘어나므로 반환 형식을 string로 해준다 service true면 예약이 진행 나머지면 enum의 .valueOf를 이용해서 메시지를 던 저주자! 정상적 예약 시도 중복 시간 예약 시도 (다른 아이디 사용) 이전 시간 예약 시도 마지막 줄은 enum메시지인데 j쿼리가 아직 엉망이어서 받지 못하는 중이다 일단 그건 마지막에 하고 이제 히스토리를 만들러 가자! 히스토리는 모든 예약을 가지고 있는 테이블로 만들 것이다! 아 예약 게..

Springboot 예외처리및응답하기!(2) with @Transactional And @Transactional(rollbackFor = {Exception.class})

전체적으로 중간 소스 정리를 해보았다 재밌었다 이전에는 예외를 일부로 일으킨다고..? 굳이 이런생각이 있었는데 왜 그런지 어떤 부분에서 일으켜야 하는데 조금은 알거 같은 생각이 들었다 @Transactional에 대해서도 이해가 조금더 높아졌다 또 한 번 느꼈지만 처음부터 변 수명이 나형식을 잘 정해서 해야 편하다는 걸 다시 느꼈다 예를 들어 댓글 등록/수정에는 @Transactional만 붙여놨다 이유는 행동이 하나이다 댓글의 코멘트만 바뀌면 되게 해 놨기 때문이다 하지만 글 등록/수정 시에는 @Transactional(rollbackFor = {Exception.class}) 사용했다 이유는 사진 같은 파일도 받는 과정에서 예기치 못한 에러가발생한다 예를 들어 실수로 이미지가 아닌 다른 형식의 파일을..

Springboot 게시판만들기!(12) 글수정 with Photo

장문의 글이 될 거 같다 정말 어려웠다 글 수정을 구현하려고 했다 1. 글 수정 2. 사진수정 사진수정이 고비였다 해본 적도 없고 검색해도 뭔 말인지 모르겠는 글만 나왔다 그러던 중 "사진 수정은 모든 사진을 지웠다 다시 넣는다" 라고 써져있는 글을 봤고 아이디어를 얻었다 아이디어는 이렇다 기존 사진을 따로 처리하고 새로운 사진은 넣어주기만 하면 되네? html 처음 보는 거였다 contentEditable="true"를 써야 사진이 출력 가능했다 textarea는 더 이상 쓸 필요가 없다 false시 수정 불가하다 js var formData = new FormData(form);를 이용했다 formData.append 정말 신기했다 form안에 없는 정보도 추가해서 보낼 수 있다 getElementB..

Spingboot 예외처리! with @RestControllerAdvice and @ExceptionHandler

원래는 어느 정도 만들고 이제 boolean으로 받던걸 map으로 프런트에게 던져주려 했는데 rollback에 대해 찾아보면서 생각이 좀 바뀌었다 훨씬 빠르게 편하게 예외처리가 가능한 방법을 봤다 @RestControllerAdvice/@ExceptionHandler 였는데 restcontroller 고으로 예외를 만드는 함수를 하나 만든다 그리고 새로운 예외처리 클래스를 만들어준다 @RestControllerAdvice restcontroller에서 터지는 모든 예외를 여기로 가져다준다 @ExceptionHandler(value = Exception.class)해당 예외가 터지면 여기로 와서 수행한 행동을 하게 해 준다 일단 간단하게 메세지만 전송할 거여서 모든 예외로 지정했다(value = Excep..

Springboot 게시판만들기!(11) 댓글 삭제

백엔드는 그냥 cid값으로 delete 해주면 된다 라는 생각을 가지고 임했는데 문제는 프론트 앤드였다 삭제/수정 버튼을 눌렀을 때 지목한 수정 버튼만 적용이 돼야 했었고 또 지정한 댓글의 id값을 어떻게 넘겨줘야 하나 생각했다 그리고 처음 js를 구현했을 때는 window.onload에 꽂혀서 어떤 방식이냐면 예를 들어 cid값이 70인 댓글 삭제를 누르면 document.querySelectorAll('.updateCommnetButton2').forEach(function(item)를 반복문 돌려서 찾아서 cid 값을 찾아서 던 저주는 형식인데 문득 onclick이라는 것이 생각나서 이렇게 바꿨다 onclick이용 어 진짜 이렇게 간단한걸 며칠 동안 아 도대체.. 어떤 댓글인지 어떻게 알지.. 라고..

Springboot 게시판만들기!(10) 사진불러오기 with thymeleaf

사진을 불러오려면 사진의 경로가 필요하다 그래서 dao로가서 bid=글 번호에 맞는 경로를 db에서 가져온다 controller로가서 model.addAttribute("imagearray", boardimagedao.findByBidOrderById(bid)); 보내준다 이제 핵심은 프런트인데 일단 가장 기본적이게 그냥 모든 텍스트 밑에다 넣겠다 어쩔 수없다 t스토리나 다른 게시판처럼 하려면 이미 넣을 때부터 틀렸다 그러므로 내가 현재 할 수 있는 선에서 내가 가진 정보로 spring이 잘 사진을 던져주는지 확인하기 위해 해 보는 거다! 자 textarea안에는 ima 뭐가 표시가 불가능하다 그래서

Springboot 게시판만들기!(9)글쓰기 사진 올리기 추가 with XMLhttpRequset and MultipartFile

이전까지만 해도 text만 올릴 수 있는 게시판이었다 이유는 받을 줄은 아는데 ajax로 도대체 어떻게 보내야 하는지... 이게 혼란스러웠다 그래서 좀 찾아본 결과 https://m.blog.naver.com/PostView.nhn?blogId=mk1126sj&logNo=221016837263&proxyReferer=https:%2F%2Fwww.google.co.kr%2F [jQuery/제이쿼리] ajax와 FormData를 이용한 비동기 파일 업로드 비동기 업로드를 하기 위해 ajax와 FormData를 이용한 방법이다. FormData는 IE10버전 부터 지원하며... blog.naver.com https://unikys.tistory.com/233 [Javascript] AJAX (XMLHttpRe..

Springboot 게시판만들기!(8) 댓글 불러오기

이제 댓글을 출력시켜주면 된다 dao로 가서 페이징을 위해 작성해준다 원리는 게시판 검색 로직과 같다 페이지별 select와 totalpage를 알기 위해 쿼리문을 작성해준다 이제 service로가서 페이징을 위한 준비를 해 주고 controller로가서 댓글도 같이 불러오게 해 주고 기본 페이지는 1로 지정해준다 결과 잘 출력된다! 요새 사실 이런 시스템은 잘 안쓰던데 일단 백엔드 위주의 공부중이니 좀 오래됐지만 ㅎㅎ 이걸로 만들었다! 이제 댓글 삭제 기능을 만들러 가자! 수정보다 삭제가 더 간단하다 그래서 삭제부터 만들자!