본문 바로가기
문제풀이/쉽게 배우는 JSP 웹프로그래밍

[쉽게 배우는 JSP 웹프로그래밍] 7장 연습문제

by 그적 2020. 10. 19.

1. 파일 업로드를 위한 form 태그 내에 반드시 설정해야 하는 기법은 무엇인가?

 

<form action="처리할 페이지.jsp" enctype="multipart/form-data" method="post">
     <input type="file" name="file1">
     <input type="submit" value="submit">
</form>

 ① form 태그의 action 속성은 파일 업로드를 처리할 페이지를 넣어준다.

 ② form 태그의 enctype 속성은 multipart/form-data 로 지정해준다.

 ③ form 태그의 method 속성은 post 로 재정해준다.

 ④ input 태그의 type 속성에 file이 있어야 파일 업로드를 할 수 있다.

 

 

2. 파일을 서버에 업로드하는 처리 기법에 대해 간단히 설명하시오.

 

MultipartRequest 클래스를 이용하거나 Common-FileUpload를 통해 파일을 업로드할 수 있다.

MultipartRequest 클래스는 cos.jar 파일을 추가하고, MultipartRequest 클래스 객체를 생성하여 생성된 MultipartRequest 객체의 메서드를 사용하여 처리한다. Common-FileUpload는 DiskFileUpload 객체를 생성하여 제공해주는 메소드를 통해 파일을 처리하고 업로드한다. Common-FileUpload를 이용하려면 라이브러리에 commons-fileupload.jar 파일과 commons-io.jar 파일이 존재해야 한다.

 

 

3. MultipartRequest 클래스를 이용하여 다음 조건에 맞게 JSP 애플리케이션을 만들고 실행 결과를 확인하시오.

// fileupload01.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>File upload</title>
</head>
<body>

<form action="fileupload01_process.jsp" enctype="multipart/form-data" method="post">
<p>파일 : <input type="file" name="file1">
<p><input type="submit" value="파일 업로드">
</form>

</body>
</html>

// fileupload01_process.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="com.oreilly.servlet.*" %>
<%@ page import="com.oreilly.servlet.multipart.*" %>
<%@ page import="java.io.*" %>
<%@ page import="java.util.*" %>

<%
DefaultFileRenamePolicy policy = new DefaultFileRenamePolicy();

MultipartRequest multi = new MultipartRequest(request,
		"C:\\Users\\지형\\eclipse-workspace\\JSPBook\\WebContent\\ch07\\upload", 10*1024*1024, "utf-8", policy);

String file = (String)multi.getFileNames().nextElement();
%>

<p> 요청 파라미터 이름 :  <%= file %>
<p> 실제 파일 이름 : <%= multi.getOriginalFileName(file) %>
<p> 저장 파일 이름 : <%= multi.getFilesystemName(file) %>
<p> 파일 콘텐츠 유형 : <%= multi.getContentType(file) %>
<p> 파일 크기 : <%= file.length() %>

 

 

4. Commons-FileUpload 패키지를 이용하여 다음 조건에 맞게 JSP 애플리케이션을 만들고 실행결과를 확인하시오.

// fileupload02.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>File Upload</title>
</head>
<body>

<form action="fileupload02_process.jsp" method="post" enctype="multipart/form-data">
<p> 파일 : <input type="file" name="file1">
<p> <input type="submit" value="파일 업로드">
</form>

</body>
</html>

// fileupload02_process.jsp

<%@ page contentType="text/html; charset=utf-8" %>
<%@ page import="org.apache.commons.fileupload.*" %>
<%@ page import="java.io.*" %>
<%@ page import="java.util.*" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>File Upload</title>
</head>
<body>

<%
DiskFileUpload upload = new DiskFileUpload();
List list = upload.parseRequest(request);
Iterator data = list.iterator();
File file = null;
FileItem fileitem = null;

while(data.hasNext()){
	fileitem = (FileItem)data.next();
	if(!fileitem.isFormField()){
		String filename = fileitem.getName();
		filename = filename.substring(filename.lastIndexOf("\\")+1);
		file = new File("C:\\Users\\지형\\eclipse-workspace\\JSPBook\\WebContent\\ch07\\upload\\" + filename);
		
		fileitem.write(file);
	}
}
%>
<p> 요청 파라미터 이름 : <%= fileitem.getFieldName() %>
<p> 저장 파일 이름 : <%= fileitem.getName() %>
<p> 파일 콘텐츠 유형 : <%= fileitem.getContentType() %>
<p> 파일 크기 : <%= file.length() %>

</body>
</html>

 

 

5. 다음 조건에 맞게 도서 웹 쇼핑몰을 위한 웹 애플리케이션을 만들고 실행 결과를 확인하시오.

// 추가된 파일들도 있으므로 유의하고, 라이브러리 구조는 아래와 같으므로 알맞게 변경하도록 하자.

부트 트랩 파일도 올려두었다.

bootstrap.min.css
0.15MB

 

1) Java Resources 폴더 > src 폴더 > dao 패키지 > ProductRepository 클래스

book_A.setFilename("P1234.png");

 각각의 Product 객체에 파일명을 넣어준다.

 

2) Java Resources 폴더 > src 폴더 > dto 패키지 > Product 클래스

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

 적어둔 변수들 아래에 filename 변수를 추가하고, getFilename(), setFilename() 메소드도 추가해준다.

 

3) 나머지 파일들(파일 절대 경로만 본인 컴퓨터에 저장된 이미지 경로로 변경해주자.)

addProduct.jsp
0.00MB
date.jsp
0.00MB
footer.jsp
0.00MB
menu.jsp
0.00MB
processAddProduct.jsp
0.00MB
product.jsp
0.00MB
products.jsp
0.00MB
welcome.jsp
0.00MB

댓글