생각하는 감쟈

[JAVA] 파일_01 : File_Upload Form 본문

Language/Java

[JAVA] 파일_01 : File_Upload Form

생각하는 감쟈🥔 2024. 6. 5. 13:54

파일 생성

SQL

create table fileinfo(
    file_no number not null, -- 파일번호 (자동 증가)
    file_writer varchar2(50) not null, -- 작성자 이름
    origin_file_name varchar(260) not null, -- 원본 파일
    save_file_name VARCHAR2(260) not null, -- 실제 저장된 파일 이름
    file_size number, -- 파일 크기
    file_date date not null, -- 파일 등록일
    primary key(file_no) 
);

 

 

file_info 시퀀스 생성

create SEQUENCE fileinfo_seq
start with 1
INCREMENT by 1
;

 

fileMain ( main 실행 page )

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<a href ="<%= request.getContextPath()%>/file/fileList.do"> 파일 목록 보기</a>

</body>
</html>

 

실행 화면 )


fileList

<%@page import="kr.or.ddit.vo.FileInfoVO"%>
<%@page import="java.util.List"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<%
	//컨트롤러 (서블릿)에서 보내온 자료 받기
	List<FileInfoVO> fileList = (List<FileInfoVO>)request.getAttribute("fileList.jsp");

	

%>


<body>
<h2> 전체 파일 목록</h2> <br><hr><br>
<table border="1">
<thead>
	<tr>
		<th>번호</th><th> 작성자</th> <th>저장파일명</th><th>원래의 파일명</th>
		<th>파일크기</th><th>날짜</th><th>비고</th>
	<tr>
</thead>
<tbody>
<%
	if(fileList == null || fileList.size() == 0){
%>
	<tr>
		<td colspan="7"> Upload한 파일 목록이 하낟 없습니다</td>
	</tr>

<% 		
	}else {
		for(FileInfoVO fvo : fileList){
%>	
	<tr>
		<td><%=fvo.getFile_no() %></td>
		<td><%=fvo.getFile_writer() %></td>
		<td><%=fvo.getSave_file_name() %></td>
		<td><%=fvo.getOrigin_file_name() %></td>
		<td><%=fvo.getFile_size() %></td>
		<td><%=fvo.getFile_date() %></td>
		<td> DownLoad </td>
	</tr>
<%		
		}
	}

%>
</tbody>

</table>
</body>
</html>

 

실행 화면)


fileupload

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h2> File Upload 연습용 Form</h2>
<form action = "<%=request.getContextPath()%>/file/fileUpload.do"
	  method="post" enctype="multipart/form-data">
	작성자 이름 : <input type="text" name="username"> <br><br>
	한 개의 파일 선택 : <input type="file" name="upFile1"> <br><br>
	여러 개의 파일 선택 : <input type="file" name="upFile2" multiple> <br><br>
	
	<input type="submit" value="전송">
	
</form>
<br><hr><br>
<a href="<%=request.getContextPath()%>/file/fileUpload.do">파일 목록 보기</a>
</body>
</html>

 

실행 화면)

 

 


 

 

SQL VO

SELECT 
    'private '||
   DECODE( DATA_TYPE , 'NUMBER', 'int ', 'String ' )||
    LOWER(COLUMN_NAME)||';'
FROM COLS
WHERE TABLE_NAME = 'FILEINFO'
ORDER BY COLUMN_ID;

fileinfoVo

package kr.or.ddit.vo;

public class fileinfoVO {
	private int file_no;
	private String file_writer;
	private String origin_file_name;
	private String save_file_name;
	private long file_size;
	private String file_date;
	
	
	public int getFile_no() {
		return file_no;
	}
	public void setFile_no(int file_no) {
		this.file_no = file_no;
	}
	public String getFile_writer() {
		return file_writer;
	}
	public void setFile_writer(String file_writer) {
		this.file_writer = file_writer;
	}
	public String getOrigin_file_name() {
		return origin_file_name;
	}
	public void setOrigin_file_name(String origin_file_name) {
		this.origin_file_name = origin_file_name;
	}
	public String getSave_file_name() {
		return save_file_name;
	}
	public void setSave_file_name(String save_file_name) {
		this.save_file_name = save_file_name;
	}
	public long getFile_size() {
		return file_size;
	}
	public void setFile_size(long file_size) {
		this.file_size = file_size;
	}
	public String getFile_date() {
		return file_date;
	}
	public void setFile_date(String file_date) {
		this.file_date = file_date;
	}
	

}

file_size>> private long으로  바꿔주기

 


 

 

mybatis-config

config에 <typeAlias> / <mappers> 추가

<typeAliases>
		<typeAlias type="kr.or.ddit.vo.FileInfoVO" alias ="fileVo"/>
</typeAliases>

<mappers>
		 <mapper resource="kr/or/ddit/mybatis/mappers/fileinfo-mapper.xml"/>
</mappers>

 

fileinfo-mapper

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE mapper
		  PUBLIC "-//mybatis.org/DTD Mapper 3.0//EN"
		  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
		  
	 
<mapper namespace="fileinfo">
	
	<insert id="insertFileinfo" parameterType="fileVo">
		insert into fileinfo
		(file_no, file_writer, origin_file_name, save_file_name, file_size, file_date)
		values(fileinfo_seq.nextval, #{file_writer}, #{origin_file_name},
				#{save_file_name},#{file_size}, sysdate)		
	
	</insert>
	
	<select id="getAllFileinfo" resultType="fileVo">
		select * from fileinfo
	</select>
	
	<select id="getFileinfo" parameterType="int" resultType="fileVo">
		select * from fileinfo where file_no = #{file_no}
	</select>

</mapper>

 

IFileInfoDao / FileInfoDaoImpl

package kro.or.ddit.upload.dao;

import java.util.List;

import kr.or.ddit.vo.FileInfoVO;

public interface IFileInfoDao {
	/**
	 * 저장할 정보가 저장된 FileInfoVO 객체를 인수값으로 받아서 DB에 insert하는 메서드
	 * 
	 * @param 저장할 정보가 저장된 FileInfoVO
	 * @return 작업 성공 : 1, 실패 : 0
	 */
	
	public int insertFileInfo(FileInfoVO fileVo);
	
	
	/**	
	 * db에 저장된 전체 파일 전보 목록을 가져와 List에 담아서 반환하는 메서드
	 * @return 전체 파일 정보 목록이 저장된 List 객체
	 */
	public List<FileInfoVO> getAllFileinfo();
	
	/**
	 *  파일 번로를 인수값으로 받아서 해당 정보를 VO에 담아서 반환하는 메서드
	 * @param FileNo 검색할 file번호
	 * @return 검색된 파일 정보가 저장된 FileInfoVO객체
	 */
	public FileInfoVO getFileinfo(int FileNo);

}
package kro.or.ddit.upload.dao;

import java.util.List;

import org.apache.ibatis.session.SqlSession;

import kr.or.ddit.util.MyBatisUtil;
import kr.or.ddit.vo.FileInfoVO;
import sun.security.jca.GetInstance;

public class FileInfoDaoImpl implements IFileInfoDao {
	private static FileInfoDaoImpl dao;
	
	private FileInfoDaoImpl() { }
	
	public static FileInfoDaoImpl getInstance() {
		if(dao==null) dao = new FileInfoDaoImpl();
		return dao;
	}
	

	@Override
	public int insertFileInfo(FileInfoVO fileVo) {
		SqlSession session = null;
		int cnt = 0;
		
		try {
			session = MyBatisUtil.getSqlSession();
			cnt = session.insert("fileinfo.insertFileinfo", fileVo);
			if(cnt>0) session.commit();
			
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			session.close();
		}
		return cnt;
	}

	@Override
	public List<FileInfoVO> getAllFileinfo() {
		SqlSession session = null;
		List<FileInfoVO> fileList = null; //반환값
		
		try {
			session = MyBatisUtil.getSqlSession();
			
			fileList = session.selectList("fileinfo.getAllFileinfo");
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			session.close();
		}
		
		return fileList;
	}

	@Override
	public FileInfoVO getFileinfo(int FileNo) {
		SqlSession session = null;
		FileInfoVO fileVo = null; //반환값
		
		try {
			session = MyBatisUtil.getSqlSession();
			fileVo = session.selectOne("fileinfo.getFileinfo", FileNo);
			
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			session.close();
		}
		return fileVo;
	}

}

IFileInfoServicel / FileInfoServiceImpl 

package kro.or.ddit.upload.service;

import java.util.List;

import kr.or.ddit.vo.FileInfoVO;

public interface IFileInfoService {
	/**
	 * 저장할 정보가 저장된 FileInfoVO 객체를 인수값으로 받아서 DB에 insert하는 메서드
	 * 
	 * @param 저장할 정보가 저장된 FileInfoVO
	 * @return 작업 성고 : 1, 실패 : 0
	 */
	
	public int insertFileInfo(FileInfoVO fileVo);
	
	
	/**	
	 * db에 저장된 전체 파일 전보 목록을 가져와 List에 담아서 반환하는 메서드
	 * @return 전체 파일 정보 목록이 저장된 List 객체
	 */
	public List<FileInfoVO> getAllFileinfo();
	
	/**
	 *  파일 번로를 인수값으로 받아서 해당 정보를 VO에 담아서 반환하는 메서드
	 * @param FileNo 검색할 file번호
	 * @return 검색된 파일 정보가 저장된 FileInfoVO객체
	 */
	public FileInfoVO getFileinfo(int FileNo);

}

 

package kro.or.ddit.upload.service;

import java.util.List;

import kr.or.ddit.vo.FileInfoVO;
import kro.or.ddit.upload.dao.FileInfoDaoImpl;
import kro.or.ddit.upload.dao.IFileInfoDao;

public class FileInfoServiceImpl implements IFileInfoService {
	
	private IFileInfoDao dao;
	
	private static FileInfoServiceImpl service;
	
	private FileInfoServiceImpl() {
		dao = FileInfoDaoImpl.getInstance();
	}

	public static FileInfoServiceImpl getInstance(){
		if(service == null) service = new FileInfoServiceImpl();
		return service;
	}
	
	@Override
	public int insertFileInfo(FileInfoVO fileVo) {
		return dao.insertFileInfo(fileVo);
	}

	@Override
	public List<FileInfoVO> getAllFileinfo() {
		return dao.getAllFileinfo();
	}

	@Override
	public FileInfoVO getFileinfo(int FileNo) {
		return dao.getFileinfo(FileNo);
	}

}

FileList ( controller / servlet)

package kro.or.ddit.upload.controller;

import java.io.IOException;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import kr.or.ddit.vo.FileInfoVO;
import kro.or.ddit.upload.service.FileInfoServiceImpl;
import kro.or.ddit.upload.service.IFileInfoService;


// DB에 저장된 파일 목록을 가져와 View로 보내는 서블릿
@WebServlet("/file/fileList.do")
public class FileList extends HttpServlet {
	private static final long serialVersionUID = 1L;

	
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		IFileInfoService service = FileInfoServiceImpl.getInstance();
		
		// 전체 파일 목록을 가져와 List에 저장하기
		List<FileInfoVO> fileList = service.getAllFileinfo();
		
		// 구해진 전체 파일 목록을 View목록으로 보낸다
		request.setAttribute("fileList", fileList);
		
		request.getRequestDispatcher("/fileupload/fileList.jsp")
		.forward(request, response);
		
	}

	
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		doGet(request, response);
	}

}

 

FileUpload ( controller / servlet )

package kro.or.ddit.upload.controller;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


@WebServlet("/file/fileUpload.do")
public class FileUpload extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//Get방식으로요청하면 FileUpload 홈 페이지로 이동한다.
		
		request.getRequestDispatcher("/fileupload/fileupload.jsp")
		.forward(request, response);
		
	}

	
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// POSt방식으로요청하면 Upload된 파일을 받아서 처리한다.
		doGet(request, response);
	}

}

'Language > Java' 카테고리의 다른 글

[JAVA] 파일_02 : File_Download Form  (0) 2024.06.07
[JQuery] 게시판 만들기_02  (0) 2024.06.05
[JAVA] $.ajax - LprodTest (Ajax / Non Ajax)  (0) 2024.06.05
[JQuery] 메뉴판 만들기_01  (1) 2024.06.04
[JAVA] $.ajax - jsonTest 코드  (0) 2024.06.04
Comments