h ttp :/ / lo c a lh o s t:8 0 8 0 / js p b o o k h ttp :/ / lo c a lh o s t:8 0 8 0 / m y a p p h ttp :/ / w w w.th in k o n w e b.c o m / js p b o o k re q u e s t.g e tc o n te x tp a th () a p p lic a tio n.g e tr e a lp a th (" / " )
0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 < % @ p a g e c o n te n tt y p e = " te x t/ h tm l; c h a rs e t= u tf- 8 " % > < h tm l> < h e a d > < title > c o n te x t 의경로 < / title > < / h e a d > < b o d y > 현재수행 J S P 의 c o n te x t ( 웹케이션 ) 경로 : < % = re q u e s t.g e tc o n te x tp a th () % > < b r/> 현재수행 J S P 의실제경로 : < % = a p p lic a tio n.g e tr e a lp a th (" / " ) % > < / b o d y > < / h tm l> h ttp :/ / lo c a lh o s t:8 0 8 0 / js p b o o k / te s t/ te s tjs p.js p h ttp :/ / lo c a lh o s t:8 0 8 0 / js p b o o k / im a g e s / a p p le.b m p
T o m c a t 설치폴더 \ w e b a p p s \ js p b o o k \ c h 0 2 \ h e llo w o rld.js p T o m c a t 설치폴더 \ w o rk \ C a ta lin a \ lo c a lh o s t\ js p b o o k \ o rg \ a p a c h e \ js p \ c h 0 2 \ h e llo w o rld _ js p.ja v a T o m c a t 설치폴더 \ w o rk \ C a ta lin a \ lo c a lh o s t\ js p b o o k \ o rg \ a p a c h e \ js p \ c h 0 2 \ h e llo w o rld _ js p.c la s s
p a c k a g e o rg.a p a c h e.js p.c h 0 2 ; im p o rt ja v a x.s e rv le t.* ; im p o rt ja v a x.s e rv le t.h ttp.* ; im p o rt ja v a x.s e rv le t.js p.* ; p u b lic fin a l c la s s h e llo w o rld _ js p e x te n d s o rg.a p a c h e.ja s p e r.ru n tim e.h ttp Js p B a s e im p le m e n ts o rg.a p a c h e.ja s p e r.ru n tim e.j s p S o u rc e D e p e n d e n t {... 중간생략... p u b lic v o id _ js p In it() {... 중간생략... } p u b lic v o id _ js p D e s tro y () { } p u b lic v o id _ js p S e rv ic e (H ttp S e rv le tr e q u e s t re q u e s t, H ttp S e rv le tr e s p o n s e re s p o n s e ) th ro w s ja v a.io.io E x c e p tio n, S e rv le te x c e p tio n {... 중간생략... try {... 중간생략... o u t.w rite (" \ r\ n " ); o u t.w rite (" < h tm l> \ r\ n " ); o u t.w rite (" < b o d y > \ r\ n " ); o u t.p rin tln (" H e llo W o rld!" ); o u t.w rite (" < b r/> \ r\ n " ); o u t.p rin tln (" 안녕하세요." ); o u t.w rite (" \ r\ n " ); o u t.w rite (" < / b o d y > \ r\ n " ); o u t.w rite (" < / h tm l> \ r\ n " ); } c a tc h (T h ro w a b le t) {... 중간생략... } } } fin a lly { _ js p x F a c to ry.re le a s e P a g e C o n te x t(_ js p x _ p a g e _ c o n te x t); }
➀ ➁ ➂ ➃ ➄
ja v a c - c p % C A T A L IN A _ H O M E % \ lib \ s e rv le t- a p i.ja r H e llo W o rld S e rv le t.ja v a ja v a c - c p % C L A S S P A T H % ;% C A T A L IN A _ H O M E % \ lib \ s e rv le t- a p i.ja r H e llo W o rld S e rv le t.ja v a
ja v a c - d % C A T A L IN A _ H O M E % \ w e b a p p s \ js p b o o k \ W E B - IN F \ c la s s e s H e llo W o rld S e rv le t.ja v a 0 1 - ja v a c - c p % C L A S S P A T H % ;% C A T A L IN A _ H O M E % \ lib \ s e rv le t- a p i.ja r - d % C A T A L IN A _ H O M E % \ w e b a p p s \ js p b o o k \ W E B - IN F \ c la s s e s % 1
h ttp :/ / lo c a lh o s t:8 0 8 0 / js p b o o k / h e llo S e rv le t h ttp :/ / lo c a lh o s t:8 0 8 0 / js p b o o k / s e rv le ts / h e llo S e rv le t
0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9 1 0-1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 0 im p o rt ja v a x.s e rv le t.* ; im p o rt ja v a x.s e rv le t.h ttp.* ; im p o rt ja v a.io.* ; p u b lic c la s s H e llo W o rld S e rv le t e x te n d s H ttp S e rv le t { p u b lic v o id in it() { S y s te m.o u t.p rin tln (" In it!!!" ); } p u b lic v o id d o G e t(h ttp S e rv le tr e q u e s t re q u e s t, H ttp S e rv le tr e s p o n s e re s p o n s e ) th ro w s IO E x c e p tio n, S e rv le te x c e p tio n { S y s te m.o u t.p rin tln (" d o G e t!!!" ); re s p o n s e.s e tc o n te n tt y p e (" te x t/ h tm l" ); P rin tw rite r o u t = re s p o n s e.g e tw rite r(); o u t.p rin tln (" < h tm l> < b o d y b g c o lo r= \ " y e llo w \ " > H e llo S e rv le t!< / b o d y > < / h tm l> " ); } } p u b lic v o id d e s tro y () { S y s te m.o u t.p rin tln (" d e s tro y!!!" ); }
c d C :\ a p a c h e - to m c a t- 6.0.1 6 \ w e b a p p s \ js p b o o k \ W E B - IN F \ ja v a _ s o u rc e s s jc H e llo W o rld S e rv le t.ja v a
0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 0 <? x m l v e rs io n = " 1.0 " e n c o d in g = " u tf- 8 "? > < w e b - a p p x m ln s = " h ttp :/ / ja v a.s u n.c o m / x m l/ n s / ja v a e e " x m ln s :x s i= " h ttp :/ / w w w.w 3.o rg / 2 0 0 1 / X M L S c h e m a - in s ta n c e " x s i:s c h e m a L o c a tio n = " h ttp :/ / ja v a.s u n.c o m / x m l/ n s / ja v a e e h ttp :/ / ja v a.s u n.c o m / x m l/ n s / ja v a e e / w e b - a p p _ 2 _ 5.x s d " v e rs io n = " 2.5 " > < d e s c rip tio n > JS P B O O K E x a m p le s. < / d e s c rip tio n > < d is p la y - n a m e > J S P B O O K E x a m p le s < / d is p la y - n a m e > < s e rv le t> < s e rv le t- n a m e > h e llo S e rv le t< / s e rv le t- n a m e > < s e rv le t- c la s s > H e llo W o rld S e rv le t< / s e rv le t- c la s s > < / s e rv le t> < s e rv le t- m a p p in g > < s e rv le t- n a m e > h e llo S e rv le t< / s e rv le t- n a m e > < u rl- p a tte rn > / h e llo S e rv le t< / u rl- p a tte rn > < / s e rv le t- m a p p in g > < / w e b - a p p > h ttp :/ / lo c a lh o s t:8 0 8 0 / js p b o o k / h e llo S e rv le t