본문 바로가기

국비과정/Spring

20230828 _[61일차]_01. admin-게시글관리 페이지

buildgradle에서 아래 log부분 주석처리

application에서도 주석처리 바꿔준다

윗부분 주석해제하고 log관련부분 주석처리

 


[DB] 하이버네이트(Hibernate)란? (tistory.com)

 

[DB] 하이버네이트(Hibernate)란?

ORM 기술에 대한 명세인 JPA(Java Persistence API)의 구현체의 한 종류 JPA의 구현체이므로 JPA의 특징을 함께 정리했어요. Hibernate란? 하이버네이트는 자바 언어를 위한 ORM 프레임워크에요. JPA의 구현체

livenow14.tistory.com


application에 원래있던 log 주석처리하고 hivernate 로 바꿔준다.

 

이제 이전처럼 콘솔창에 로그들이 뜨지 않는다.

 


이제 admin-게시글관리 페이지를 만들어보자.

 

게시글 관리를 누르면 admin/post 로 이동한다. 

 

 AdminController에 post 요청에 대해 admin/post를 반환하는 코드 작성

아래의 일반게시판의 모든 글들을 관리자페이지인 admin/post페이지로 불러올거다.

 

post() 메소드를 실행시켜서 Map타입의 List에 담아오자

모든 게시글을 전부 불러올거기 때문에 multiview가 아닌 multiboard의 모든 데이터를 가져온다.

                                  여기에는 mb_del = 1 인 데이터만 보여지도록 되어있다.

쿼리문 수정 => * 말고 하나하나 가져온다

count도 가져와서 페이지에 전체 글 갯수를 띄울예정

컨트롤러에서 가져온 데이터를 list라는 이름으로 model에 붙여 jsp로 보낸다.

이제 post.jsp 만들고 데이터 잘 불러오는지 띄워본다.

잘 가져온다.

list 내부의 데이터들을 하나하나 꺼내서 게시판 형태로 정리해줬다.

잘 불러온다.


mb_board(카테고리 번호) 대신에 b_catename(게시판 이름), 글쓴이 번호 대신 m_name을 불러와보자

   multiboard                                                setupboard           multiboard / multiview      member / multiview                         

 

mapper에서 multiboard 테이블에 setupboard 테이블 조인을 걸어서 b_catename(게시판 이름) 먼저 가져오자

일단 setupboard와의 조인으로 mb_board mb_cate를 비교(게시판번호 비교)해서 b_cataname 가져오고 

                     multiboard 에서의 게시판번호    setupboard 에서의 게시판번호

member 테이블과의 조인으로 m_no를 비교해서 m_name도 가져오자.

 

 

jsp에서도 mapper에서 새로 가져온 데이터로 뽑아내주면

카테고리 이름으로, 글쓴이 이름으로 잘 불러온다.


 

multiboard 게시판에 있는 버튼들을 게시글 관리 페이지에도 넣어주고 url 연결해준다.

버튼 불러왔고 

 

버튼 눌렀을 때의 주소 설정해줬다.

 

 

name과 value 혼용해서 사용 가능한듯 하다.

암튼 int타입인 cate를 매개변수로 가져갈거다. (defaultValue는 0으로 설정해줬다_처음 게시글관리를 누르면 cate가 0)

서비스랑 DAO도 수정해주고 mapper에서 조건 where절 추가

 

 

그런데 if 조건문도 걸어줘야 한다. parameterType도 추가해준다.

cate 번호가 있을 때만 적용되는 조건문 걸어준다.

그럼 이제 버튼을 눌렀을 때 번호에 해당하는 게시판의 글만 불러온다.

그런데 글이 하나인데 맨 위에는 전체글 수를 가져온다.

각 게시판 번호에 해당하는 글의 갯수를 가져오려면 mapper에서 count 가져오는 쿼리문을 수정한다.

 

이제 게시판별로 글의 갯수를 가져온다.

mapper 쿼리문에서 where절을 다르게 표현해줄수 있다. AND 붙여준다****

if 조건문을 여러개 걸때 사용하기 좋다.

count를 가져오는 부분도 where절과 if 조건문 추가해줬다.

게시판번호가 0보다 클때만 게시판번호를 비교해서 해당 게시판번호에 해당하는 글의 갯수를 세온다.

이제 각 게시판에 맞는 글들을 가져오는데

전체글을 보려면 메뉴바의 게시글 관리 메뉴를 눌러줘야 한다.

그래서 전체보기 버튼을 하나 만들어줬다. (주소창에 뜨는 게시판번호는 0으로 설정해줬다.)

글이 있을때만 갯수가 뜨도록 하려면 아래처럼 하면 된다.

 


이제 버튼 뒤로 검색창 넣어줄거다.

검색버튼을 누르면 form이 제출

 

hidden 타입의 input창을 추가해서 form 제출시에 검색창 입력값과 함께 cate (게시판 번호)도 함께 제출할거다.

메인게시판 누르고 (cate = 1일때) 소스보기 눌러서 확인해보면

cate 번호를 잘 잡는다.

좀 더 확실히 해주기 위해 전체보기 버튼을 눌렀을때도 cate 번호가 0이 되도록 해줬다.

 

아래처럼 매개변수 추가해주면

cate 는 위의 @RequestParam 에서 잡아내고 

cate 를 제외한 그 외의 나머지들은 아래 @RequestParam 의 map에 들어가게 된다.

cate도 잡아오고 map에도 cate가 잘 들어온다.

게시글 관리 메뉴를 누르면 (cate=0인 경우)

 

메인게시판을 누르면 (cate=1인 경우)

전체보기를 누르면 (cate=0인 경우)

 

이제 cate를 map에 담았으니 게시글 불러오는 메소드 post() 를 실행할 때 매개변수로 map을 가지고 가자

원래는 int타입인 cate만 가지고 갔었다.

컨트롤러부터 서비스, DAO, mapper 까지 전부 매개변수를 수정해준다.

mapper 에서 파라미터타입 Integer  ==>  Map 으로 변경해주고 

if 조건문 하나더 추가, searchV 에 대해 (검색창 값이 null이 아니라면 ) 

등호로 비교해줬기 때문에 title과 정확하게 일치하는 값으로 입력해줘야 검색이 된다.


일단 검색창 앞에 검색 카테고리를 추가해줬다.

form 내부에 select / option태그 추가

카테고리 선택하고 검색내용 입력 후에 검색 버튼 눌러보면

 

 

 

쿼리문 수정..

다시 수정

그런데 다시 수정해서 각 카테고리에 대한 조건을 하나씩 줄건가보다.

&

 

&가 아니라 %로 바꿔주고 각각에 대한 조건문 완성

 

오타주의

 

검색을 해보면

asdf가 들어가있는 제목을 잘 가져온다.


이렇게 해도 count를 잘 가져온다.

 

 


[최종쿼리문]

 

count를 가져올때 member 테이블과 조인한 이유는

글쓴이 또는 ID를 검색해서 글을 가져왔을 때의 글의 갯수를 잡기 위해서였다!! 

아래의 조건문은 검색결과로 나온 글의 갯수를 잡아오기 위해 넣어준 것!


참고로 알아두기 wifi 버전 7이 나왔다. 매쉬...망...

 

마이크로웨이브

 

이런거 공부해야 한다.

 

 

 

진폭의 넓이가 넓으면 벽을 뚫어. 길이가 긴건 벽을 못뚫어


글을 누르면 아래로 열리면서 글내용이 보이게 만들어줄 예정

 

글을 클릭했을때 나올 내용은 아래 div에 넣어줄거다. 

제목행에 class 지정해주고 눌렀을때 열리는거 먼저 만들어보자

일단 title을 클릭하면 mbno를 잡아오는 jquery 먼저 만들어보자.

title을 클릭하면 해당 글의 번호가 뜬다.

이렇게 잡은 mbno를 ajax를 통해 컨트롤러로 내보낸다.

컨트롤러에서 mbno를 잡아 이걸 매개변수로 postDetail 메소드 실행

이때 담아오는 결과값의 데이터 타입은 Map으로 가져온다.

전체 리스트가 아니라 mbno를 비교한 한줄만 가져오는거여서 List에 담아올 필요 없음 주의***

@ResponseBody 빼먹지 않게 주의 

매개변수로 가져간 mbno를 비교해서 multview의 데이터를 가져온다.

db의 값을 잡아와서 팝업으로 띄워보면 잘 뜬다.