웹개발 교육/Spring

[69일] spring (8) - mymelon media 목록

2022. 11. 3. 17:42
목차
  1. 목록
  2. 쓰기

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,          -- 출력모드 y이면 목록에 출력
  rdate    DATE          NOT NULL,                      -- 등록일
  mediagroupno NUMBER    NULL                           -- 부모테이블 PK
);


-- 시퀀스 생성
create sequence media_seq;


commit;


-- 행목록
select * from media
where mview='Y' and mediagroupno=? 
order by mediano desc;

 

패키지와 클래스 생성

 

MediaCont.java

package kr.co.itwill.media;

import org.springframework.stereotype.Controller;

@Controller
public class MediaCont {

	public MediaCont() {
		System.out.println("-----MediaCont() 객체 생성");
	}//end
	
}//class end

확인

 

MediaDAO.java

package kr.co.itwill.media;

import org.springframework.stereotype.Repository;

@Repository
public class MediaDAO {

	public MediaDAO() {
		System.out.println("-----MediaDAO() 객체 생성");
	}//end
	
}//class end

 

MediaCont.java

package kr.co.itwill.media;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;

@Controller
public class MediaCont {

	@Autowired
	private MediaDAO dao;
	
	public MediaCont() {
		System.out.println("-----MediaCont() 객체 생성");
	}//end
	
}//class end

 

MediaDAO.java

package kr.co.itwill.media;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;

@Repository
public class MediaDAO {

	@Autowired
	private JdbcTemplate jt;
	
	public MediaDAO() {
		System.out.println("-----MediaDAO() 객체 생성");
	}//end
	
}//class end

 

MediaDTO.java

package kr.co.itwill.media;

public class MediaDTO {

	private int mediano;
    private String title;
    private String poster;
    private String filename;
    private long filesize;
    private String mview;
    private String rdate;
    private int mediagroupno;
	
    //기본생성자, getter, setter, toString -> lombok.jar
    public MediaDTO() {}

	public int getMediano() {
		return mediano;
	}

	public void setMediano(int mediano) {
		this.mediano = mediano;
	}

	public String getTitle() {
		return title;
	}

	public void setTitle(String title) {
		this.title = title;
	}

	public String getPoster() {
		return poster;
	}

	public void setPoster(String poster) {
		this.poster = poster;
	}

	public String getFilename() {
		return filename;
	}

	public void setFilename(String filename) {
		this.filename = filename;
	}

	public long getFilesize() {
		return filesize;
	}

	public void setFilesize(long filesize) {
		this.filesize = filesize;
	}

	public String getMview() {
		return mview;
	}

	public void setMview(String mview) {
		this.mview = mview;
	}

	public String getRdate() {
		return rdate;
	}

	public void setRdate(String rdate) {
		this.rdate = rdate;
	}

	public int getMediagroupno() {
		return mediagroupno;
	}

	public void setMediagroupno(int mediagroupno) {
		this.mediagroupno = mediagroupno;
	}

	@Override
	public String toString() {
		return "MediaDTO [mediano=" + mediano + ", title=" + title + ", poster=" + poster + ", filename=" + filename
				+ ", filesize=" + filesize + ", mview=" + mview + ", rdate=" + rdate + ", mediagroupno=" + mediagroupno
				+ "]";
	}
    
}//class end

 

list.jsp

추가한 부분

 

 

목록

MediaCont.java

package kr.co.itwill.media;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;

@Controller
public class MediaCont {

	@Autowired
	private MediaDAO dao;
	
	public MediaCont() {
		System.out.println("-----MediaCont() 객체 생성");
	}//end
	
	@RequestMapping("/media/list.do")
	public ModelAndView list(int mediagroupno) {
		ModelAndView mav = new ModelAndView();
		mav.setViewName("media/list");
		mav.addObject("list", dao.list(mediagroupno));
		mav.addObject("mediagroupno", mediagroupno);
		return mav;		
	}//list() end
	
}//class end

 

MediaDAO.java

package kr.co.itwill.media;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.stereotype.Repository;

@Repository
public class MediaDAO {

	@Autowired
	private JdbcTemplate jt;
	
	StringBuilder sql = null;
	
	public MediaDAO() {
		System.out.println("-----MediaDAO() 객체 생성");
	}//end
	
	public List<MediaDTO> list(int mediagroupno) {
		List<MediaDTO> list = null;
		try {
			sql = new StringBuilder();
			sql.append(" SELECT mediano, title, poster, filename, filesize, mview, rdate, mediagroupno ");
			sql.append(" FROM media ");
			sql.append(" WHERE mview='Y' and mediagroupno = " + mediagroupno);
			sql.append(" ORDER BY mediano DESC ");
			
			RowMapper<MediaDTO> rowMapper = new RowMapper<MediaDTO>() {
			
				@Override
				public MediaDTO mapRow(ResultSet rs, int rowNum) throws SQLException {
					MediaDTO dto = new MediaDTO();
					dto.setMediano(rs.getInt("mediano"));
					dto.setTitle(rs.getString("title"));
					dto.setPoster(rs.getString("poster"));
					dto.setFilename(rs.getString("filename"));
					dto.setFilesize(rs.getLong("filesize"));
					dto.setMview(rs.getString("mview"));
					dto.setRdate(rs.getString("rdate"));
					dto.setMediagroupno(rs.getInt("mediagroupno"));
					return dto;
				}//mapRow() end
			};//rowMapper end
			
			list = jt.query(sql.toString(), rowMapper);
			
		} catch (Exception e) {
			System.out.println("media 목록 실패 : " + e);
		}//end
		return list;
	}//list() end
	
}//class end

 

list.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>list.jsp</title>
	<style>
		*{font-family: gulim; font-size: 24px;}
	</style>
	<link href="../css/style.css" rel="stylesheet" type="text/css">
</head>
<body>
	<div class="title">음원 목록</div>
	<div class="content">
		<input type="button" value="음원등록" onclick="location.href='create.do?mediagroupno=${mediagroupno}'">
		<input type="button" value="HOME" onclick="location.href='/home.do'">
	</div>
	
		<table>
		<tr>
			<th>번호</th>
			<th>제목</th>
			<th>등록일</th>
			<th>음원파일명</th>
			<th>수정/삭제</th>
		</tr>
		
		<c:forEach var="dto" items="${list}">
			<tr>
				<td>${dto.mediano}</td>
				<td>${dto.title}</td>
				<td>${dto.rdate}</td>
				<td>
					${dto.filename}<br>
					${dto.filesize}<br>
					<c:set var="filesize" value="${fn:substringBefore(dto.filesize/1024, '.') }"></c:set>
					${filesize}KB
				</td>
				<td>
					<input type="button" value="수정">
					<input type="button" value="삭제">
				</td>
			</tr>
		</c:forEach>
		
		</table>
	
</body>
</html>

 

 

 

쓰기

MediaCont.java

	@RequestMapping(value = "/media/create.do", method = RequestMethod.GET)
	public ModelAndView createForm(int mediagroupno) {
		ModelAndView mav = new ModelAndView();
		mav.setViewName("media/createForm");
		mav.addObject("mediagroupno", mediagroupno);
		return mav;
	}//createForm() end

 

createForm.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>createForm.jsp</title>
	<style>
	*{font-family: gulim; font-size: 24px;}
	</style>
	<link href="../css/style.css" rel="stylesheet" type="text/css">
</head>
<body>
	<div class="title">음원 등록</div>
	<form name="frm" method="post" action="create.do" enctype="multipart/form-data">
		<input type="hidden" name="mediagroupno" value="${mediagroupno}"> <!-- 부모글번호 -->
		<table class='table'>
        <tr>
          <th>제목</th>
          <td><input type='text' name='title' size='50'></td>
        </tr>
        <tr>
          <th>포스터</th>
          <td><input type='file' name='posterMF' size='50'></td>    
        </tr>
        <tr>
          <th>미디어 파일</th>
          <td><input type='file' name='filenameMF' size='50'></td>    
        </tr>  
        </table>
        
        <div class="bottom">
			<input type="submit" value="음원등록">
			<input type="button" value="음원목록" onclick="location.href='list.do?mediagroupno=${mediagroupno}'">
			<input type="button" value="HOME" onclick="location.href='/home.do'">
		</div>
        
	</form>

</body>
</html>

 

MediaDAO.java

	public int create(MediaDTO dto) {
		int cnt = 0;
		try {
			sql = new StringBuilder();
			sql.append(" INSERT INTO media(mediano, title, poster, filename, filesize, mediagroupno, rdate ");
			sql.append(" VALUES (media_seq.nextval, ?, ?, ?, ?, ?, sysdate) ");
			cnt = jt.update(sql.toString(), dto.getTitle(), dto.getPoster(), dto.getFilename(), dto.getFilesize(), dto.getMediagroupno()); 
		} catch (Exception e) {
			System.out.println("음원 등록 실패 : " + e);
		}//end
		return cnt;
	}//create() end

 

 

더보기
02_스프링부트 JdbcTemplate기반 mymelon프로젝트_media.pdf
1.44MB

pw : itwill

 

'웹개발 교육 > Spring' 카테고리의 다른 글

[70일] spring (10) - mymelon media 상세보기  (0) 2022.11.04
[70일] spring (9) - mymelon media 등록  (0) 2022.11.04
[69일] spring (7) - mymelon mediagroup 수정, 삭제  (0) 2022.11.03
[68일] spring (6) - mymelon mediagroup 추가, 리스트  (0) 2022.11.02
[67일] spring (5) - bbs, login  (0) 2022.11.01
  1. 목록
  2. 쓰기
'웹개발 교육/Spring' 카테고리의 다른 글
  • [70일] spring (10) - mymelon media 상세보기
  • [70일] spring (9) - mymelon media 등록
  • [69일] spring (7) - mymelon mediagroup 수정, 삭제
  • [68일] spring (6) - mymelon mediagroup 추가, 리스트
ewok
ewok
기록장ewok 님의 블로그입니다.
ewok
기록장
ewok
전체
오늘
어제
  • 분류 전체보기
    • 웹개발 교육
      • HTML
      • CSS
      • JavaScript
      • Database
      • Java
      • jQuery
      • Ajax
      • Bootstrap
      • jsp
      • Spring
      • MyBatis
      • 프로젝트
    • JAVA
    • SpringBoot
      • 기초
      • AWS
      • 개인프로젝트
    • Spring Security
    • JPA
    • 테스트코드
    • Error
    • CS
      • 컴퓨터 구조
      • 이산수학
    • 알고리즘
      • 정리
      • Java
    • SQL
    • 자격증
      • SQLD
      • 정보처리기사
    • Git

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • sqld 합격
  • 생성자
  • org.hibernate.tool.schema.spi.CommandAcceptanceException
  • 브랜치
  • merge commit
  • 노랭이
  • SQLD
  • 버전 관리
  • this
  • org.springframework.beans.factory.UnsatisfiedDependencyException
  • git bash
  • sqld 자격증
  • branch
  • base
  • GIT

최근 댓글

최근 글

hELLO · Designed By 정상우.
ewok
[69일] spring (8) - mymelon media 목록
상단으로

티스토리툴바

단축키

내 블로그

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

블로그 게시글

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

모든 영역

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

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