๋ ˆ๊ฑฐ์‹œ

2021.1.4์˜ ๊ธฐ๋ก

GroovyArea 2022. 1. 4. 22:10

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

  • SVN ํ˜•์ƒ ๊ด€๋ฆฌ ๋ชจ๋ธ ๊ฐœ์š” 
  • Servlet ๊ฐœ์š”

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

ํ˜•์ƒ ๊ด€๋ฆฌ ์„œ๋ฒ„(SVN)

  • ์ž‘์—…ํ•˜๋Š” ํŒŒ์ผ์ด ์ค‘๋ณต๋˜๋ฉด ์•ˆ๋จ (๊ณ„์† ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜)
  • ๋กค๋ฐฑ์ด ์—†์œผ๋ฏ€๋กœ ๋ฐฑ์—…์„ ์ง‘ํŒŒ์ผ๋กœ ์ €์žฅ์„ ์ˆ˜์‹œ๋กœ ํ•ด์•ผ๋œ๋‹ค.
  • ํ”„๋กœ์ ํŠธ ์ œ๊ฑฐํ•˜๊ณ  ๋‹ค์‹œ ์ฒดํฌ์•„์›ƒํ•ด์•ผ.. (์ถฉ๋Œ ์ผ์–ด๋‚˜๋‹ˆ๊นŒ)
  • ๋น„๋ฐ€๋ฒˆํ˜ธ ์‚ฌ์šฉ์ž ์ด๋ฆ„๊ณผ ๊ฐ™๋‹ค. ํ•œ๋ช…์”ฉ ๊ณจ๋ผ์„œ ์“ฐ๋ฉด ๋จ semi-oneํŒ€,
  • URL : https://itwill.xyz/svn/semi-one
  • ์•„์ด๋”” ๋น„๋ฐ€๋ฒˆํ˜ธ๋กœ ๋กœ๊ทธ์ธ ์ ‘๊ทผ ๊ฐ€๋Šฅ
  • ์˜†์— ์ˆซ์ž๋Š” ์ž‘์—… ํšŸ์ˆ˜ ๋ฆฌ๋น„์ „ ๋„˜๋ฒ„
  • ์—…๋ฐ์ดํŠธ ์ปค๋ฐ‹ ๊ณ„์† ํ•ด์ค˜์•ผ ํ•จ
  • ๋˜‘๊ฐ™์€ ํŒŒ์ผ์„ ์ž‘์—…ํ•˜๋ฉด ์•ˆ๋จ,
  • ๋‚ด๊ฐ€ ์ž‘์—…ํ•œ ํŒŒ์ผ์ด ์„œ๋ฒ„์— ์žˆ์–ด์•ผ ์ปค๋ฐ‹์ด ๋˜๋Š”๋ฐ ๋‹ค๋ฅธ์• ๊ฐ€ ์ปค๋ฐ‹ ๋จผ์ €ํ•˜๋ฉด ๋ฆฌ๋น„์ „ ๋„˜๋ฒ„๊ฐ€ ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ์ปค๋ฐ‹ ์ž์ฒด๊ฐ€ ์•ˆ๋œ๋‹ค.
  • ๊ฐ„๋‹จํžˆ 1๊ฐœ ์ถฉ๋Œ๋‚ ๋•Œ : ์‹ฑํฌ๋กœ๋‚˜์ด์ฆˆ ํผ์ŠคํŽ™ํ‹ฐ๋ธŒ์—์„œ ์šฐํด๋ฆญํ•˜๊ณ  ์˜ค๋ฒ„๋ผ์ด๋“œ ์ปค๋ฐ‹ ํ˜น์€ ๋‚ด๊ฑฐ ๋ฌด์‹œํ•˜๊ณ  ์˜ค๋ฒ„๋ผ์ด๋“œ ์—…๋ฐ์ดํŠธ (๋ฌด์กฐ๊ฑด ๋ฐฑ์—… ) -> ๋ฉ”์ดํฌ ๋จธ์ง€๋ผ๋Š” ๋ฐฉ๋ฒ•๋„ ์žˆ์Œ

Servlet (server + let)

  • ์„œ๋ธ”๋ฆฟ(์›น์—์„œ ์‹คํ–‰๋˜๋Š” ํ”„๋กœ๊ทธ๋žจ

 --- ์„œ๋ธ”๋ฆฟ ํด๋ž˜์Šค ์ž‘์„ฑ ๋ฐฉ๋ฒ• --- 

1. HttpServlet ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›์€ ์ž์‹ํด๋ž˜์Šค ์ƒ์„ฑ - ์„œ๋ธ”๋ฆฟ ํด๋ž˜์Šค

public class HelloServlet extends HttpServlet

2. doGet() ๋˜๋Š” doPost() ๋ฉ”์†Œ๋“œ๋ฅผ ์˜ค๋ฒ„๋ผ์ด๋“œ ์„ ์–ธ

=> ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ์™€ ์ฒ˜๋ฆฌ๊ฒฐ๊ณผ(HTML)๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ๋ฉ”์†Œ๋“œ - WAS(Web Application Server)์— ์˜ํ•ด ์ž๋™ ํ˜ธ์ถœ

=> doGet() : ํด๋ผ์ด์–ธํŠธ๊ฐ€ GET ๋ฐฉ์‹์œผ๋กœ ์š”์ฒญํ•œ ๊ฒฝ์šฐ ํ˜ธ์ถœ๋˜๋Š” ๋ฉ”์†Œ๋“œ

=> doPost() : ํด๋ผ์ด์–ธํŠธ๊ฐ€ POST ๋ฐฉ์‹์œผ๋กœ ์š”์ฒญํ•œ ๊ฒฝ์šฐ ํ˜ธ์ถœ๋˜๋Š” ๋ฉ”์†Œ๋“œ

 > doGet() ๋˜๋Š” doPost() ๋ฉ”์†Œ๋“œ ๋Œ€์‹  service() ๋ฉ”์†Œ๋“œ๋ฅผ ์˜ค๋ฒ„๋ผ์ด๋“œํ•˜๋Š” ๊ฒฝ์šฐ๋„ ์žˆ์Œ.

=> service() : ํด๋ผ์ด์–ธํŠธ์˜ ๋ชจ๋“  ์š”์ฒญ์— ์˜ํ•ด ํ˜ธ์ถœ๋˜๋Š” ๋ฉ”์†Œ๋“œ

=> doGet() ๋˜๋Š” doPost() ๋ฉ”์†Œ๋“œ๋ณด๋‹ค service() ๋ฉ”์†Œ๋“œ์˜ ํ˜ธ์ถœ ์šฐ์„  ์ˆœ์œ„๊ฐ€ ๋†’๊ฒŒ ์„ค์ •
WAS์— ์˜ํ•ด ๋ฉ”์†Œ๋“œ๊ฐ€ ํ˜ธ์ถœ๋  ๋•Œ HttpServletRequest ์ธ์Šคํ„ด์Šค์™€ HttpServletResponse ์ธ์Šคํ„ด์Šค๊ฐ€
๋งค๊ฐœ๋ณ€์ˆ˜์— ์ž๋™์œผ๋กœ ์ „๋‹ฌ๋˜์–ด ์ €์žฅ

@Override
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

3. ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์‘๋‹ตํ•  ๋ฌธ์„œ(ํŒŒ์ผ)์˜ ํ˜•์‹(MimeType) ์„ค์ •(๋ณ€๊ฒฝ)

ํ˜•์‹)HttpServletResponse.setContentType(String mimeType[;charset=encoding])

=> ๋ฌธ์„œ ํ˜•์‹์œผ๋กœ ์‘๋‹ตํ•  ๊ฒฝ์šฐ ๋ฌธ์„œ์˜ ์บ๋ฆญํ„ฐ์…‹(CharacterSet : ๋ฌธ์žํ˜•์‹ - ์ธ์ฝ”๋”ฉ) ์„ค์ •
=> ๊ธฐ๋ณธ ์‘๋‹ต ๋ฌธ์„œ ํ˜•์‹ : text/html, ์บ๋ฆญํ„ฐ์…‹ : ISO-8859-1(์„œ์œ ๋Ÿฝ์–ด)

response.setContentType("text/html;charset=utf-8");
// HTML ๋ฌธ์„œ๋ฅผ UTF-8๋กœ ์„ค์ •

4.ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ์— ์˜ํ•ด ์ฒ˜๋ฆฌ ๊ฒฐ๊ณผ(์‘๋‹ต)๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ์ถœ๋ ฅ์ŠคํŠธ๋ฆผ์„ ๋ฐ˜ํ™˜๋ฐ›์•„ ์ €์žฅ
ํ˜•์‹)HttpServletResponse.getOutputStram() : ์›์‹œ ๋ฐ์ดํƒ€(1Byte)๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๋Š” ์ถœ๋ ฅ
์ŠคํŠธ๋ฆผ(ServeltOutputStream)์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฉ”์†Œ๋“œ => ๊ทธ๋ฆผ, ์Œํ–ฅ, ์˜์ƒ ํŒŒ์ผ๋“ฑ์„ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์‘๋‹ตํ•˜๊ธฐ ์œ„ํ•œ ๊ฒฐ๊ณผ๋กœ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ์ถœ๋ ฅ์ŠคํŠธ๋ฆผ

ํ˜•์‹)HttpServletResponse.getWriter() : ์ธ์ฝ”๋”ฉ ์ฒ˜๋ฆฌ๋œ ๋ฌธ์ž ๋ฐ์ดํƒ€(2Byte)๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๋Š”
์ถœ๋ ฅ์ŠคํŠธ๋ฆผ(PrintWriter)์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฉ”์†Œ๋“œ => PlanText, HTML, XML ํŒŒ์ผ(๋ฌธ์„œ)๋“ฑ์„ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์‘๋‹ตํ•˜๊ธฐ ์œ„ํ•œ ๊ฒฐ๊ณผ๋กœ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ์ถœ๋ ฅ์ŠคํŠธ๋ฆผ

PrintWriter out=response.getWriter();
// ๋ฌธ์ž ๋ฐ์ดํƒ€ ์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ์„ PrintWriterํƒ€์ž…์œผ๋กœ ์„ ์–ธ ๋œ out์— ๋„ฃ์–ด ์‚ฌ์šฉ ๊ฐ€๋Šฅ

5. ์š”์ฒญ์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ์™€ ์ฒ˜๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ๋ฌธ์„œ(ํŒŒ์ผ)๋กœ ์ƒ์„ฑ - ์‘๋‹ต
=> ์ถœ๋ ฅ์ŠคํŠธ๋ฆผ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ฒ˜๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ์ „๋‹ฌํ•˜๋ฉด ๋ฌธ์„œ(ํŒŒ์ผ) ์ƒ์„ฑ

out.println("<!DOCTYPE html>");//์ถœ๋ ฅ์ŠคํŠธ๋ฆผ์œผ๋กœ ๋ฌธ์ž์—ด์„ ์ „๋‹ฌํ•˜๋Š” ๋ฉ”์†Œ๋“œ ํ˜ธ์ถœ
		out.println("<html>");
		out.println("<head>");
		out.println("<meta charset='utf-8'>");
		out.println("<title>Servlet</title>");
		out.println("</head>");
		out.println("<body>");
		out.println("<h1>์„œ๋ธ”๋ฆฟ(Servlet)</h1>");
		out.println("<hr>");
		out.println("<p>Hello, Servlet!!!</p>");
		out.println("</body>");
		out.println("</html>");

6. ์„œ๋ธ”๋ฆฟ ํด๋ž˜์Šค๋ฅผ ์›นํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ๋“ฑ๋กํ•˜์—ฌ ์‹คํ–‰๋˜๋„๋ก ์„ค์ •
=> [web.xml] ํŒŒ์ผ์—์„œ ์„œ๋ธ”๋ฆฟ ํด๋ž˜์Šค๋ฅผ ์„œ๋ธ”๋ฆฟ์œผ๋กœ ๋“ฑ๋กํ•˜๊ณ  URL ์ฃผ์†Œ๋ฅผ ๋งคํ•‘ ์„ค์ •
=> ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋งคํ•‘๋œ URL ์ฃผ์†Œ๋กœ ์„œ๋ธ”๋ฆฟ์„ ์š”์ฒญํ•˜์—ฌ WAS๋Š” ์„œ๋ธ”๋ฆฟ ํด๋ž˜์Šค๋ฅผ ๊ฐ์ฒด๋กœ ์ƒ์„ฑํ•˜๊ณ  ์š”์ฒญ ์ฒ˜๋ฆฌ ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ์š”์ฒญ์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ์™€ ์‘๋‹ต ๊ฒฐ๊ณผ ์ œ๊ณต


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

  1. 7์‹œ ๋””์Šค์ฝ”๋“œ ํšŒ์˜ ์‚ฌ์ดํŠธ ๋ณ€๋ณต ์ž‘์—… (๋ชฉ์š”์ผ๊นŒ์ง€ ๊น”๋”ํ•œ ์‚ฌ์ดํŠธ๋กœ ํฌ๋กค๋ง ํ›„ ์ž„ํฌํŠธ๊นŒ์ง€)
  2. ๋ฒ„์ „ ์ธ์ฝ”๋”ฉ ๋ฐฉ์‹ :  UTF-8 ๋ฐฉ์‹์œผ๋กœ ํ†ต์ผ!
  3. SVN ์ปค๋ฐ‹ ์ถฉ๋Œ ์ผ์œผํ‚ค๊ธฐ (2, 3๋ฒˆ์งธ ๊ฑด๋„ˆ๋›ฐ๊ณ  ์ปค๋ฐ‹ํ•  ์‹œ ์ถฉ๋Œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• ์งˆ๋ฌธ)

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

  • web.xml ํŒŒ์ผ์—์„œ <servlet-class> ์—˜๋ฆฌ๋จผํŠธ์˜ ํ…์ŠคํŠธ๋Š” ํŒจํ‚ค์ง€๊ฐ€ ํฌํ•จ๋œ ์„œ๋ธ”๋ฆฟ ํด๋ž˜์Šค๋ช…!   
  •   => kr, com, co ๋Š” ๊ทœ์น™!!
  • URL ๋งคํ•‘์ด ํ•„์š”ํ•œ ์ด์œ  : ์„œ๋ธ”๋ฆฟ์„ ์š”์ฒญํ•˜๊ธฐ ์œ„ํ•ด ์ฃผ์†Œ์˜ ํŒจํ„ด(์‹๋ณ„์ž)๋ฅผ ์„ค์ •ํ•ด์ค˜์•ผ ํ•จ

 

๋ฐ˜์‘ํ˜•