자바 스프링/부트 블로그 JPA 프로젝트

#25 CRUD 게시판 - Read (목록,페이징,상세보기)

2022. 5. 16. 14:02
목차
  1. 글 목록 보기
  2. 글 목록 보기 실행결과
  3. 글 목록 페이징
  4. 글 목록 페이징 실행결과
  5. 글 상세보기
  6. 글 상세보기 실행결과

 

글 목록 보기

 

이전에 적었던 글을 이제 보이게 하자.

해당 페이지로 올 때 Select를 해야 한다.

 

 

메인페이지(index)로 갈 때 BoardService를 연결하자

메인페이지로 갈 때 데이터를 가져와야 한다.

스프링에서는 이 데이터를 가져갈 때 Model이 하나 필요하다.

model에 데이터를 담기 위해 addAttribute() 메소드를 사용한 것이다.

누가 "/"로 주소를 요청하면 model에 글목록을 다 들고 온다.

이 글 목록은 BoardService에서 findAll()로 다 가져올 수 있다. 

 

model.addAttribute(String name, Object value)

: value 객체를 name 이름으로 추가한다.

 

이제 boardService에 가서 글목록()을 작성해주자

현재 boardRepository가 들고 있는 JPA의 findAll() 함수를 사용한다.

findAll()은 SELECT * FROM과 같다. 조건 없이 모든 튜플을 가져온다.

 

*Spring Data JPA는 관계형 데이터베이스를 사용하기 위해 JPA에서 바로 접근하는 기술이다.

이전에 사용했던 save()는 INSERT와 같다.

 

 

이제 index.jsp로 가서 jstl을 이용해서 코드를 작성해보자.

현재 jstl 라이브러리를 header.jsp에서 가져왔으니 그냥 사용하면 된다.

 

우선 2, 3번째를 지워버리고

 

jstl을 작성한다.

${boards}는 request 정보가 넘어올 때 boards를 받을 수 있다.

이 boards가 index 페이지로 날아가서, 그것을 items="${boards}"로 받는 것이다.

받아서 그걸 한 건씩 board라는 변수에 집어넣게 된다.

그걸 이제 뿌릴 수 있다.

 

*

JSP 2.0버전에서 새로 추가된 스크립트 언어인 EL(Expression Language)은

<%= abc %>를 ${abc}로 간단하게 사용할 수 있게 하였고,
JSTL의 Core에서 c를 이용해 <%= if%>문을 <c:if>로, <%=for%>문을 <c:forEach>로 대체하여 사용한다.

 

다시 index.jsp로 돌아가서

하나씩 변수에 집어넣었던 board의 title을 가져와 뿌릴 수 있다.

${board.title}은 실제로 getTitle이라는 getter 메소드가 호출되는데

현재 Board.java에 @Data 어노테이션으로 getter와 setter가 만들어 놨기 때문에 잘 호출된다.

즉, ${board.title}라고 하면 실제로는 board.getTitle()이 호출된다는 것이다.

 

 

글 목록 보기 실행결과

board 테이블의 title들이 제대로 보이는 것을 확인할 수 있다.

글을 써도 추가되는지 확인해보자

 

핑크빈으로 로그인을 하고

글을 쓰면

잘 나오는 것을 확인할 수 있다.

board 테이블에도 잘 저장된 모습이다.

 

 

 

글 목록 페이징

 

이제 글 목록을 페이징처리 해보자

페이징 처리의 원리는 이전에 작성했었던 #12 select 테스트 및 페이징 게시글에서 확인할 수 있다.

https://daramgda.tistory.com/61?category=554648 

 

#12 select 테스트 및 페이징

테이블 데이터 비우고 다시 넣기 우선 테스트를 하기 위해 기존에 저장된 테이블을 비우자 이렇게 저장된 테이블이 비워진다. ddl-auto를 create로 설정한 다음 부트를 재실행하자 그러면 기존 테이

daramgda.tistory.com

 

 

BoardController.java

import org.springframework.data.domain.Pageable;

그리고 boardService의 글목록으로 가서

 

BoardService.java

 

index.jsp

반드시 .content를 작성해야 페이징이 처리된다.

 

실행결과 :

page=0

 

page=1

 

페이징이 잘 처리되는 것을 확인할 수 있다.

 

이제 페이지 버튼을 만들어주자

 

 

https://www.w3schools.com/bootstrap4/default.asp

 

위 부트스트랩 링크로 들어가서,

좌측 메뉴에서 Pagination을 클릭한다.

얘를 사용하도록 하자. Example의 코드를 복사한다.

해당 코드를 수정해서 페이지를 사이트에 구현할 수 있다.

 

이전과 다음 버튼을 페이지가 첫페이지와 마지막 페이지일 경우에 비활성화 시키고

totalPages의 목록과 해당 버튼을 누를 경우 해당 페이지로 이동하게 만드는 코드이다.

 

 

글 목록 페이징 실행결과

 

페이지 버튼들이 생기고 기능이 정상적으로 작동하는 것을 확인할 수 있다.

 

 

 

글 상세보기

index.jsp에서 "#"으로 되어있던 href를 "/board/${board.id}"로 작성해준다.

 

BoardController.java에 다음과 같이 코드를 작성한다.

@Controller에서 다음과 같은 URL 경로에 변수를 넣어주기 위해 @PathVariable을 사용한다.

이제 boardService로 가서 글상세보기()를 작성해주자

 

람다식으로 예외처리도 확실하게 하고,

이제 다시 BoardController로 가서

 

BoardController에서 코드를 작성한다. 앞서 페이징처리와 마찬가지로 모델을 이용하고

model에 데이터를 담기 위해 addAttribute() 메소드를 사용한다.

글 상세보기를 구현하기 위해선 해당 페이지인 board/detail을 만들어야 한다.

빠르게 만들어보자. 우선 해당 board 폴더에 담겨있는 saveForm 파일을 복사해서 붙여넣고 수정해보자

detail.jsp 파일을 다음과 같이 작성했다.

수정과 삭제는 다음 시간에 구현하기로 하고 여기까지 작성한 코드를 실행시켜보자

 

 

글 상세보기 실행결과

 

이 글의 상세보기를 클릭해보자

 

핑크빈 > 다람쥐라고 주장하는 모습이다.

폰트 스타일이나 사진까지 모두 깔끔하게 나오는 것을 확인했다.

 

여기까지 CRUD에서 READ 파트였다.

 

 

학습자료 :

https://youtu.be/5zyONDFAbDQ

https://youtu.be/y3ABMs9pieg

https://youtu.be/ZNrRqthcZyk

'자바 스프링 > 부트 블로그 JPA 프로젝트' 카테고리의 다른 글

#27 회원 수정  (0) 2022.05.17
#26 CRUD 게시판 - Update, Delete (수정, 삭제)  (0) 2022.05.16
#24 CRUD 게시판 - Create (글 작성하기)  (0) 2022.05.15
#23 스프링 시큐리티 로그인  (0) 2022.05.14
#22 스프링 시큐리티2  (0) 2022.05.13
  1. 글 목록 보기
  2. 글 목록 보기 실행결과
  3. 글 목록 페이징
  4. 글 목록 페이징 실행결과
  5. 글 상세보기
  6. 글 상세보기 실행결과
'자바 스프링/부트 블로그 JPA 프로젝트' 카테고리의 다른 글
  • #27 회원 수정
  • #26 CRUD 게시판 - Update, Delete (수정, 삭제)
  • #24 CRUD 게시판 - Create (글 작성하기)
  • #23 스프링 시큐리티 로그인
daramG
daramG
dotori Java
daramG
다람쥐의 개발 블로그
daramG
전체
오늘
어제
  • 분류 전체보기 (193)
    • Java 코딩테스트 공부 (67)
      • Java 알고리즘 공부 (37)
      • Java 백준 문제풀이 (27)
      • Java 코테 나만의 팁 (3)
    • SQL Study (0)
      • Programmers SQL 문제풀이 (0)
      • SQLP 준비 (0)
    • 웹 개발 지식 정리 (0)
      • Servlet (0)
      • Java 정리 (0)
    • 자바 스프링 (45)
      • 스프링 공부 (4)
      • 스프링 게시판 프로젝트 (6)
      • 부트 블로그 JPA 프로젝트 (30)
      • react & springboot (5)
      • 스프링 오류창고 (0)
      • 리액트 + 스프링 프로젝트 (0)
      • pf (0)
      • pfError (0)
    • React (6)
      • React 정리 (3)
      • React 오류 창고 (3)
    • C++ 코딩테스트 공부 (중단) (20)
      • c++ 백준 문제풀이 (15)
      • c++ 알고리즘 공부 (5)
    • Unity (3)
      • Unity 공부 (3)
    • WebRTC (2)
      • WebRTC 강의학습 정리 (0)
      • WebRTC 프로젝트 (1)
    • 김영한님의 스프링 강의 학습 (10)
      • 스프링 강의 목차 (1)
      • 인텔리제이 & 스프링 기초 (1)
      • 스프링 핵심 원리 (8)
    • 전공 지식 정리 (40)
      • interview (0)
      • Java (0)
      • 운영체제 (4)
      • 데이터베이스 설계 (10)
      • 소프트웨어 공학 (3)
      • 유닉스 (14)
      • 디지털 논리회로 (0)
      • 인공지능 (7)
      • js (0)
      • etc (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • Java 코테 나만의 팁
  • java 알고리즘
  • 인공지능
  • 디지털 논리회로
  • java
  • React&Spring 강의수강
  • 스프링부트 블로그 프로젝트
  • 유닉스
  • 백준 c++
  • C++ 알고리즘
  • Unity 공부
  • 스프링 프로젝트
  • 부트 jpa 게시판 프로젝트
  • 스프링 공부
  • 데이터베이스 설계
  • 운영체제
  • 김영한 스프링 입문
  • 노마드코더의 zoom클론코딩
  • 스프링부트 프로젝트
  • 김영한의 스프링 핵심 원리
  • Java 백준 문제풀이
  • 코테 알고리즘
  • 김영한 스프링 강의
  • 무서운 이야기

최근 댓글

최근 글

hELLO · Designed By 정상우.
daramG
#25 CRUD 게시판 - Read (목록,페이징,상세보기)
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.