- ํ๋ฃจ ์ ๋ฆฌ -
- 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");
> ๋น์ ์์ ์ธ ์์ฒญ์ ๋ํ ์ฒ๋ฆฌ
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 |