๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๋ ˆ๊ฑฐ์‹œ

2022.1.6์˜ ๊ธฐ๋ก

by GroovyArea 2022. 1. 7.

- ํ•˜๋ฃจ ์ •๋ฆฌ - 

  • Servlet ๋ณต์Šต ๋ฐ ์ •๋ฆฌ (์ฟ ํ‚ค, ํŒŒ์ผ ์—…๋กœ๋“œ)
  • ์„ธ๋ฏธํ”„๋กœ์ ํŠธ ํšŒ์˜(๋””์Šค์ฝ”๋“œ)

- ์งˆ๋ฌธ ์‚ฌํ•ญ -

 

> ServletContext : ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์š”์ฒญํ•œ ์ปจํ…์ŠคํŠธ ์ •๋ณด๋ฅผ ์ €์žฅํ•œ ์ธ์Šคํ„ด์Šค / ServletConfig : ์ปจํ…์ŠคํŠธ ๊ด€๋ จ ํ™˜๊ฒฝ์ •๋ณด๋ฅผ ์ €์žฅํ•œ ์ธ์Šคํ„ด์Šค์˜ ์ฐจ์ด?

=> ๋‹จ์–ด ๋œป ๊ทธ๋Œ€๋กœ ์ดํ•ดํ•˜๋ฉด ๋จ, WAS๊ฐ€ ๋งŒ๋“ค์–ด์ฃผ๊ณ  get๋ฉ”์†Œ๋“œ๋กœ ์ปจํ…์ŠคํŠธ ์ธ์Šคํ„ด์Šค๋ฅผ ๊ฐ€์ ธ์™€์„œ ์‚ฌ์šฉํ•จ.

 

> ํŒ€ํ”„๋กœ์ ํŠธ์—์„œ HTMLํŒŒ์ผ์ด ๊นจ์ง€๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์€๋ฐ ์–ด๋–กํ• ์ง€?

=> ์›นํŽ˜์ด์ง€ ์ž์ฒด ํฌ๋กค๋ง ๋ง‰์•„๋†“์Œ. ์›น ํŽ˜์ด์ง€์—์„œ ์†Œ์Šค๋ณด๊ธฐ๋กœ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐฉ๋ฒ•.

 

> (SVN) ์—ฌ๋Ÿฌ๋ช…์ด ๊ฐ™์€ ํŽ˜์ด์ง€๋ฅผ ์ฝ”๋”ฉํ–ˆ๋Š”๋ฐ ์ปค๋ฐ‹ํ•˜๊ณ  ๋‹ค๋ฅธ ์‚ฌ๋žŒ update๋กœ ์ด์–ด ๋ฐ›์•„์„œ ๋˜ 
์ปค๋ฐ‹ํ–ˆ๊ณ  3๋ฒˆ์งธ์ธ ๋‚˜๋Š” ๋‘๋ฒˆ ์ด์ƒ ๋ฆฌ๋ฒ„์ „ ๋„˜๋ฒ„๊ฐ€ ๊ฑฐ์ณ์ง„ ์ƒํƒœ์—์„œ ์ปค๋ฐ‹ํ–ˆ๋Š”๋ฐ ์—๋Ÿฌ ๋ฐœ์ƒ? (Override Commit๋„ ์•ˆ๋จ)

=> ๋ฐฑ์—… ํ›„ ์ฒดํฌ์•„์›ƒ์ด ์† ํŽธํ•จ.  ๋‘๋ฒˆ ์ด์ƒ์€ ๊ผฌ์ธ๋‹ค! (Oh's official)

 

> ์„œ๋ฒ„ ์›น ๋””๋ ‰ํ† ๋ฆฌ์— ์ €์žฅ๋œ ์ปจํ…์ŠคํŠธ๋Š” ์‚ฌ๋ผ์ง€์ง€ ์•Š๋Š”๊ฐ€?

=> ๋‚ด๊ฐ€ ์ˆ˜๋™์œผ๋กœ ์ง€์šฐ๋ฉด ๋˜์ง€๋งŒ ๊ตณ์ด? ์›น ์ž์› ์ž์ฒด๊ฐ€ ์ฐจ์ง€ํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ๋Š” ์ƒ๊ฐ๋ณด๋‹ค ์ ๋‹ค. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„ ์š”์ฒญ ์‹œ ์ž์›์„ ์ œ๊ณตํ•˜์—ฌ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๋•Œ๋ถ€ํ„ฐ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์‚ฌ์šฉ๋จ. (๋Œ€ํ˜• ์„œ๋ฒ„ ์ ‘์† ์‹œ ํด๋ผ์ด์–ธํŠธ ์ ‘์† ๋ถ„์‚ฐ ๊ฐœ๋…์˜ ์ด์œ  ์„ค๋ช…) ์„œ๋ฒ„๋Š” ์ž์› ์ž์ฒด๋ฅผ ์ œ๊ณตํ•˜๊ธฐ๋งŒ ํ• ๋ฟ ํด๋ผ์ด์–ธํŠธ๋Š” ์ž์›์„ ์ œ๊ณต๋ฐ›์•„ ์‚ฌ์šฉ. ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰๋ณด๋‹ค ์ ‘์†๋Ÿ‰์ด ๋งŽ์•„์งˆ ๋•Œ๊ฐ€ ๊ทผ๋ณธ์ ์ธ ๋ฌธ์ œ์ž„.


- ์˜ค๋Š˜ ๊ณต๋ถ€ ๋‚ด์šฉ - 

 

Servlet

  • ์ž…๋ ฅ ์ŠคํŠธ๋ฆผ ์ค‘์š”
  • HTML์—์„œ ์„œ๋ธ”๋ฆฟ src๋กœ ์š”์ฒญ ๊ฐ€๋Šฅ
  • ์„œ๋ธ”๋ฆฟ์€ WAS์— ์˜ํ•ด ํ”„๋กœ์ ํŠธ๋“ค์„ ์›น ์ž์›์œผ๋กœ ๋งŒ๋“ ๋‹ค
  • ๊ฒ€์ƒ‰๋Ÿ‰์€ 2kb ์•ฝ 2์ฒœ์ž๋กœ ์ œํ•œ
  • ์ž…๋ ฅ๊ฐ’์— ๋Œ€ํ•œ ๊ฒ€์ฆ์€ ๋ธŒ๋ผ์šฐ์ €์—์„œ ํ•˜์ง€๋งŒ ์„œ๋ฒ„์—์„œ๋„ ํ•ด์•ผ๋œ๋‹ค๋Š”๊ฒŒ ๋ฒ• (๋ณด์•ˆ์ƒ ๊ถŒ์žฅ)
  • ๋น„์ •์ƒ์ ์ธ ์ ‘๊ทผ์€ ์—๋ŸฌํŽ˜์ด์ง€ ์ถœ๋ ฅ์ด๋‚˜ location ๊ฐ์ฒด ์ด์šฉ
  • ํŒŒ์ผ์„ ์–ป์–ด์˜ค๋Š”๊ฒƒ์€ ์ˆœ์ˆ˜ํ•œ ์›์‹œ๋ฐ์ดํƒ€๋กœ ์–ป์–ด์˜ค๊ธฐ ๋•Œ๋ฌธ์— ๋ฌธ์ž์—ด๋กœ ์–ป์–ด์˜ค๋Š”๊ฑด ๋ถˆ๊ฐ€๋Šฅ.
  • ํŒŒ์ผ์„ ์ž…๋ ฅ๋ฐ›์•„ ์„œ๋ฒ„์— ์ €์žฅ - upload
  • ํŒŒ์ผ์„ ๋ฐ›์•„ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๊ฐ–๊ณ  ๊ฐ - download
  • ์ž…๋ ฅํŽ˜์ด์ง€์—์„œ ์ „๋‹ฌ๋œ ๋ฉ€ํ‹ฐํŒŒํŠธ ํผ๋ฐ์ดํƒ€๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋ธ”๋ฆฟ ์ž‘์„ฑ // => Apache ๊ทธ๋ฃน์—์„œ ๋ฐฐํฌํ•œ commons-fileupload ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ํด๋ž˜์Šค ์‚ฌ์šฉ - ์„ ํƒ์  ํŒŒ์ผ ์—…๋กœ๋“œ (์–ด๋ ต๋‹ค ๊ณ ๊ธ‰์ž์šฉ) // => Oreilly ๊ทธ๋ฃน์—์„œ ๋ฐฐํฌํ•œ cos ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ํด๋ž˜์Šค ์‚ฌ์šฉ - ๋ฌด์กฐ๊ฑด ํŒŒ์ผ ์—…๋กœ๋“œ (๊ฒ€์ฆ ์ž์ฒด๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•จ)
  • ํด๋” : ์œˆ๋„์šฐ์˜ ๋…ผ๋ฆฌ์ ์ธ ๊ณต๊ฐ„
  • ๋””๋ ‰ํ† ๋ฆฌ : ์œ ๋‹‰์Šค.๋งฅ์˜ ๋ฌผ๋ฆฌ์ ์ธ ๊ณต๊ฐ„ (ํŒŒ์ผ ๊ฐœ๋…)
  • ์ธํ„ฐํŽ˜์ด์Šค ๊ฐ์ฒด ์ƒ์„ฑ ๋ถˆ๊ฐ€ ⇒ ์ƒ์†๋ฐ›๋Š” ํด๋ž˜์Šค๋กœ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•
  • ์„œ๋ฒ„ ๋ฆฌ๋กœ๋“œ ํ›„ ์›น ๋””๋ ‰ํ† ๋ฆฌ ํŒŒ์ผ ์‚ญ์ œ๋˜๋Š” ๊ฑธ ๋ฐฉ์ง€ํ•˜๋ ค๋ฉด ์ฐจ๋ผ๋ฆฌ ์›Œํฌ์ŠคํŽ˜์ด์Šค ํŒŒ์ผ์„ ์ €์žฅํ•ด๋ผ

Cookie

  • ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„์˜ ์—ฐ๊ฒฐ์˜ ์ง€์†์„ฑ์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด

> ์ „๋‹ฌ ๋˜๋Š” ๊ฐ’์ด ์—ฌ๋Ÿฌ๊ฐœ์ธ ๊ฒฝ์šฐ?

		//HttpServletRequest.getParameterValues(String name) : ๊ฐ™์€ ์ด๋ฆ„์œผ๋กœ ์ „๋‹ฌ๋˜๋Š” ๋ชจ๋“  ๊ฐ’๋“ค์„
		//์–ป์–ด์™€ ๋ฌธ์ž์—ด ๋ฐฐ์—ด๋กœ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฉ”์†Œ๋“œ
		// => ๋‹ค์ค‘ ์„ ํƒ ๊ธฐ๋Šฅ์˜ ์ž…๋ ฅํƒœ๊ทธ(checkbox, select ๋“ฑ)๋กœ ์ „๋‹ฌ๋œ ๊ฐ’์„ ๋ฐ˜ํ™˜๋ฐ›์„ ๋•Œ ์‚ฌ์šฉ
		String[] hobby=request.getParameterValues("hobby");

> ํŒŒ์ผ ์—…๋กœ๋“œ ํ˜•์‹์€ multipart/form-data ํ˜•์‹์„ ์ด์šฉํ•˜๋ผ!

<!-- ์‚ฌ์šฉ์ž๋กœ๋ถ€ํ„ฐ ํŒŒ์ผ์„ ์ž…๋ ฅ๋ฐ›์•„ ์›นํ”„๋กœ๊ทธ๋žจ์„ ์š”์ฒญํ•˜์—ฌ ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ฐ˜๋“œ์‹œ method 
 ์†์„ฑ๊ฐ’์„ [POST]๋กœ ์„ค์ •ํ•˜๊ณ  enctype ์†์„ฑ๊ฐ’์„ [multipart/form-data]๋กœ ์„ค์ • -->
<!-- enctype ์†์„ฑ : [application/x-www-form-urlencoded] ๋˜๋Š” [multipart/form-data] ์ค‘ ํ•˜๋‚˜๋ฅผ ์†์„ฑ๊ฐ’์œผ๋กœ ์„ค์ • -->
<!-- => [application/x-www-form-urlencoded] : ์ž…๋ ฅ๊ฐ’์„ ์ธ์ฝ”๋”ฉ ์ฒ˜๋ฆฌ๋œ ๋ฌธ์ž๊ฐ’์œผ๋กœ ์ „๋‹ฌ(๊ธฐ๋ณธ) - ํŒŒ์ผ ์ „๋‹ฌ ๋ถˆ๊ฐ€๋Šฅ -->
<!-- => [multipart/form-data] : ๋ชจ๋“  ์ž…๋ ฅ๊ฐ’์„ ์›์‹œ๋ฐ์ดํƒ€(๋ฉ€ํ‹ฐํŒŒํŠธ ํผ๋ฐ์ดํƒ€)๋กœ ์ „๋‹ฌ - ํŒŒ์ผ ์ „๋‹ฌ ๊ฐ€๋Šฅ -->
<form action="view.itwill" method="post" enctype="multipart/form-data">

> ํŒŒ์ผ์„ ๋ฐ˜ํ™˜๋ฐ›์•„ ์ „๋‹ฌํ•˜๋Š” ์„œ๋ธ”๋ฆฟ ์ถœ๋ ฅ์‹œ ์ „๋‹ฌ๋œ ๊ฐ’์— ๋Œ€ํ•˜์—ฌ ์บ๋ฆญํ„ฐ ์…‹์„ ๋ณ€๊ฒฝํ•ด์ค˜์•ผํ•จ!

//POST ๋ฐฉ์‹์œผ๋กœ ์š”์ฒญํ•˜์—ฌ ์ „๋‹ฌ๋œ ๊ฐ’์— ๋Œ€ํ•œ ์บ๋ฆญํ„ฐ์…‹ ๋ณ€๊ฒฝ
		request.setCharacterEncoding("utf-8");

> ๋ฉ€ํ‹ฐํŒŒํŠธ ํผ๋ฐ์ดํƒ€๋Š” request ๋ฉ”์‹œ์ง€์˜ ์ž…๋ ฅ์ŠคํŠธ๋ฆผ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ˜ํ™˜๋ฐ›์•„ ์‚ฌ์šฉ!

InputStreamReader in=new InputStreamReader(request.getInputStream(), "utf-8");

๋ฉ€ํ‹ฐํŒŒํŠธ ํผ๋ฐ์ดํƒ€๋ฅผ ์ด์šฉํ•˜์—ฌ ํŒŒ์ผ์„ ์˜จ์ „ํžˆ ๊ฐ€์ ธ์˜ค๊ณ  ์‹ถ์„ ๋• cos jar ํŒŒ์ผ์„ ์ž„ํฌํŠธ ์‹œ์ผœ์ฃผ๋ฉด Dynamic Project ์ธ ๊ฒฝ์šฐ๋Š” ์ž๋™์œผ๋กœ ์›น ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ์ž„ํฌํŠธ๋œ๋‹ค.

 

> ๋น„์ •์ƒ์ ์ธ ์š”์ฒญ์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ

if(request.getMethod().equals("GET")) {
			response.sendRedirect("file_upload.html");
			return;
		}

=> ๊ฒŸ ๋ฐฉ์‹ ์š”์ฒญ ์‹œ ํŒŒ์ผ์—…๋กœ๋“œ ํŽ˜์ด์ง€๋กœ ๋˜๋Œ๋ ค ๋ณด๋ƒ„

 

>  ์ „๋‹ฌ๋œ ํŒŒ์ผ์„ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ ์„œ๋ฒ„ ๋””๋ ‰ํ† ๋ฆฌ์˜ ์‹œ์Šคํ…œ ๊ฒฝ๋กœ๋ฅผ ๋ฐ˜ํ™˜๋ฐ›์•„ ์ €์žฅ
 => ์ž‘์—… ๋””๋ ‰ํ† ๋ฆฌ(WorkSpace)๊ฐ€ ์•„๋‹Œ ์›น๋””๋ ‰ํ† ๋ฆฌ(WebApps)์˜ ์‹œ์Šคํ…œ ๊ฒฝ๋กœ ๋ฐ˜ํ™˜
> ์ฃผ์˜)WAS ํ”„๋กœ๊ทธ๋žจ ์‹œ์ž‘์‹œ ์ž‘์—… ๋””๋ ‰ํ† ๋ฆฌ์˜ ํ”„๋กœ์ ํŠธ๊ฐ€ ์›น๋””๋ ‰ํ† ๋ฆฌ์— ๋™๊ธฐํ™” ์ฒ˜๋ฆฌ๋˜์–ด ์ปจํ…์ŠคํŠธ๋กœ ๋ณ€ํ™˜
 => ์ž‘์—… ๋””๋ ‰ํ† ๋ฆฌ์—๋Š” ์—…๋กœ๋“œ ํŒŒ์ผ์ด ์—†์œผ๋ฏ€๋กœ ๋™๊ธฐํ™” ์ฒ˜๋ฆฌ๋  ๋•Œ ์›น๋””๋ ‰ํ† ๋ฆฌ์˜ ์—…๋กœ๋“œ ํŒŒ์ผ์ด ์‚ญ์ œ 

		String saveDirectory=request.getServletContext().getRealPath("/upload");

MultipartRequest ํด๋ž˜์Šค๋กœ ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ
 => MultipartRequest : ๋ฉ€ํ‹ฐํŒŒํŠธ ํผ๋ฐ์ดํƒ€๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ์ธ์Šคํ„ด์Šค
 => MultipartRequest ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ๋ชจ๋“  ์ž…๋ ฅํŒŒ์ผ์„ ์ „๋‹ฌ๋ฐ›์•„ ์„œ๋ฒ„ ๋””๋ ‰ํ† ๋ฆฌ์— ์ €์žฅ
MultipartRequest(HttpServletRequest request, String saveDirectory, int maxPostSize
 , String encoding, FileRenamePolicy policy)
 => request : ์š”์ฒญ์ •๋ณด๋ฅผ ์ €์žฅํ•œ HttpServletRequest ์ธ์Šคํ„ด์Šค ์ „๋‹ฌ
 => saveDirectory : ์ „๋‹ฌ ํŒŒ์ผ์„ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ ์„œ๋ฒ„ ๋””๋ ‰ํ† ๋ฆฌ์˜ ์‹œ์Šคํ…œ ๊ฒฝ๋กœ ์ „๋‹ฌ
 => maxPostSize : ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅํ•œ ๋ฉ€ํ‹ฐํŒŒํŠธ ํผ๋ฐ์ดํƒ€์˜ ํฌ๊ธฐ ๋‹จ์œ„ - ๋‹จ์œ„ : Byte
 => encoding : ๋ฉ€ํ‹ฐํŒŒํŠธ ํผ๋ฐ์ดํƒ€์— ์ €์žฅ๋œ ์ „๋‹ฌ๊ฐ’์˜ ์บ๋ฆญํ„ฐ์…‹ ์ „๋‹ฌ
 => policy : FileRenamePolicy ์ธ์Šคํ„ด์Šค ์ „๋‹ฌ
FileRenamePolicy : ํŒŒ์ผ ์—…๋กœ๋“œ ์ฒ˜๋ฆฌ์‹œ ์ž…๋ ฅํŒŒ์ผ๊ณผ ๊ฐ™์€ ์ด๋ฆ„์ด ํŒŒ์ผ์ด ์—…๋กœ๋“œ ๋˜๋Š”
์„œ๋ฒ„ ๋””๋ ‰ํ† ๋ฆฌ์— ์ด๋ฏธ ์กด์žฌํ•  ๊ฒฝ์šฐ ์ „๋‹ฌํŒŒ์ผ์˜ ์ด๋ฆ„์„ ์ž๋™์œผ๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ์ธ์Šคํ„ด์Šค
 => FileRenamePolicy ์ธ์Šคํ„ด์Šค๋ฅผ ๋งค๊ฐœ๋ณ€์ˆ˜์— ์ „๋‹ฌํ•˜์ง€ ์•Š์œผ๋ฉด ๊ธฐ์กด ํŒŒ์ผ์„ ์ „๋‹ฌํŒŒ์ผ๋กœ ๋ฎ์–ด์”Œ์šฐ๊ธฐ(OverWrite)

//์„œ๋ฒ„ ๋””๋ ‰ํ† ๋ฆฌ์— ์ €์žฅ๋œ ํŒŒ์ผ๋ช…๊ณผ ๋™์ผํ•œ ํŒŒ์ผ๋ช…์˜ ์ž…๋ ฅํŒŒ์ผ์„ ์ „๋‹ฌํ•  ๊ฒฝ์šฐ ํŒŒ์ผ๋ช…์„ ๋ณ€๊ฒฝํ•˜์—ฌ
		//์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด FileRenamePolicy ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ƒ์†๋ฐ›์€ ์ž์‹ํด๋ž˜์Šค๋กœ FileRenamePolicy 
		//์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•˜์—ฌ MultipartRequest ์ƒ์„ฑ์ž์˜ ๋งค๊ฐœ๋ณ€์ˆ˜์— ์ „๋‹ฌ
		//DefaultFileRenamePolicy : FileRenamePolicy ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ƒ์†๋ฐ›์€ ์ž์‹ํด๋ž˜์Šค
		// => ์ž…๋ ฅํŒŒ์ผ๋ช… ๋’ค์— ์ˆซ์ž๋ฅผ ๋ถ™์—ฌ ์ž๋™์œผ๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณต
		MultipartRequest mr=new MultipartRequest(request, saveDirectory
				, 20*1024*1024, "utf-8", new DefaultFileRenamePolicy());

 

> ์ž…๋ ฅ ํŒŒ์ผ๋ช…๊ณผ ์‹ค์ œ ์„œ๋ฒ„ ๋””๋ ‰ํ† ๋ฆฌ์— ์ €์žฅ๋œ ํŒŒ์ผ๋ช…์„ ๊ฐ€์ ธ์˜ค๋Š” ๋ฉ”์†Œ๋“œ

//์ž…๋ ฅํŒŒ์ผ๋ช…์„ ๋ฐ˜ํ™˜๋ฐ›์•„ ์ €์žฅ
		//MultipartRequest.getOriginalFileName(String name) : ๋ฉ€ํ‹ฐํŒŒํŠธ ํผ๋ฐ์ดํƒ€์— ์ €์žฅ๋œ ์ „๋‹ฌํŒŒ์ผ๋ช…์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฉ”์†Œ๋“œ
		//String fileone=mr.getOriginalFileName("fileone");
		//String filetwo=mr.getOriginalFileName("filetwo");
		
		//MultipartRequest.getFilesystemName(String name) : ์„œ๋ฒ„ ๋””๋ ‰ํ† ๋ฆฌ์— ์ €์žฅ๋œ ์—…๋กœ๋“œ ํŒŒ์ผ๋ช…์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฉ”์†Œ๋“œ
		String fileone=mr.getFilesystemName("fileone");
		String filetwo=mr.getFilesystemName("filetwo");

 

>  ์ฟ ํ‚ค(Cookie) : ์„œ๋ฒ„(์›นํ”„๋กœ๊ทธ๋žจ)์™€ ํด๋ผ์ด์–ธํŠธ์™€์˜ ์—ฐ๊ฒฐ ์ง€์†์„ฑ์„ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•œ ํด๋ผ์ด์–ธํŠธ์—
์ €์žฅํ•˜๋Š” ๊ฐ’ - ์ฟ ํ‚ค๋Š” ์ ‘์† ์„œ๋ฒ„ ์ •๋ณด๋ฅผ ์ด๋ฆ„(์‹๋ณ„์ž)์œผ๋กœ ํด๋ผ์ด์–ธํŠธ์— ์ €์žฅ

//Cookie ํด๋ž˜์Šค๋กœ ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ 
		// => Cookie : ์ฟ ํ‚ค ์ •๋ณด๋ฅผ ์ €์žฅํ•œ ์ธ์Šคํ„ด์Šค
		//Cookie(String name, String value) : ์ฟ ํ‚ค๋ช…๊ณผ ์ฟ ํ‚ค๊ฐ’์„ ์ „๋‹ฌํ•˜์—ฌ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์ƒ์„ฑ์ž
		// => ์ฟ ํ‚ค๋ช… : ์ฟ ํ‚ค๊ฐ’์„ ์ œ๊ณต๋ฐ›๊ธฐ ์œ„ํ•œ ์‹๋ณ„์ž
		// => ์ฟ ํ‚ค๋ช…๊ณผ ์ฟ ํ‚ค๊ฐ’์€ ์˜๋ฌธ์ž, ์ˆซ์ž, ์ผ๋ถ€ ํŠน์ˆ˜๋ฌธ์ž๋งŒ ์‚ฌ์šฉํ•˜์—ฌ ์ €์žฅ ๊ฐ€๋Šฅ
		Cookie idCookie=new Cookie("id", "abc123");
		Cookie countCookie=new Cookie("count", "0");

์ €์žฅ๋  ์ฟ ํ‚ค์˜ ์œ ์ง€์‹œ๊ฐ„ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ ๊ธฐ๋ณธ๊ฐ’์€ -1๋กœ ๋ธŒ๋ผ์šฐ์ € ์ข…๋ฃŒ์‹œ ์ž๋™ ์†Œ๋ฉธ!

countCookie.setMaxAge(24*60*60);//์ฟ ํ‚ค ์œ ์ง€์‹œ๊ฐ„์„ 1์ผ๋กœ ๋ณ€๊ฒฝ

 ์ฟ ํ‚ค๋ฅผ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ „๋‹ฌ

	//์ฟ ํ‚ค๋ฅผ ํด๋ผ์ด์–ธํŠธ์— ์ „๋‹ฌ - ํด๋ผ์ด์–ธํŠธ์€ ์ „๋‹ฌ๋ฐ›์€ ์ฟ ํ‚ค๋ฅผ ์ €์žฅ
		// => ์œ ์ง€์‹œ๊ฐ„์„ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š์€ ์ฟ ํ‚ค๋Š” ๋ธŒ๋ผ์šฐ์ € ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ
		// => ์œ ์ง€์‹œ๊ฐ„์„ ๋ณ€๊ฒฝํ•œ ์ฟ ํ‚ค๋Š” ์ฟ ํ‚ค ํŒŒ์ผ์— ์ €์žฅ
		//HttpServletResponse.addCookie(Cookie cookie) :  ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ฟ ํ‚ค๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๋ฉ”์†Œ๋“œ
		response.addCookie(idCookie);
		response.addCookie(countCookie);

ํด๋ผ์ด์–ธํŠธ์—์„œ ์ „๋‹ฌ๋œ ๋ชจ๋“  ์ฟ ํ‚ค๋ฅผ ๋ฐ˜ํ™˜๋ฐ›์•„ ์ €์žฅ

		// HttpServletRequest.getCookies() : ํด๋ผ์ด์–ธํŠธ์—์„œ ์ „๋‹ฌ๋œ ๋ชจ๋“  ์ฟ ํ‚ค๋ฅผ Cookie ๋ฐฐ์—ด๋กœ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฉ”์†Œ๋“œ
		Cookie[] cookies = request.getCookies();

 


- ์„ธ๋ฏธ ํŒ€ํ”Œ -

> ๊ธˆ์š”์ผ๊นŒ์ง€ ๊ฐ ํ™”๋ฉด ์ •์˜์„œ ์™„์„ฑ!

> ํŽ˜์ด์ง€ ์„ ํƒ ์™„๋ฃŒ

> ๊ฐ ํŒŒํŠธ๋ณ„๋กœ HTML ์•Œ์•„์˜ค๊ธฐ - ๊นจ์ง„ ํŒŒ์ผ์€ ์›น ํŽ˜์ด์ง€ ์†Œ์Šค๋ณด๊ธฐ


- ์Šคํ„ฐ๋”” ๋‚ด์šฉ ๋ฐ ๊ฒฐ๊ณผ - 

> ํŒŒ์ผ ์—…๋กœ๋“œ์˜ ๊ฐœ๋… ํ™•์‹คํžˆ.

> ์ฟ ํ‚ค์˜ ๊ฐœ๋…๊ณผ ์ฝ๋Š” ๋ฐฉ์‹ ํ™•์‹คํžˆ.

๋ฐ˜์‘ํ˜•

'๋ ˆ๊ฑฐ์‹œ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

2022.1.10์˜ ๊ธฐ๋ก  (0) 2022.01.11
2022.1.7์˜ ๊ธฐ๋ก  (0) 2022.01.07
2021.1.5  (0) 2022.01.05
2021.1.4์˜ ๊ธฐ๋ก  (0) 2022.01.04
2022.1.3์˜ ๊ธฐ๋ก  (0) 2022.01.03