SERVER(Servlet, JSP)

[JSP] ์ด๋ฏธ์ง€ ๋ทฐ์–ด(์—…๋กœ๋“œ ๋ฐ ์‚ญ์ œ์ฒ˜๋ฆฌ)

developer of the night sky 2023. 10. 18. 17:46

๐Ÿ”ป์ด๋ฏธ์ง€ ๋ทฐ์–ด

  • ์—…๋กœ๋“œํ•œ ์ด๋ฏธ์ง€ ํŒŒ์ผ์„ ๋ทฐ์–ด๋กœ ๋ณด์—ฌ์ฃผ๊ณ  ์‚ญ์ œ๋„ ํ•  ์ˆ˜ ์žˆ๋Š” ํŽ˜์ด์ง€๋ฅผ ๋งŒ๋“ค์–ด๋ณธ๋‹ค.
  • ex18_imageviewer.jsp : ๋ฉ”์ธ ํŒŒ์ผ(์ด๋ฏธ์ง€ ๋ชฉ๋ก๋ณด๊ธฐ)
  • ex18_imageviewer_ok.jsp : ์ด๋ฏธ์ง€ ์—…๋กœ๋“œ ์ฒ˜๋ฆฌ ํŒŒ์ผ
  • ex18_imageviewer_del.jsp : ์ด๋ฏธ์ง€ ์‚ญ์ œ ์ฒ˜๋ฆฌ ํŒŒ์ผ
  • webapp > "pic" ํด๋” ์ƒ์„ฑํ•˜์—ฌ ์ด๋ฏธ์ง€๋ฅผ ํ†ตํ•ฉ๊ด€๋ฆฌํ•˜๋Š” ์ „์šฉ ํด๋”๋ฅผ ๋งŒ๋“ ๋‹ค.

 

ex18_imageviewer.jsp

1. ๋””๋ ‰ํ† ๋ฆฌ ํƒ์ƒ‰

์—…๋กœ๋“œํ•œ ํŒŒ์ผ์„ ๊ด€๋ฆฌํ•˜๋Š” ์ „์šฉํด๋” "pic"์—์„œ ์ด๋ฏธ์ง€๋“ค์„ ํƒ์ƒ‰ํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

๋‚˜์ค‘์— ๋ฐ˜ํ™˜๋œ ๊ฐ’์„ ํ™”๋ฉด์— ์ถœ๋ ฅํ•œ๋‹ค.

<%
	String path = application.getRealPath("/pic");
	File dir = new File(path);
	File[] list = dir.listFiles();
%>

 

2. ํ™”๋ฉด ์ถœ๋ ฅ

for๋ฌธ์œผ๋กœ ์ด๋ฏธ์ง€ ๋ฆฌ์ŠคํŠธ๋ฅผ ํ•˜๋‚˜์”ฉ ํ™”๋ฉด์— ์ถœ๋ ฅํ•œ๋‹ค.

	 <div id="list">
		<% for(File file : list) {%> 
		<div class="item">
			<img src="pic/<%= file.getName()%>">
			<div title="delete" onclick="deleteImage('<%= file.getName()%>')">&times;</div>
		</div>
		<%} %>
	</div>

&times; ์„ ์‚ฌ์šฉํ•˜์—ฌ ์‚ญ์ œ ์•„์ด์ฝ˜๋„ ์ถœ๋ ฅํ•˜์˜€๋‹ค.

&times;์€ HTML ์—”ํ„ฐํ‹ฐ(Entity)๋กœ์„œ, ๋ฌธ์ž "×" (๊ณฑํ•˜๊ธฐ ๊ธฐํ˜ธ)๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.  ํ™”๋ฉด์—๋Š” ์‹ค์ œ๋กœ "×" ์•„์ด์ฝ˜์œผ๋กœ ํ‘œ์‹œ๋œ๋‹ค.

 

 

3. ๋ฐ์ดํ„ฐ ์†ก์‹ 

ex18_imageviewer_ok.jsp ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•œ๋‹ค.

	<form method="POST" action="ex18_imageviewer_ok.jsp" enctype="multipart/form-data">
		<table class="vertical">
			<tr>
				<th>์ด๋ฏธ์ง€</th>
				<td><input type="file" name="attach" required></td>
			</tr>
		</table>
		<div>
			<input type="submit" value="์ด๋ฏธ์ง€ ์—…๋กœ๋“œ">
		</div>	
	</form>

 

4. ์ด๋ฏธ์ง€ ์‚ญ์ œ ๋ฒ„ํŠผ

์‚ญ์ œ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ํ•œ๋ฒˆ ๋” ์‚ฌ์šฉ์ž์—๊ฒŒ ํ™•์ธ ๋ฉ”์‹œ์ง€๋ฅผ ๋„์šด ํ›„ ex18_imageviewer_del.jsp๋ฅผ ํ†ตํ•ด ์ด๋ฏธ์ง€๋ฅผ "pic" ํด๋”์—์„œ ์‚ญ์ œํ•œ๋‹ค.

	<script>
		function deleteImage(filename) {
			if (confirm('delete?')) {
				location.href = 'ex18_imageviewer_del.jsp?filename=' + filename;
			}
		}
	</script>

 


ex18_imageviewer_ok.jsp 

  • ๋‹จ์ผ ํŒŒ์ผ ์—…๋กœ๋“œ ํ–ˆ๋˜ ๋ฐฉ๋ฒ•๋Œ€๋กœ ์ž‘์„ฑํ•œ๋‹ค.
  • ์ด๋ฏธ์ง€๋ฅผ ํด๋”์— ์ถ”๊ฐ€ํ•˜๊ณ  ex18_imageviewer.jsp ํŽ˜์ด์ง€๋กœ ๋‹ค์‹œ ๋Œ์•„๊ฐ„๋‹ค.
  • application.getRealPath("/pic")์„ ํ†ตํ•ด 'C:\class\code\server\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\JSPTest\pic' ๋กœ์ปฌ ๊ฒฝ๋กœ๋กœ ๋“ค์–ด๊ฐ„๋‹ค.
<%@page import="com.oreilly.servlet.multipart.DefaultFileRenamePolicy"%>
<%@page import="com.oreilly.servlet.MultipartRequest"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    
<%
	String path = application.getRealPath("/pic");
	int size = 1024*1024*100;
	
	try {
		MultipartRequest multi = new MultipartRequest(
					request,
					path,
					size,
					"UTF-8",
					new DefaultFileRenamePolicy()
				);
		
	} catch(Exception e) {
		e.printStackTrace();
	}
	
	response.sendRedirect("ex18_imageviewer.jsp");
	
%>    

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>ex18_imageviewer_ok</title>
<link rel="stylesheet" href="http://pinnpublic.dothome.co.kr/cdn/example-min.css">
</head>
<body>
	<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
	<script src="http://pinnpublic.dothome.co.kr/cdn/example-min.js"></script>
</body>
</html>

 


ex18_imageviewer_del.jsp 

  • C:\class\code\server\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\JSPTest\pic
  • "pic" ํด๋”์—์„œ ํŒŒ์ผ์„ ์‚ญ์ œํ•˜๋‚˜ ํ›„ ex18_imageviewer.jsp ํŽ˜์ด์ง€๋กœ ๋‹ค์‹œ ๋Œ์•„๊ฐ„๋‹ค.
<%@page import="java.io.File"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    
<%
	String filename = request.getParameter("filename");

	String path = application.getRealPath("/pic");
	
	File file = new File(path + "\\" + filename);
	
	if(file.exists()) {
		file.delete();
	}
	
	response.sendRedirect("ex18_imageviewer.jsp");
	
%>    
    
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>ex18_imageviewer_del</title>
<link rel="stylesheet" href="http://pinnpublic.dothome.co.kr/cdn/example-min.css">
</head>
<body>
	<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
	<script src="http://pinnpublic.dothome.co.kr/cdn/example-min.js"></script>
</body>
</html>

 

ex18_imageviewer.jsp