23/03/24(JSP+파일 업로드+Servlet)

조영문·2023년 3월 24일
0

JSP

목록 보기
6/13

파일 업로드



fdeleteProc.jsp

<%@ page contentType="text/html; charset=UTF-8"%>
<jsp:useBean id="mgr" class="ch13.FileloadMgr"/>
<%
	String snum[] = request.getParameterValues("fch");
	int num[] = new int[snum.length-1];
	for(int i=0;i<num.length;i++){
		num[i]=Integer.parseInt(snum[i+1]);
	}
	mgr.deleteFile(num);
	response.sendRedirect("flist.jsp");
%>

fdownload.jsp

<%@page import="java.io.File"%>
<%@page import="ch13.FileloadMgr"%>
<%@page import="java.io.FileInputStream"%>
<%@page import="java.io.BufferedOutputStream"%>
<%@page import="java.io.BufferedInputStream"%>
<%@page contentType="application; charset=UTF-8"%>
<%
	try {
		String filename = request.getParameter("upFile");
		File file = new File(FileloadMgr.SAVEFOLDER + File.separator + filename);
		byte b[] = new byte[(int) file.length()];

		response.setHeader("Accept-Ranges", "bytes");
		String strClient = request.getHeader("User-Agent");
		if (strClient.indexOf("Trident") > 0 || strClient.indexOf("MSIE") > 0) {
			response.setContentType("application/smnet;charset=EUC-KR");
			response.setHeader("Content-Disposition",
					"filename=" + new String(filename.getBytes("EUC-KR"), "8859_1") + ";");
		} else {
			response.setContentType("application/smnet;charset=EUC-KR");
			response.setHeader("Content-Disposition",
					"attachment;filename=" + new String(filename.getBytes("EUC-KR"), "ISO-8859-1") + ";");
		}
		out.clear();
		if (file.isFile()) {
			BufferedInputStream fin = new BufferedInputStream(new FileInputStream(file));
			BufferedOutputStream outs = new BufferedOutputStream(response.getOutputStream());
			int read = 0;
			while ((read = fin.read(b)) != -1) {
				outs.write(b, 0, read);
			}
			outs.close();
			fin.close();
		}
	} catch (Exception e) {
		e.printStackTrace();
	}
%>

fileSelect.jsp

<!-- ch13/fileSelect.jsp -->
<%@ page contentType="text/html; charset=UTF-8"%>
<form method="post" enctype="multipart/form-data"
action="viewPage.jsp">
user : <input name="user" value="홍길동"><br>
title : <input name="title" value="파일업로드"><br>
file : <input type="file" name="myfile" value="upload"><br>
<input type="submit" value="파일전송">
</form>

fupload.jsp

<!-- fupload.jsp -->
<%@page contentType="text/html; charset=UTF-8"%>
<!doctype html>
<html>
<head>
<link href="style.css" rel="stylesheet" type="text/css">
<script>
	function check() {
		frm = document.forms[0];
		if(frm.upFile.value==0){
			alert("파일을 선택하세요.");
			return
		}
		frm.submit();
	}
</script>
</head>
<body>
<div align="center">
<h2>File Upload</h2>
<form method="post" action="fuploadProc.jsp?flag=update" 
enctype="multipart/form-data" >
<table border="1">
 <tr>
 	<td>파일선택</td>
 	<td><input type="file" name="upFile"></td>
 </tr>
 <tr>
 	<td colspan="2">
 		<input type="button" value="파일업로드" onclick="check()">
 	</td>
 </tr>
</table>
</form>
<a href="flist.jsp">파일리스트</a>
</div>
</body>
</html>

fuploadProc.jsp

<%@ page contentType="text/html; charset=UTF-8"%>
<jsp:useBean id="mgr" class="ch13.FileloadMgr"/>
<%
	String flag = request.getParameter("flag");
	mgr.uploadFile(request);
	response.sendRedirect("flist.jsp");
%>

viewPage.jsp

<%@page import="java.io.File"%>
<%@page import="com.oreilly.servlet.multipart.DefaultFileRenamePolicy"%>
<%@page import="com.oreilly.servlet.MultipartRequest"%>
<%@ page contentType="text/html; charset=UTF-8"%>
<%
	//업로드 파일 저장 위치
	final String SAVEFOLDER = "C:/Jsp/myapp/src/main/webapp/ch13/storage/";
	//업로드 파일명 인코딩
	final String ENCODING = "UTF-8";
	//업로드 파일 크기
	final int MAXSIZE = 1024*1024*20;	//20MB
	try{
		//DefaultFileRenamePolicy = 이름이 같으면 자동으로 이름 뒤에 인덱스 추가 
		MultipartRequest multi = 
				new MultipartRequest(
						request,
						SAVEFOLDER,
						MAXSIZE, 
						ENCODING, 
						new DefaultFileRenamePolicy()
						);
		String user = multi.getParameter("user");
		String title = multi.getParameter("title");
		String fileName = multi.getFilesystemName("myfile");
		String fileType = multi.getContentType("myfile");
		//파일정보
		File f = multi.getFile("myfile");
		long len=0;
		if(f!=null){
			len=f.length();
		}
		out.println("user : " + user + "<br>");
		out.println("title : " + title + "<br>");
		out.println("파일명 : " + fileName + "<br>");
		out.println("파일타입 : " + fileType + "<br>");
		out.println("파일크기 : " + len + "byte");
	}catch(Exception e){
		e.printStackTrace();
	}
%>

Servlet

Servlet java 파일

ExServlet1.java

package ch08;

import java.io.IOException;
import java.io.PrintWriter;

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 javax.servlet.http.HttpSession;


@WebServlet("/ch08/exServlet1")
public class ExServlet1 extends HttpServlet {
	private static final long serialVersionUID = 1L;
	
	@Override
	protected void service(HttpServletRequest request, 
			HttpServletResponse response) throws ServletException, IOException {
		response.setContentType("text/html; charset=UTF-8");
		//응답 스트림
		PrintWriter out = response.getWriter();
		HttpSession session = request.getSession();
		out.println("<html>");
		out.println("<body>");
		out.println("<h1>이클립스로 서블릿 만들기</h1>");
		out.println("세션ID : " + session.getId());
		out.println("</body>");
		out.println("</html>");
	}
	
}

ExServlet2.java

package ch08;

import java.io.IOException;
import java.io.PrintWriter;

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 javax.servlet.http.HttpSession;


@WebServlet("/ch08/exServlet2")
public class ExServlet2 extends HttpServlet {
	private static final long serialVersionUID = 1L;
	
	// 서블릿 라이프 사이클 : init, service, destory
	@Override //서블릿 처음 요청 한번 만 실행
	public void init() throws ServletException {
		System.out.println("init 호출");
	}
	@Override // Client가 요청이 있을 때 마다 실행
	protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		System.out.println("service 호출");
	}
	@Override // 서비스 종료 및 서블릿 코드가 수정이 될 때
	public void destroy() { 
		System.out.println("destory 호출");
	}
}

GetServlet.java


package ch08;

import java.io.IOException;
import java.io.PrintWriter;

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("/ch08/getServlet")
public class GetServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    @Override
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    	response.setContentType("text/html; charset=UTF-8");
    	PrintWriter out = response.getWriter();
    	String msg = request.getParameter("msg");
    	out.println("<h1>Get Servlet</h1>");
    	out.println("msg : "+msg);
	}

}

PostServlet.java


package ch08;

import java.io.IOException;
import java.io.PrintWriter;

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("/ch08/postServlet")
public class PostServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	@Override
	protected void doPost(HttpServletRequest request, HttpServletResponse response) 
			throws ServletException, IOException {
		response.setContentType("text/html; charset=UTF-8");
		PrintWriter out = response.getWriter();
		String id = request.getParameter("id");
		String pwd = request.getParameter("pwd");
		String email = request.getParameter("email");
		out.println("<h1>Post Servlet</h1>");
		out.println("id : "+id);
		out.println("pwd : "+pwd);
		out.println("email : "+email);
	}
}

LoginServlet.java

package ch08;

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;
import javax.servlet.http.HttpSession;

@WebServlet("/ch08/loginServlet")
public class LoginServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		String id = request.getParameter("id");
		String pwd = request.getParameter("pwd");
		HttpSession session = request.getSession();
		if(id!=null&&pwd!=null) {
			session.setAttribute("idKey", id);
		}
		response.sendRedirect("login.jsp");
	}

}

ExServlet.java

JSP 파일

getJsp.jsp

<!-- getJsp.jsp -->
<%@page contentType="text/html; charset=UTF-8"%>
<h3>Get 방식 서블릿 호출</h3>
<form method="get" action="getServlet">
	msg : <input name="msg" value="축하~ 코로나 종식">
	<input type="submit" value="전송">
</form>

postJsp.jsp

<%@ page contentType="text/html; charset=UTF-8"%>
<html>
<head>
<body>
<h1>Post Servlet 방식</h1>
<form method="post" action="postServlet">
id : <input name="id" value="홍길동"><br/>
pwd : <input type="password" name="pwd" value="1234"><br/>
email : <input name="email" value="aaa@aaa.com"><br/>
<input type="submit" value="가입">
</form>
</body>
</html>

logout.jsp

<%@ page contentType="text/html; charset=UTF-8"%>
<%
		//서버에 만들어진 세션 객체를 제거 -> 새로운 세션객체가 생성
		session.invalidate();
		//현재 페이지를 login.jsp 호출
		response.sendRedirect("login.jsp");
%>

login.jsp


<%@ page contentType="text/html; charset=UTF-8"%>
<%
		//세션에 id값을 가져온다.
		String id = (String)session.getAttribute("idKey");
%>
<h1>로그인</h1>
<%
		if(id!=null){
%>
<!-- 로그인 된 영역 -->
<%=id%>님 반갑습니다.
<a href="logout.jsp">로그아웃</a>
<%}else{%>
<!-- 로그인 안된 영역 -->
<form method="post" action="loginServlet">
id : <input name="id"><br/>
pwd : <input type="password" name="pwd"><br/>
<input type="submit" value="로그인">
</form>
<%}%>

0개의 댓글