Servlet

Servelet / JSP

Servlet


SQL์„ ํ†ตํ•ด์„œ DB์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ์ˆ˜์ •ํ•˜๊ณ  , ์ฝ๊ณ  ์“ฐ๋Š”๊ฒŒ ๊ฐ€๋Šฅํ–ˆ๋‹ค.
๋˜ DB์™€ JAVA๋ฅผ ์ ‘๊ทผ์‹œ์ผœ ์ž๋ฐ”๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ด์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ JDBC๋ฅผ ๋ฐฐ์› ๋‹ค.

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์•„๋‹Œ ์šฐ๋ฆฌ๊ฐ€ ์‹œ๊ฐ์ ์œผ๋กœ ์ด์šฉํ•˜๊ณ  ์‚ฌ์šฉํ•˜๋Š” WEB์—๋Š” Servlet๊ณผ JSP๋ฅผ ํ†ตํ•ด ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•ด์ง„๋‹ค.

Servlet๊ณผ JSP ๋˜ํ•œ ์ธํ„ฐํŽ˜์ด์Šค ๋ฐฉ์‹์„ ์ง€์›ํ•˜๋ฉฐ HTML์„ WEB์œผ๋กœ ๋ณด๋‚ด๋Š” ์—ญํ• ์„ ํ•˜๋ฉฐ
JAVA์™€ WEB๊ณผ์˜ ์—ฐ๊ฒฐ์„ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์ด๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

๊ฐœ๋ฐœํ™˜๊ฒฝ์œผ๋กœ WEB Server์™€ sevlet , JSP๋ฅผ ํฌํ•จํ•˜๋Š” WAS๋ผ ๋ถˆ๋ฆฌ๋Š” TOMCAT์„ ๋งŽ์ด ์‚ฌ์šฉํ•œ๋‹ค.
๊ฐœ๋ฐœ์ž๋Š” ์ด๊ฒƒ์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ํ•œ๊ฐ€์ง€ ์•ฝ์†์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”๋ฐ
HTML / JSP ํŒŒ์ผ์€ TOMCAT => wepapps => ํŒŒ์ผ๋ช…
JAVA ํŒŒ์ผ์€ TOMCAT => wepapps => ํŒŒ์ผ๋ช… => WEB-INF => classes ํด๋”์•ˆ์— ๋„ฃ๋Š”๋‹ค.

โ€ป Class Path๋ฅผ ์ƒํ™œํ™” ํ•˜์ž

servlet ์ด๋ž€?

JAVA๋Š” WEB์„ ์œ„ํ•ด Servlet์ด๋ผ๋Š” Beans์„ ์ œ๊ณตํ•ด์ค€๋‹ค.

  • ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๊ณ , ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” Servlet ํด๋ž˜์Šค์˜ ๊ตฌํ˜„ ๊ทœ์น™์„ ์ง€ํ‚จ ์ž๋ฐ” ์›น ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ์ˆ ์ด๋‹ค

JAVA์˜ Main์„ ํ†ตํ•ด ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ด์ œ๋Š” ๊ทธ๋Ÿด ํ•„์š” ์—†์ด HTML์˜ ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์— ์ธํ•ด Beans์„ ์‹คํ–‰ ํ•˜๊ฒŒ ๋œ๋‹ค.

  • ์›น ๊ธฐ๋ฐ˜์˜ ์š”์ฒญ์— ๋Œ€ํ•œ ๋™์ ์ธ ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•œ Server Side์—์„œ ๋Œ์•„๊ฐ€๋Š” Java Program
  • Java ์ฝ”๋“œ ์•ˆ์— HTML ์ฝ”๋“œ (ํ•˜๋‚˜์˜ ํด๋ž˜์Šค)
  • ์›น ๊ฐœ๋ฐœ์„ ์œ„ํ•ด ๋งŒ๋“  ํ‘œ์ค€

Servlet์˜ ๋™์ž‘ ๋ฐฉ์‹

Client -> Servlet Contatiner๋กœ HTTP Request ->  HttpServletRequest, HttpServletResponse ๊ฐ์ฒด ์ƒ์„ฑ -> thread ์ƒ์„ฑ / run()์„ ํ†ตํ•ด init()์‹คํ–‰(์ƒ์„ฑ์ž์™€๊ฐ™์ด ํ•œ๋ฒˆ๋งŒ ์‚ฌ์šฉ)  
-> ์„œ๋ธ”๋ฆฟ ๋ถ„์„(Web.xml) -> ์ฐพ์€ ์„œ๋ธ”๋ฆฟ -> service() ๋ฉ”์†Œ๋“œ ํ˜ธ์ถœ -> doGet(), doPost() ํ˜ธ์ถœ -> HttpServletRequest, HttpServletResponse ๋‘ ๊ฐ์ฒด ์†Œ๋ฉธ (thread ์ข…๋ฃŒ)
  1. ์‚ฌ์šฉ์ž(ํด๋ผ์ด์–ธํŠธ)๊ฐ€ URL์„ ์ž…๋ ฅํ•˜๋ฉด HTTP Request๊ฐ€ Servlet Container๋กœ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.
  2. ์š”์ฒญ์„ ์ „์†ก๋ฐ›์€ Servlet Container๋Š” thread๋ฅผ ์ƒ์„ฑํ•˜๊ณ  HttpServletRequest, HttpServletResponse ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  3. web.xml์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์‚ฌ์šฉ์ž๊ฐ€ ์š”์ฒญํ•œ URL์ด ์–ด๋А ์„œ๋ธ”๋ฆฟ์— ๋Œ€ํ•œ ์š”์ฒญ์ธ์ง€ ์ฐพ์Šต๋‹ˆ๋‹ค.
  4. run()์„ ํ†ตํ•ด ํ•ด๋‹น method์˜ init()์„ ํ˜ธ์ถœ (์ƒ์„ฑ์ž์™€ ๊ฐ™์ด ํ•œ๋ฒˆ๋งŒ ํ˜ธ์ถœ๊ฐ€๋Šฅ)
  5. ํ•ด๋‹น ์„œ๋ธ”๋ฆฟ์—์„œ service๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•œ ํ›„ ํด๋ฆฌ์•„์–ธํŠธ์˜ GET, POST์—ฌ๋ถ€์— ๋”ฐ๋ผ doGet() ๋˜๋Š” doPost()๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.
  6. doGet() or doPost() ๋ฉ”์†Œ๋“œ๋Š” ๋™์  ํŽ˜์ด์ง€๋ฅผ ์ƒ์„ฑํ•œ ํ›„ HttpServletResponse๊ฐ์ฒด์— ์‘๋‹ต์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค.
  7. ์‘๋‹ต์ด ๋๋‚˜๋ฉด HttpServletRequest, HttpServletResponse ๋‘ ๊ฐ์ฒด๋ฅผ ์†Œ๋ฉธ์‹œํ‚ต๋‹ˆ๋‹ค.(thread ์ข…๋ฃŒ)

Servlet Class๋Š” init()๊ณผ service() destroy()๋ฅผ ๊ฐ€์ง„๋‹ค.
request๋ฅผ ๋ฐ›์œผ๋ฉด thread๋ฅผ ์ƒ์„ฑํ•˜๋ฉฐ run()์„ ํ†ตํ•ด ํ•ด๋‹น ์„œ๋ธ”๋ฆฟ์„ ์‹คํ–‰์‹œํ‚จ๋‹ค.
init()์„ ์‹คํ–‰ํ•˜๊ณ  service()๋ฅผ ์‹คํ–‰ํ•˜๊ณ  thread๋Š” ์ข…๋ฃŒ๊ฐ€ ๋œ๋‹ค.
์ž๋ฐ”์—์„œ๋Š” ์ด๋Ÿฌํ•œ ํŠน์ดํ•œ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง„๋‹ค, ์—ฌ๋Ÿฌ๊ณณ์—์„œ ๋™์‹œ ์ ‘์†์‹œ์—๋„ ํ”„๋กœ์„ธ์Šค ์ƒ์„ฑ์ด ์•„๋‹Œ thread๋ฅผ ์ƒ์„ฑํ•˜๋ฉฐ ๊ณผ๋ถ€ํ•˜๋ฅผ ๋ฐฉ์ง€ ํ•  ์ˆ˜ ์žˆ๋‹ค.
์—ฌ๊ธฐ์„œ ์ค‘์‹ฌ์ ์œผ๋กœ ๋‹ค๋ค„์•ผ ํ•˜๋Š” ๋ถ€๋ถ„์€ html์„ ์ž…๋ ฅํ•˜๊ณ  responeํ•˜๋Š” ๋ถ€๋ถ„์ธ service()๋ถ€๋ถ„์ด๋‹ค.

์ž๋ฐ”๋Š” init, service, destroy๋ฅผ ์ง์ ‘์ ์œผ๋กœ ์˜ค๋ฒ„๋ผ์ด๋”ฉํ•˜๋Š”๊ฒƒ์„ ์ข‹์•„ํ•˜์ง€ ์•Š๋Š”๋‹ค.
๊ทธ๋ž˜์„œ html์„ ๋ณด๋‚ด๊ธฐ ์œ„ํ•ด์„œ ๊ตฌ์กฐ๋ฅผ ์ƒ์œ„์˜ ์žˆ๋Š” service()๋ฅผ ํ•œ๋ฒˆ๋ณด๋ฉด getType๊ณผ postType์„ ๋ฐ›์•„ doGet(), doPost()๋ฅผ ํ˜ธ์ถœํ•˜๋Š”๋ฐ ๋‘ํƒ€์ž… ๋ชจ๋‘ ์—๋Ÿฌ๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค.
service๋ฅผ ์‚ฌ์šฉ ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋ช…ํ™•์„ฑ์„ ์œ„ํ•ด doGet()๊ณผ doPost()๋ฅผ ์˜ค๋ฒ„๋ผ์ด๋”ฉํ•˜์—ฌ ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ๋‹ค.

GET type์ด๋ž€ ์šฐ๋ฆฌ๊ฐ€ ์†์œผ๋กœ ์ง์ ‘ ์ž…๋ ฅํ•˜๋Š” url์„ ๋งํ•œ๋‹ค. HEAD ๋ถ€๋ถ„์— ์ €์žฅ๋˜์–ด request๋œ๋‹ค.

ex) https://www.google.co.kr/search?q=get+type&ei
    url ๋’ค์— uri๊ฐ€ ๋ถ™๋Š”๋‹ค.  ( ์ž…๋ ฅ๋ฐ›์€ ๋ฐ์ดํ„ฐ๋ฅผ url๊ณผ ๊ฐ™์ด ๋ณด์—ฌ์ค€๋‹ค.)

Post type์ด๋ž€ ๋งํฌ๋‚˜ ์–ด๋– ํ•œ ํ–‰๋™์œผ๋กœ ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ์‹์„ ๋งํ•œ๋‹ค. BODY ๋ถ€๋ถ„์— ์ €์žฅ๋˜์–ด request ๋œ๋‹ค.

ex) ๋กœ๊ทธ์ธ์‹œ id์™€ pwd๊ฐ€ url์— ๋‚˜ํƒ€๋‚˜์ง€ ์•Š๋Š”๊ฒƒ

๋‘ ํƒ€์ž…์€ ์ด๊ฒƒ ๋ง๊ณ ๋„ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ๋ฐฉ์‹์— ๋”ฐ๋ผ ๋‚˜๋‰˜๊ฒŒ ๋˜๋Š”๋ฐ get์€ ์ž…๋ ฅ๋ฐ›์€ ๋ฐ์ดํ„ฐ๋ฅผ url์— ์ „๋ถ€ ๋ณด์—ฌ์ฃผ๊ธฐ์—๋Š” ํ•œ๊ณ„๊ฐ€ ์žˆ๋‹ค.
ํ•˜์ง€๋งŒ post๊ฐ€ ์กด์žฌํ•˜๋Š” body๋Š” ํ•œ๊ณ„๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค. ๊ทธ๋ ‡๊ธฐ์— ์‚ฌ์ง„์ด๋‚˜, ๋งŽ์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋„˜๊ธธ๋•Œ๋„ ์‚ฌ์šฉ๋œ๋‹ค.
โ€ป ์›น์ด๋‚˜ ์–ดํ”Œ์„ ์ด์šฉํ•˜๋‹ค ๋ณด๋ฉด ์‚ฌ์ง„์ด๋‚˜ ๋ฐ์ดํ„ฐ ์ „์†ก์— ์ œํ•œ์„ ๊ฑธ์–ด๋‘” ์ด์œ ์ด๋‹ค.

servlet ํ™˜๊ฒฝ์„ค์ •


class path๋ผ๋Š” ๋ง์„ ๋งŽ์ด ๋“ค์–ด๋ดค์„ ๊ฒƒ์ด๋‹ค. path๋ฅผ ํ†ตํ•ด ํšจ์œจ์ ์œผ๋กœ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑ ํ•  ์ˆ˜ ์žˆ๊ฒŒ๋œ๋‹ค.
servlet๊ณผ html์˜ ์ ‘๊ทผ์€ Mapping์„ ํ†ตํ•ด ์‰ฝ๊ฒŒ ์ ‘๊ทผ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

was ํด๋” ๊ตฌ์กฐ๋ฅผ ๋ณด๋ฉด Modul Web Arch01

์œ„์™€ ๊ฐ™์€ ํŒŒ์ผ์„ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”๋ฐ WEB-INF ์˜ web.xml ํŒŒ์ผ๋กœ mapping์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.

<?xml version="1.0" encoding="ISO-8859-1"?>

<web-app xmlns="http://java.sun.com/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
						http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
  version="3.0"
  metadata-complete="true">

	<servlet>
		<servlet-name>FirstServlet</servlet-name>
		<servlet-class>FirstServlet</servlet-class>
	</servlet>

	<servlet-mapping>
		<servlet-name>FirstServlet</servlet-name>
		<url-pattern>/FirstServlet</url-pattern>
	</servlet-mapping>
</web-app>

web.xml์€ ํ†ฐ์ผ“์˜ ์‚ฌ์šฉ ๋ฒ„์ „๊ณผ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์ •๋ณด๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋Š”๋ฐ ์ „์ฒด์ ์ธ ์„ค์ •์œผ๋กœ conf์˜ server.xml์œผ๋กœ๋„ ์„ค์ •์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
ํ•˜์ง€๋งŒ ๋…๋ฆฝ์ ์ธ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๊ธฐ ์œ„ํ•ด web.xml์„ ์„ค์ •ํ•˜๊ธฐ๋กœ ํ•˜์ž

java์— map๊ตฌ์กฐ๋ฅผ ์•ˆ๋‹ค๋ฉด key์™€ value๊ฐ€ ์กด์žฌํ•˜๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค. value๋กœ servlet์„ ์žก์•„์ฃผ๊ณ 
ํ†ต์ƒ์ ์œผ๋กœ key์˜ ๋„ค์ด๋ฐ์„ servlet๊ณผ ๋™์ผ์‹œ ํ•˜๋Š” ๊ฒƒ์ด ๋ณดํŽธ์ ์ด๋‹ค.

์œ„์™€ ๊ฐ™์ด ํ‚ค๊ฐ’์„ ์ •ํ•ด ์ฃผ๊ณ  mapping์„ ํ†ตํ•ด ๋‹ค์‹œํ•œ๋ฒˆ ์ง€์ •ํ•ด ์ค€๋‹ค.
์ด๋ ‡๊ฒŒ ๋งตํ•‘์ด ๋๋‚˜๋ฉด html์—์„œ ํŒŒ์ผ ๊ฒฝ๋กœ๋ฅผ ๋”ฐ๋ผ ์ง€์ •ํ•ด ์ฃผ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋งตํ•‘๊ฐ’์œผ๋กœ ์‰ฝ๊ฒŒ ์ ‘๊ทผ ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋งŒ์•ฝ ํ†ฐ์ผ“์ด๋‚˜ ์•„ํŒŒ์น˜๋ฅผ Eclipse์™€ ๊ฐ™์€ IDE์™€ ์—ฐ๋™ํ•˜์—ฌ ์‚ฌ์šฉ ํ•œ๋‹ค๋ฉด lib๋ผ๋Š” ํด๋”๋ฅผ ๋งŒ๋‚˜๊ฒŒ ๋œ๋‹ค.
์ด ํด๋”์—๋Š” ๊ฐ ๊ณ„๋ฐœ์— ๋งž๋Š” ~ .jarํŒŒ์ผ์„ ๋„ฃ๊ฒŒ ๋˜๋Š”๋ฐ ์ด๋Ÿฌํ•œ ์ด์œ ๋Š” ๋…๋ฆฝ์ ์ธ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๊ธฐ ์œ„ํ•ด์„œ์ด๋‹ค.

WarํŒŒ์ผ


๋งŒ์•ฝ ์ž‘์—…์„ ํ•˜๋‹ค๊ฐ€ ๋‹ค๋ฅธ ๊ณณ์—์„œ ์ž‘์—…์„ ํ•ด์•ผํ•˜๋Š” ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•˜๋ฉด ์ž‘์—…์„ ํ•˜๋˜ ํŒŒ์ผ์„ ํ•˜๋‚˜์”ฉ ์˜ด๊ธฐ๋Š” ์ž‘์—…์„ ๋˜ ํ•˜๊ณ  ๋˜ ํ™˜๊ฒฝ์„ ๋งŒ๋“ค์–ด ์ค˜์•ผ ํ•  ๊ฒƒ์ด๋‹ค.
ํ•˜์ง€๋งŒ was ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๋Š” ์ž‘์—…์„ ํ•˜๊ณ  ์žˆ๋‹ค๋ฉด ์†์‰ฝ๊ฒŒ warํŒŒ์ผ๋กœ ์••์ถ•ํ•˜์—ฌ ์ž‘์—…์„ ์ˆ˜์›”ํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค.

์›น ์•„์นด์ด๋ธŒWeb Archive ํŒŒ์ผ์ธ WAR ํŒŒ์ผ์€ ์ž๋ฐ”์˜ JAR ํŒŒ์ผ๊ณผ ๊ฐ™์€ ์—ญํ• ์„ ํ•˜๋ฉฐ, ์ฃผ๋กœ ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ฌถ๋Š” ๋ฐ ์‚ฌ์šฉ๋œ๋‹ค.

ํŒŒ์ผ ์•ˆ์—๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ์ปดํŒŒ์ผ๋œ ๋ชจ๋“  ํด๋ž˜์Šค ํŒŒ์ผ๋“ค๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ œ๊ณต๋˜์–ด์•ผ ํ•˜๋Š” ๋ชจ๋“  ํ”„๋กœํผํ‹ฐ ํŒŒ์ผ๊ณผ ๋‹ค๋ฅธ ์„ค์ • ํŒŒ์ผ๋“ค๋„ ํฌํ•จ๋œ๋‹ค.

WAR ํŒŒ์ผ์˜ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์ ์€ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์–ด๋–ป๊ฒŒ ์„ค์ •ํ• ์ง€ ์ •์˜ํ•œ ๋ฐฐํฌ ๋ช…์„ธ์„œ(web.xml ํŒŒ์ผ)๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ์ด ํŒŒ์ผ์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„์—๊ฒŒ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์–ด๋–ป๊ฒŒ ๋ฐฐํฌํ•˜๊ณ  ์ œ๊ณตํ• ์ง€์— ๊ด€ํ•œ ๋‚ด์šฉ์„ ๋ช…๋ น์œผ๋กœ ์ œ๊ณตํ•œ๋‹ค.

  • command line ์ƒ์—์„œ WARํŒŒ์ผ์„ ๋งŒ๋“ค๊ณ ์ž ํ•˜๋Š” ํด๋”๋กœ ์ด๋™
  • jar cvf .war . ์ž…๋ ฅ (์˜ˆ : jar cvf test.war . )
  • ํ•ด๋‹น ํด๋”๋‚ด์— warํŒŒ์ผ ์ƒ์„ฑ์™„๋ฃŒ

IntelliJ IDEA๋‚˜ ์ดํด๋ฆฝ์Šค ๊ฐ™์€ IDE ๋Œ€๋ถ€๋ถ„์€ ํ”„๋กœ์ ํŠธ์—์„œ ํด๋ฆญ ๋ช‡ ๋ฒˆ์œผ๋กœ WARํŒŒ์ผ์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ฉ”์ด๋ธ ์ƒ๋‹จ์— packagingํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•ด ์‰ฝ๊ฒŒ WARํŒŒ์ผ์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

์ƒ์„ฑ๋œ WARํŒŒ์ผ์„ wasํŒŒ์ผ์ด ์กด์žฌํ•˜๋Š” dir์— ๋„ฃ๋Š”๋‹ค๋ฉด ์ž๋™์œผ๋กœ was๊ฐ€ ์ƒ์„ฑ๋  ๊ฒƒ์ด๋‹ค.

์‹ฑ๊ธ€ Thread

โ€ป Servlet์„ thread๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ณผ๋ถ€ํ•˜๋ฅผ ์ค„์ด๋Š” ์žฅ์ ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๊ณ  ํ–ˆ๋‹ค.
ํ•˜์ง€๋งŒ ์‡ผํ•‘๋ชฐ๊ฐ™์ด ์—ฌ๋Ÿฌ์‚ฌ๋žŒ๋“ค์ด ๋“ค์–ด์™€ ๋ฌผ๊ฑด์„ ๋‹ด๊ณ  ๊ฐ€๊ฒฉ์„ ์ €์žฅํ•ด๋‘๋ ค๋Š” ํ–‰๋™์„ ํ•œ๋‹ค๋ฉด Servlet์˜ Field ๋ณ€์ˆ˜์— ์ €์žฅ์„ ํ•˜์—ฌ์•ผ
์ƒˆ๋กœ์šด thread๊ฐ€ ์‹คํ–‰๋˜๋”๋ผ๊ณ  ์ž˜ ์ ์šฉ์ด ๋  ๊ฒƒ์ด๋‹ค.
ํ•˜์ง€๋งŒ ํ•˜๋‚˜์˜ ๋ณ€์ˆ˜๋ฅผ ๊ฐ€์ง€๊ธฐ์— ๋‹ค๋ฅธ์‚ฌ๋žŒ๋“ค ๋˜ํ•œ ์ ‘๊ทผํ•˜์—ฌ ๊ฐ’์„ ์ˆ˜์ •ํ•  ๊ฒƒ์ด๋‹ค.
๊ทธ๋ ‡๊ธฐ์— Synchronized๋ฅผ ์‚ฌ์šฉ ํ•˜๋Š”๋ฐ ์ด๊ฒƒ์„ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ์ด์šฉ์ž์˜ ๋ถˆํŽธ ๋˜ํ•œ ์žˆ์„ ๊ฒƒ์ด๊ณ  thread์˜ ์กด์žฌ ์ž์ฒด๊ฐ€ ์˜๋ฏธ๊ฐ€ ์—†์–ด์ง„๋‹ค.

๊ทธ๋ ‡๊ธฐ์— Field๋Š” ์„ ์–ธํ•˜์ง€ ์•Š๊ณ  IO๋ฅผ ํ†ตํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋”ฐ๋กœ ์ €์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•œ๋‹ค.

Categories:

Updated:

Leave a comment