[2022/11/03 THU] spring - mymelon 프로젝트

kangsun·2022년 11월 3일
0

Spring

목록 보기
3/24
  • 졸업작품 제안서

⚠️ mediagroup 페이징 오류

  • MediagroupCont.java
  • list.jsp

◆ MediaGroupCont.java

     ◇ int startPage = Pages*pagePerBlock +1; 
      → 페이징 목록이 시작되는 숫자는(1, 11, 21···.)  Pages(페이징 목록을 그룹화한것:1~10번페이지까지는 1, 11~20번         
         페이지까지는 2)에다가 pagePerBlock(페이지 리스트 : 한줄에 페이지 1번~10번까지만 띄우겠다)을 곱한 후 +1을 해줘           
         야한다 → +1을 안하면 0도 startPage가 되기때문에 오류 발생한다. 
         ex. startPage = (0 * 10) +1;  = 1 (가장 첫 페이지리스트 목록 그룹의 첫 시작 페이징 번호) 
                                          ↑Page = (현재페이지÷페이지리스트:1~10)값을 소수점 올림 후 -1한다.
                                                       ex.  1÷10 = 0.1 → 소수점 올림 = 1 → 1 - 1 = 0
                                                            11÷10 = 1.1 → 소수점올림 = 2 → 2 - 1 = 1 
                                                            → 이러면 startPage = (1*10)+1 = 11; 이 된다. 

     ◇ int endPage = startPage + pagePerBlock -1;
      → 페이징 목록에서 마지막 숫자는(10, 20, 30···.) startPage(시작하는 페이지 숫자)에다가  
         pagePerBlock(페이지 리스트 : 한줄에 페이지 1번~10번까지만 띄우겠다)를 곱한 후 -1을 해준다. 
          ex. endPage = (1+10) - 1 = 10 (가장 첫 페이지리스트 목록 그룹의 마지막 페이징 번호)

​

◆ list.jsp

     ◇ ${endPage > pageCount} → true →  endPage = pageCount;
      → 끝나는 페이지 번호(10, 20···.)이  pageCount = totalPage(전체 페이지 수 : 전체 글 개수 / 한 페이지에 띄울 글 개 
         수)보다 크면 endPage라는 변수에 pageCount 값을 넣는다 => endPage == pageCount
         ex. 10 > 8 라고한다면 → true → endPage = 8; 이된다. (끝 페이지가 8이 됨)

     ◇  ${startPage > 1} → true → ${startPage-1} [이전]
     → 시작 페이지 번호가 (1,11···.) 1보다 크다면 시작페이지번호 - 1이라는 페이지 넘버에 이전 버튼을 삽입한다.
         ex. 11 > 1 → true → 11- 1 = 10 위치에 이전 버튼 삽입 → [이전] [11] [12] [13] ···.

     ◇  <c:forEach var="i" begin="${startPage}" end="${endPage}">
     → 반복문(JSTL)의 시작 숫자를 스타트 페이지, 끝나는 수를 엔드페이지로해서 페이징 리스트를 불러온다 
         ex. i=11; i>=20 → 11, 12, 13 ··· 18, 19, 20 = 하나의 페이징 목록 

    

     ◇  ${endPage < pageCount} → true → ${startPage + 10} [다음] 
     → 끝나는 페이지 번호(10, 20···.)가 전체 페이지 수보다 작다면(=전체 페이지 수가 많다면) 시작페이지 번호에 +10을 한 
         페이지넘버 위치에 [다음]버튼을 삽입한다.
         ex. 10 < 15 라고한다면 → true → 1 + 10 = 11 위치에 [다음] 삽입  → [8] [9] [10] [다음] 


mediagroup 삭제


그룹번호 55번을 삭제 페이지로 넘겨줘야한다.

  • 1) list.jsp
    수정 삭제버튼에 링크를 걸어주면서, 그룹번호를 넘겨준다.
  • 2) mediagroupcont.java
    컨트롤러로 이동해서 groupno 그룹번호를 넘겨주고, view단에 넘겨줄 값들을 가져온다.

  • 3) deleteForm.jsp
    view단 만들러 가기

    목록에서 온 값들을 서로 주고받는 관계를 확실히 알아야한다.

변수의 이동 흐름

  • 4) mediagroupcont.java
    POST방식으로 들어온 삭제결과 백엔드 작성

    form에서 delete.do로 전달하면 hidden속성으로 POST방식으로 전달해준다.

    int cnt=dao.delete(mediagroupno);
    sql문이 들어왔을 때 값이 0이면 실패화면 보여주고, 성공하면 글삭제(int cnt=dao.delete(mediagroupno);)시키고 목록을 보여준다.

  • 5) MediagroupDAO.java sql 백엔드 작업


mediagroup 수정 Update

  • 1) mediagroupDAO.java
    수정하는 sql문 작성

    list의 이부분만 WHERE절로 바꿔주면 상세보기가 된다.


  • 2) MediagroupCont.java 백엔드
    get방식으로 가져오기 - update.do URL로 들어오면 값을 가져오는 것


  • 3) updateForm.jsp 프론트
    수정하는 폼 만들어주기 - hidden 속성으로 post방식으로 보내주는 폼


  • 4) MediagroupCont.java 백엔드
    수정 처리 결과
    post로 보내준 폼을 post방식으로 MediagroupCont에 받아오기

결과확인




net.utility 팩키지 생성

utility 파일 넣기 (myweb)에서 했던 것 복사


media (mp3듣기페이지)


media_sql 테이블 생성

-- media_sql.txt

-- 미디어 테이블 생성
CREATE TABLE media (
  mediano  	   NUMBER        NOT NULL PRIMARY KEY,          -- 미디어 번호
  title    	   VARCHAR2(255) NOT NULL,                      -- 제목
  poster   	   VARCHAR2(255) DEFAULT 'poster.jpg' NOT NULL, -- 포스터 이미지
  filename 	   VARCHAR2(255) NOT NULL,                      -- 음원 파일명
  filesize 	   NUMBER        DEFAULT 0 NOT NULL,
  mview    	   CHAR(1)       DEFAULT 'Y' NOT NULL,          -- 출력모드
  rdate    	   DATE          NOT NULL,                      -- 등록일
  mediagroupno NUMBER    	 NULL                           -- 부모테이블 PK
);


-- 시퀀스 생성
create sequence media_seq;


commit;
  • 보여주는 부분, 보여주지않을 부분

    y값이 들어가있는 부분만 보여준다.

  • 테이블, 시퀀스, 커밋

media 팩키지 생성


MediaCont.java 컨트롤러 생성


MediaCont.java @Repository 생성


spring framework의 탄생배경


웹과 DB서버를 왔다갔다하는데 시간이 오래걸리고 복잡하다.
분산형 시스템의 최적화
자동 객체 생성


@Autowired

@Autowired를 사용하면 MediaDAO 객체를 자동 생성해준다.

  • MediaCont

  • MediaDAO

MediaDTO

기본생성자, getter, setter, toString 생성


음원목록

  • 1) mediagroup/list.jsp에 링크걸기


    mediagroupno는 계속 가지고다녀야하는 값이다.

  • 2) 결과확인


    <a href="../media/list.do?mediagroupno=${dto.mediagroupno}">
    링크에 이 값이 잘 들어왔는지 확인한다.
    아직 페이지를 만들어주지 않았기 때문에 오류가 난다.

파일 확인
02_스프링부트 JdbcTemplate기반 mymelon프로젝트_media



  • 3) MediaCont 백엔드
    media폴더의 list.do가 URL로 들어오면, view단과 매핑시켜준다.



  • 4) list.jsp 프론트


  • 5) MediaDAO 백엔드
    데이터베이스에서 음원목록 데이터 가져오기
SELECT mediano, title, poster, filename, filesize, mview, mediagroupno
FROM media
WHERE mview='Y' AND mediagroupno=?
ORDER BY mediano DESC


FROM 미디어 테이블에서
WHERE 미디어뷰가 Y로 되어있고, 미디어그룹번호가 ?번인곳에
SELECT 미디어번호, 제목, 포스터이미지, 파일명, 파일크기, 미디어뷰, 미디어그룹번호를
ORDER BY 미디어번호 내림차순(101)으로 가져와주세요.

미디어 그룹 목록 페이지 결과확인


미디어 그룹 목록 실행 흐름


media 쓰기

  • 1) 미디어 그룹 목록에서 음원등록 버튼에 링크 걸기
    create.do페이지로 가면 mediagroupno 그룹번호를 가지고 가는 링크.
  • 2) MediaCont.java 백엔드 @RequestMapping GET방식
    list페이지 링크에 들어온
  • 3) createForm.jsp 프론트
    createForm 대충 생성해서 페이지에 접속되는지 확인

음원등록페이지 접속되는지 중간확인


  • 4) 첨부파일을 넣어줄 것이기 때문에, enctype을 작성해줘야한다.
  • 5) 인풋으로 히든속성으로 부모글번호를 항상 가져와야한다.
  • 4) MediaDAO에 create()함수 만들기
    글작성해주는 sql문 작성

  • 헷갈렸던 개념
profile
코딩 공부 💻

0개의 댓글