SlideShare una empresa de Scribd logo
1 de 135
๋ณธ ๋ฌธ์„œ์˜ ๋ฐฐํฌ ๋ฐ ๋ณ€๊ฒฝ ,  ์ถœ๋ ฅ ๋ฐ ํ™œ์šฉ์— ๊ด€ํ•œ ๋ชจ๋“  ๊ถŒ๋ฆฌ๋Š” ์ž‘์„ฑ์ž์— ์žˆ์Šต๋‹ˆ๋‹ค . ๋ณธ ์„œ๋น„์Šค๋Š” ์ œ 1 ํšŒ ๋Œ€์ „  IT  ๊ฐœ๋ฐœ์ž ์ปค๋ฎค๋‹ˆํ‹ฐ ์ฐธ์„์ž๋ฅผ ์œ„ํ•ด ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค .
Struts2 ํ˜„์ฒ ์ฃผ ์•„์ฒธ์†Œํ”„ํŠธ์›จ์–ด September 28 th , 2008
๋ชฉ์ฐจ ,[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],์‹œ์žฅ์˜ ๋ณ€ํ™” ํ”„๋ ˆ์ž„์›Œํฌ๋ž€
[object Object],[object Object],[object Object],[object Object],ํŠน์ • ๋Œ€์ƒ ๋ถˆํŠน์ • ๋‹ค์ˆ˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ณ€ํ™” ํ”„๋ ˆ์ž„์›Œํฌ๋ž€
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],์•„ํ‚คํ…์ฒ˜์˜ ๋ณ€ํ™” ํ”„๋ ˆ์ž„์›Œํฌ๋ž€
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],๋ฐฉ๋ฒ•๋ก ์˜ ๋ณ€ํ™” ํ”„๋ ˆ์ž„์›Œํฌ๋ž€
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],ํ”„๋ ˆ์ž„์›Œํฌ ๊ธฐ๋ฐ˜ ๊ฐœ๋ฐœ ๋ฐฉ๋ฒ• ํ”„๋ ˆ์ž„์›Œํฌ๋ž€
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์œ„ํ•œ ๊ธฐ์ˆ  ํ”„๋ ˆ์ž„์›Œํฌ๋ž€
[object Object],[object Object],[object Object],[object Object],[object Object],์ž๋ฐ” ๊ธฐ์ˆ ์˜ ์ตœ๊ทผ ๋™ํ–ฅ ํ”„๋ ˆ์ž„์›Œํฌ๋ž€
์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ ํ”„๋ ˆ์ž„์›Œํฌ ๋ณด์•ˆ ํ”„๋ ˆ์ž„์›Œํฌ SQL  &  OR Mapper ํ”„๋ ˆ์ž„์›Œํฌ DI  (Dependency Injection)  &  AOP  (Aspected Oriented Programming)   ํ”„๋ ˆ์ž„์›Œํฌ ๋””์Šคํ”Œ๋ ˆ์ด ๋ ˆ์ด์•„์›ƒ ํ”„๋ ˆ์ž„์›Œํฌ SOA ํ”„๋ ˆ์ž„์›Œํฌ ๋ฆฌํฌํŒ… ํ”„๋ ˆ์ž„์›Œํฌ โ€ฆ ๋ฐฐํฌ ๋ฐ ํ˜•์ƒ ๊ด€๋ฆฌ ํ”„๋ ˆ์ž„์›Œํฌ ์ž๋ฐ” ๊ธฐ๋ฐ˜์˜ ์˜คํ”ˆ ์†Œ์Šค ํ”„๋ ˆ์ž„์›Œํฌ ๊ฐœ์š” ํ”„๋ ˆ์ž„์›Œํฌ๋ž€
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],์ž๋ฐ” ๊ธฐ๋ฐ˜์˜ ์˜คํ”ˆ ์†Œ์Šค ํ”„๋ ˆ์ž„์›Œํฌ ํ”„๋ ˆ์ž„์›Œํฌ๋ž€
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Struts ํ”„๋ ˆ์ž„์›Œํฌ๋ž€
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Struts  ๋‹จ์  ํ”„๋ ˆ์ž„์›Œํฌ๋ž€
[object Object],[object Object],Struts 2 ํ”„๋ ˆ์ž„์›Œํฌ๋ž€
[object Object],[object Object],[object Object],ํ”„๋ ˆ์ž„์›Œํฌ๋ž€  ? ํ”„๋ ˆ์ž„์›Œํฌ๋ž€
[object Object],[object Object],[object Object],[object Object],[object Object],์ŠคํŠธ๋Ÿฟ์ธ  ํ”„๋ ˆ์ž„์›Œํฌ๋ž€
[object Object],[object Object],[object Object],์ŠคํŠธ๋Ÿฟ์ธ  2 Struts2 ๋ž€
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],์ŠคํŠธ๋Ÿฟ์ธ  2  ํŠน์ง• Struts2 ๋ž€
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],์ŠคํŠธ๋Ÿฟ์ธ  2  ํŠน์ง• Struts2 ๋ž€
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],์ŠคํŠธ๋Ÿฟ์ธ  2  ํŠน์ง• Struts2 ๋ž€
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],์ŠคํŠธ๋Ÿฟ์ธ  2  ํŠน์ง• Struts2 ๋ž€
[object Object],[object Object],๊ฐœ๋ฐœ์ž๊ฐ€ ์ž‘์„ฑํ•ด์•ผ ํ•˜๋Š” ๋‚ด์šฉ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ์›น ๊ฐœ๋ฐœ ํ”„๋ ˆ์ž„์›Œํฌ ๊ฒฐ๊ณผ ํŽ˜์ด์ง€ ํ™˜๊ฒฝ ์„ค์ • ๊ฐœ๋ฐœ์ž๊ฐ€ ์ž‘์„ฑํ•ด์•ผ ํ•˜๋Š” ๋‚ด์šฉ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ์ŠคํŠธ๋Ÿฟ์ธ  2 ๊ฒฐ๊ณผ ํŽ˜์ด์ง€ ํ™˜๊ฒฝ ์„ค์ • ์ŠคํŠธ๋Ÿฟ์ธ  2  ์—ญํ•  Struts2 ๋ž€
[object Object],[object Object],[object Object],์ŠคํŠธ๋Ÿฟ์ธ  2  ํ•ต์‹ฌ ๊ฐœ๋… Struts2 ๋ž€
[object Object],๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ์ŠคํŠธ๋Ÿฟ์ธ  2 ์•ก์…˜ ์‚ฌ์šฉ์ž ์š”์ฒญ ์•ก์…˜ ์„ ํƒ ์•ก์…˜ Struts2 ๋ž€
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],์•ก์…˜ Struts2 ๋ž€
public class MyAction { ... public String execute() throws Exception { ... return "success"; } } ์•ก์…˜ ํด๋ž˜์Šค์˜ ํ”„๋กœํ† ํƒ€์ž… Struts2 ๋ž€
[object Object],[object Object],๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ์ŠคํŠธ๋Ÿฟ์ธ  2 ์•ก์…˜ ๋ฆฌ์ ˆํŠธ ๊ฒฐ๊ณผ ํŽ˜์ด์ง€ ๋ฆฌ์ ˆํŠธ Struts2 ๋ž€
[object Object],์ŠคํŠธ๋Ÿฟ์ธ  2 ์•ก์…˜ ๋ฆฌ์ ˆํŠธ ๊ฒฐ๊ณผ ํŽ˜์ด์ง€ ํƒœ๊ทธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํƒœ๊ทธ ํƒœ๊ทธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ Struts2 ๋ž€
[object Object],[object Object],[object Object],์ŠคํŠธ๋Ÿฟ์ธ  2 ์•ก์…˜ ๋ฆฌ์ ˆํŠธ ๊ฒฐ๊ณผ ํŽ˜์ด์ง€ ํ™˜๊ฒฝ์„ค์ • ๊ด€๋ฆฌ์ž ConfigManager ํ™˜๊ฒฝ์„ค์ • ํŒŒ์ผ ํ™˜๊ฒฝ์„ค์ • Struts2 ๋ž€
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],<action name=&quot; myAction &quot; class=&quot; example.MyAction &quot;> <result>/ myPage.jsp </result> </action> struts.xml Struts2 ๋ž€
[object Object],[object Object],<filter> <filter-name> struts </filter-name> <filter-class> org.apache.struts2.dispatcher.FilterDispatcher </filter-class> </filter> ย  <filter-mapping> <filter-name> struts </filter-name> <url-pattern>/*</url-pattern> </filter-mapping> ์ŠคํŠธ๋Ÿฟ์ธ  2  ์ปจํŠธ๋กค๋Ÿฌ Struts2 ๋ž€
์ƒ์„ธ ๋ชฉ์ฐจ ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
์ƒ์„ธ ๋ชฉ์ฐจ ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],์ŠคํŠธ๋Ÿฟ์ธ  2 ๋ž€ Struts2 ๋ž€
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],์™œ ์ŠคํŠธ๋Ÿฟ์ธ  2 ๋ฅผ ์„ ํƒํ•˜๋Š”๊ฐ€ ? Struts2 ๋ž€
FilterDispatcher struts.xml Interceptor Result ActionMapper ActionProxy/ActionInvocation ActionContext Tag Library Action ํ•ต์‹ฌ ํ‚ค์›Œ๋“œ Struts2 ๋ž€
ํ•„ํ„ฐ ๋””์ŠคํŒจ์ฒ˜ ์•ก์…˜ ์ธ๋ณด์ผ€์ด์…˜ ์•ก์…˜ ๋งคํผ ํƒœ๊ทธ ์„œ๋ธŒ์‹œ์Šคํ…œ HTML, Dojo, Forms, etc ํ…œํ”Œ๋ฆฟ JSP, FreeMarker, Velocity, etc HttpServletResponse ์ธํ„ฐ์…‰ํ„ฐ 1 ๋ฆฌ์ ˆํŠธ ์ธํ„ฐ์…‰ํ„ฐ 3 ์ธํ„ฐ์…‰ํ„ฐ 2 ์ธํ„ฐ์…‰ํ„ฐ 3 ์ธํ„ฐ์…‰ํ„ฐ 1 ์•ก์…˜ํ”„๋ก์‹œ ์ธํ„ฐ์…‰ํ„ฐ 2 ์•ก์…˜ ํ™˜๊ฒฝ์„ค์ •๊ด€๋ฆฌ์ž struts.xml Other Filters (Sitemesh ...) ActionContextCleanUp Filter HttpServletRequest ์ŠคํŠธ๋Ÿฟ์ธ  2  ์•„ํ‚คํ…์ฒ˜ ๊ฐœ๋…๋„ Struts2  ์•„ํ‚คํ…์ณ
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],์š”์ฒญ์€ ์ŠคํŠธ๋Ÿฟ์ธ  2 ๋ฅผ ํ†ตํ•ด ์–ด๋–ป๊ฒŒ ์ง„ํ–‰๋˜๋Š”๊ฐ€ ? Struts2  ์•„ํ‚คํ…์ณ
ํ•„ํ„ฐ ๋””์ŠคํŒจ์ฒ˜ ์•ก์…˜ ์ธ๋ณด์ผ€์ด์…˜ ์•ก์…˜ ๋งคํผ ํƒœ๊ทธ ์„œ๋ธŒ์‹œ์Šคํ…œ HTML, Dojo, Forms, etc ํ…œํ”Œ๋ฆฟ JSP, FreeMarker, Velocity, etc HttpServletResponse ์ธํ„ฐ์…‰ํ„ฐ 1 ๋ฆฌ์ ˆํŠธ ์ธํ„ฐ์…‰ํ„ฐ 3 ์ธํ„ฐ์…‰ํ„ฐ 2 ์ธํ„ฐ์…‰ํ„ฐ 3 ์ธํ„ฐ์…‰ํ„ฐ 1 ์ธํ„ฐ์…‰ํ„ฐ 2 ์•ก์…˜ ์•ก์…˜ํ”„๋ก์‹œ ํ™˜๊ฒฝ์„ค์ •๊ด€๋ฆฌ์ž struts.xml HttpServletRequest ํ•„ํ„ฐ ๋””์ŠคํŒจ์ฒ˜ Struts2  ์•„ํ‚คํ…์ณ
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],ํ•„ํ„ฐ ๋””์ŠคํŒจ์ฒ˜ Struts2  ์•„ํ‚คํ…์ณ
[object Object],<filter> <filter-name> struts </filter-name> <filter-class> org.apache.struts2.dispatcher.FilterDispatcher </filter-class> </filter> ย  <filter-mapping> <filter-name> struts </filter-name> <url-pattern>/*</url-pattern> </filter-mapping> ํ•„ํ„ฐ ๋””์ŠคํŒจ์ฒ˜ ์ •์˜ Struts2  ์•„ํ‚คํ…์ณ
ํ•„ํ„ฐ ๋””์ŠคํŒจ์ฒ˜ ์•ก์…˜ ์ธ๋ณด์ผ€์ด์…˜ ํƒœ๊ทธ ์„œ๋ธŒ์‹œ์Šคํ…œ HTML, Dojo, Forms, etc ํ…œํ”Œ๋ฆฟ JSP, FreeMarker, Velocity, etc HttpServletResponse ์ธํ„ฐ์…‰ํ„ฐ 1 ๋ฆฌ์ ˆํŠธ ์ธํ„ฐ์…‰ํ„ฐ 3 ์ธํ„ฐ์…‰ํ„ฐ 2 ์ธํ„ฐ์…‰ํ„ฐ 3 ์ธํ„ฐ์…‰ํ„ฐ 1 ์ธํ„ฐ์…‰ํ„ฐ 2 ์•ก์…˜ ์•ก์…˜ํ”„๋ก์‹œ ํ™˜๊ฒฝ์„ค์ •๊ด€๋ฆฌ์ž struts.xml HttpServletRequest ์•ก์…˜ ๋งคํผ ํ•„ํ„ฐ ๋””์ŠคํŒจ์ฒ˜ ์ •์˜ Struts2  ์•„ํ‚คํ…์ณ
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],์•ก์…˜ ๋งคํผ Struts2  ์•„ํ‚คํ…์ณ
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],์•ก์…˜ ๋งคํผ์˜ ์ข…๋ฅ˜ Struts2  ์•„ํ‚คํ…์ณ
์•ก์…˜ ์ธ๋ณด์ผ€์ด์…˜ ์•ก์…˜ ๋งคํผ ์•ก์…˜ํ”„๋ก์‹œ ํ•„ํ„ฐ ๋””์ŠคํŒจ์ฒ˜ ํƒœ๊ทธ ์„œ๋ธŒ์‹œ์Šคํ…œ HTML, Dojo, Forms, etc ํ…œํ”Œ๋ฆฟ JSP, FreeMarker, Velocity, etc HttpServletResponse ์ธํ„ฐ์…‰ํ„ฐ 1 ๋ฆฌ์ ˆํŠธ ์ธํ„ฐ์…‰ํ„ฐ 3 ์ธํ„ฐ์…‰ํ„ฐ 2 ์ธํ„ฐ์…‰ํ„ฐ 3 ์ธํ„ฐ์…‰ํ„ฐ 1 ์ธํ„ฐ์…‰ํ„ฐ 2 ์•ก์…˜ ํ™˜๊ฒฝ์„ค์ •๊ด€๋ฆฌ์ž struts.xml HttpServletRequest ์•ก์…˜ ํ”„๋ก์‹œ  /  ์•ก์…˜ ์ธ๋ณด์ผ€์ด์…˜ Struts2  ์•„ํ‚คํ…์ณ
[object Object],[object Object],[object Object],[object Object],์•ก์…˜ ํ”„๋ก์‹œ  /  ์•ก์…˜ ์ธ๋ณด์ผ€์ด์…˜ Struts2  ์•„ํ‚คํ…์ณ
ํ•„ํ„ฐ ๋””์ŠคํŒจ์ฒ˜ proxy = ActionProxyFactory.getFactory().createActionProxy() proxy.execute() ์•ก์…˜ ํ”„๋ก์‹œ invocation.invoke() ์•ก์…˜ ์ธ๋ณด์ผ€์ด์…˜ interceptor() invokeActionOnly() executeResult() ์ธํ„ฐ์…‰ํ„ฐ ์ธํ„ฐ์…‰ํ„ฐ ์ธํ„ฐ์…‰ํ„ฐ ๋ฆฌ์ ˆํŠธ ์•ก์…˜ ์•ก์…˜ ํ”„๋ก์‹œ  /  ์•ก์…˜ ์ธ๋ณด์ผ€์ด์…˜ ์ž‘์—… ํ๋ฆ„ Struts2  ์•„ํ‚คํ…์ณ
ActionProxy invocation.invoke() ActionInvocation invoke() { if (interceptors.hasNext()) { interceptor.interceptor(this); } else { invokeActionOnly(); } if (!executed) { executeResult(); } Interceptor interceptor(invocation) { โ€ฆ return invocation.invoke(); } ์•ก์…˜ ํ”„๋ก์‹œ  /  ์•ก์…˜ ์ธ๋ณด์ผ€์ด์…˜ ํ˜ธ์ถœ ๊ตฌ์กฐ Struts2  ์•„ํ‚คํ…์ณ
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],์•ก์…˜ ์ปจํ…์ŠคํŠธ Struts2  ์•„ํ‚คํ…์ณ
์•ก์…˜ ์ปจํ…์ŠคํŠธ ์‹œํ€€์Šค ๋‹ค์ด์–ด๊ทธ๋žจ Struts2  ์•„ํ‚คํ…์ณ :ActionContext :ActionProxy :ActionInvocation 1. getContext() ActionProxy ๊ฐ€ ์‹คํ–‰๋  ๋•Œ  ThreadLocal ๋กœ๋ถ€ํ„ฐ  ActionContext ๋ฅผ ์–ป๊ณ  ์ด๋ฅผ ์ €์žฅํ•œ๋‹ค . 2. return 4. return 3. getInvocationContext() ActionProxy ๋Š”  ActionInvocation ์„ ์œ„ํ•ด  ActionContext ๋ฅผ ์–ป๊ณ   ThreadLocal  ์ƒ์— ์ด๋ฅผ ์„ค์ •ํ•œ๋‹ค . 5. setContext(aContext) 6. invoke() 7. setContext(aContext) ActionInvocation ์ด ๋ฆฌํ„ด๋œ ํ›„ , ThreadLocal  ์ƒ์˜ ์˜ˆ์ „  ActionContext ๋ฅผ ์„ค์ •ํ•œ๋‹ค .
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],์•ก์…˜ ์ปจํ…์ŠคํŠธ์—์„œ ๊ด€๋ฆฌํ•˜๋Š” ์ •๋ณด Struts2  ์•„ํ‚คํ…์ณ
ํ•„ํ„ฐ ๋””์ŠคํŒจ์ฒ˜ ์•ก์…˜ ์ธ๋ณด์ผ€์ด์…˜ ํƒœ๊ทธ ์„œ๋ธŒ์‹œ์Šคํ…œ HTML, Dojo, Forms, etc ํ…œํ”Œ๋ฆฟ JSP, FreeMarker, Velocity, etc HttpServletResponse ๋ฆฌ์ ˆํŠธ ์•ก์…˜ ์•ก์…˜ํ”„๋ก์‹œ ํ™˜๊ฒฝ์„ค์ •๊ด€๋ฆฌ์ž struts.xml HttpServletRequest ์•ก์…˜ ๋งคํผ ์ธํ„ฐ์…‰ํ„ฐ 1 ์ธํ„ฐ์…‰ํ„ฐ 3 ์ธํ„ฐ์…‰ํ„ฐ 2 ์ธํ„ฐ์…‰ํ„ฐ 3 ์ธํ„ฐ์…‰ํ„ฐ 1 ์ธํ„ฐ์…‰ํ„ฐ 2 ์ธํ„ฐ์…‰ํ„ฐ Struts2  ์•„ํ‚คํ…์ณ
[object Object],[object Object],[object Object],[object Object],์•ก์…˜ ์ธ๋ณด์ผ€์ด์…˜ interceptor() invokeActionOnly () executeResult() ์ธํ„ฐ์…‰ํ„ฐ ์ธํ„ฐ์…‰ํ„ฐ ๋ฆฌ์ ˆํŠธ ์•ก์…˜ ์ธํ„ฐ์…‰ํ„ฐ Struts2  ์•„ํ‚คํ…์ณ
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],์ธํ„ฐ์…‰ํ„ฐ์˜ ์ข…๋ฅ˜ Struts2  ์•„ํ‚คํ…์ณ
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],์ธํ„ฐ์…‰ํ„ฐ์˜ ์ข…๋ฅ˜ Struts2  ์•„ํ‚คํ…์ณ
[object Object],[object Object],[object Object],[object Object],[object Object],์ธํ„ฐ์…‰ํ„ฐ์˜ ์ข…๋ฅ˜ Struts2  ์•„ํ‚คํ…์ณ
[object Object],[object Object],[object Object],[object Object],์ธํ„ฐ์…‰ํ„ฐ์˜ ์ข…๋ฅ˜ Struts2  ์•„ํ‚คํ…์ณ
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],์ธํ„ฐ์…‰ํ„ฐ์˜ ์ข…๋ฅ˜ Struts2  ์•„ํ‚คํ…์ณ
[object Object],[object Object],[object Object],[object Object],[object Object],์ธํ„ฐ์…‰ํ„ฐ์˜ ์ข…๋ฅ˜ Struts2  ์•„ํ‚คํ…์ณ
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],์ธํ„ฐ์…‰ํ„ฐ์˜ ์ข…๋ฅ˜ Struts2  ์•„ํ‚คํ…์ณ
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],์ธํ„ฐ์…‰ํ„ฐ์˜ ์ข…๋ฅ˜ Struts2  ์•„ํ‚คํ…์ณ
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],์ธํ„ฐ์…‰ํ„ฐ์˜ ์ข…๋ฅ˜ Struts2  ์•„ํ‚คํ…์ณ
[object Object],[object Object],[object Object],[object Object],[object Object],์ธํ„ฐ์…‰ํ„ฐ์˜ ์ข…๋ฅ˜ Struts2  ์•„ํ‚คํ…์ณ
ํ•„ํ„ฐ ๋””์ŠคํŒจ์ฒ˜ ์•ก์…˜ ์ธ๋ณด์ผ€์ด์…˜ ํƒœ๊ทธ ์„œ๋ธŒ์‹œ์Šคํ…œ HTML, Dojo, Forms, etc ํ…œํ”Œ๋ฆฟ JSP, FreeMarker, Velocity, etc HttpServletResponse ์ธํ„ฐ์…‰ํ„ฐ 1 ๋ฆฌ์ ˆํŠธ ์ธํ„ฐ์…‰ํ„ฐ 3 ์ธํ„ฐ์…‰ํ„ฐ 2 ์ธํ„ฐ์…‰ํ„ฐ 3 ์ธํ„ฐ์…‰ํ„ฐ 1 ์ธํ„ฐ์…‰ํ„ฐ 2 ์•ก์…˜ํ”„๋ก์‹œ ํ™˜๊ฒฝ์„ค์ •๊ด€๋ฆฌ์ž struts.xml HttpServletRequest ์•ก์…˜ ๋งคํผ ์•ก์…˜ ์•ก์…˜ Struts2  ์•„ํ‚คํ…์ณ
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],์•ก์…˜ Struts2  ์•„ํ‚คํ…์ณ
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],class MyAction extends ActionSupport { public String execute() throws Exception { } } ActionSupport <<interface>> Action <<interface>> Validatable <<interface>> TextProvider <<interface>> LocaleProvider <<interface>> ValidationAware class MyAction extends ActionSupport { ์•ก์…˜์˜ ์ƒ๊ด€ ๊ด€๊ณ„ Struts2  ์•„ํ‚คํ…์ณ
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],ActionSupport  ํด๋ž˜์Šค Struts2  ์•„ํ‚คํ…์ณ
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Action  ์ธํ„ฐํŽ˜์ด์Šค Struts2  ์•„ํ‚คํ…์ณ
[object Object],Validateable  ์ธํ„ฐํŽ˜์ด์Šค Struts2  ์•„ํ‚คํ…์ณ
[object Object],[object Object],ValidationAware  ์ธํ„ฐํŽ˜์ด์Šค Struts2  ์•„ํ‚คํ…์ณ
ValidationAware  ์ธํ„ฐํŽ˜์ด์Šค์˜ ๋ฉ”์†Œ๋“œ Struts2  ์•„ํ‚คํ…์ณ ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
TextProvider  ์ธํ„ฐํŽ˜์ด์Šค Struts2  ์•„ํ‚คํ…์ณ ,[object Object],[object Object]
TextProvider  ์ธํ„ฐํŽ˜์ด์Šค์˜ ๋ฉ”์†Œ๋“œ Struts2  ์•„ํ‚คํ…์ณ ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
LocaleProvider  ์ธํ„ฐํŽ˜์ด์Šค Struts2  ์•„ํ‚คํ…์ณ ,[object Object]
<action name=&quot; someAction &quot; class=&quot;example.SomeAction&quot;> <result  type =&quot; chain &quot;> anotherAction </result> </action> ย  <action name=&quot; anotherAction &quot; class=&quot;example.AnotherAction&quot;> <result>example/another.jsp</result> </action> ,[object Object],[object Object],์•ก์…˜ ์ฒด์ธ Struts2  ์•„ํ‚คํ…์ณ
ํ•„ํ„ฐ ๋””์ŠคํŒจ์ฒ˜ ์•ก์…˜ ์ธ๋ณด์ผ€์ด์…˜ ํƒœ๊ทธ ์„œ๋ธŒ์‹œ์Šคํ…œ HTML, Dojo, Forms, etc ํ…œํ”Œ๋ฆฟ JSP, FreeMarker, Velocity, etc HttpServletResponse ์ธํ„ฐ์…‰ํ„ฐ 1 ์ธํ„ฐ์…‰ํ„ฐ 3 ์ธํ„ฐ์…‰ํ„ฐ 2 ์ธํ„ฐ์…‰ํ„ฐ 3 ์ธํ„ฐ์…‰ํ„ฐ 1 ์ธํ„ฐ์…‰ํ„ฐ 2 ์•ก์…˜ํ”„๋ก์‹œ ํ™˜๊ฒฝ์„ค์ •๊ด€๋ฆฌ์ž struts.xml HttpServletRequest ์•ก์…˜ ๋งคํผ ์•ก์…˜ ๋ฆฌ์ ˆํŠธ ๋ฆฌ์ ˆํŠธ Struts2  ์•„ํ‚คํ…์ณ
๋ฆฌ์ ˆํŠธ Struts2  ์•„ํ‚คํ…์ณ ,[object Object],[object Object]
๋ฆฌ์ ˆํŠธ ํƒ€์ž… Struts2  ์•„ํ‚คํ…์ณ ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
๋ฆฌ์ ˆํŠธ ํƒ€์ž… Struts2  ์•„ํ‚คํ…์ณ ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
๋ฆฌ์ ˆํŠธ ํƒ€์ž… Struts2  ์•„ํ‚คํ…์ณ ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
์ŠคํŠธ๋Ÿฟ์ธ  2  ํƒœ๊ทธ ์ผ๋ฐ˜ ํƒœ๊ทธ Generic Tag ์ปจํŠธ๋กค ํƒœ๊ทธ Control Tag ๋ฐ์ดํ„ฐ ํƒœ๊ทธ Data Tag ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค ํƒœ๊ทธ UI Tag ํผ ํƒœ๊ทธ Form Tag ๋„Œํผํƒœ๊ทธ Non-Form Tag ,[object Object],[object Object],[object Object],ํƒœ๊ทธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํƒœ๊ทธ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
์ปจํŠธ๋กค ํƒœ๊ทธ ํƒœ๊ทธ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ,[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],์ปจํŠธ๋กค ํƒœ๊ทธ ํƒœ๊ทธ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],์ปจํŠธ๋กค ํƒœ๊ทธ ํƒœ๊ทธ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],๋ฐ์ดํ„ฐ ํƒœ๊ทธ ํƒœ๊ทธ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],๋ฐ์ดํ„ฐ ํƒœ๊ทธ ํƒœ๊ทธ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],๋ฐ์ดํ„ฐ ํƒœ๊ทธ ํƒœ๊ทธ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],๋ฐ์ดํ„ฐ ํƒœ๊ทธ ํƒœ๊ทธ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],๋ฐ์ดํ„ฐ ํƒœ๊ทธ ํƒœ๊ทธ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],ํผ ํƒœ๊ทธ ํƒœ๊ทธ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
[object Object],[object Object],[object Object],[object Object],ํผ ํƒœ๊ทธ ํƒœ๊ทธ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],ํผ ํƒœ๊ทธ ํƒœ๊ทธ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],ํผ ํƒœ๊ทธ ํƒœ๊ทธ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],ํผ ํƒœ๊ทธ ํƒœ๊ทธ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],ํผ ํƒœ๊ทธ ํƒœ๊ทธ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
[object Object],[object Object],ํผ ํƒœ๊ทธ ํƒœ๊ทธ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],๋„Œ ํผ ํƒœ๊ทธ ํƒœ๊ทธ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],๋„Œ ํผ ํƒœ๊ทธ ํƒœ๊ทธ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],๋„Œ ํผ ํƒœ๊ทธ ํƒœ๊ทธ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],web.xml ํ™˜๊ฒฝ์„ค์ •
<web-app โ€ฆ > <filter> <filter-name>struts</filter-name> <filter-class> org.apache.struts2.dispatcher.FilterDispatcher </filter-class> </filter> <filter-mapping> <filter-name>struts</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app> ์ŠคํŠธ๋Ÿฟ์ธ  2  ์ปจํŠธ๋กค๋Ÿฌ ํ•„ํ„ฐ ๋””์ŠคํŒจ์ฒ˜ ๋“ฑ๋ก ํ™˜๊ฒฝ์„ค์ •
<?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; ?> <!DOCTYPE struts PUBLIC &quot;-//Apache Software Foundation//DTD Struts Configuration 2.0//EN&quot; &quot;http://struts.apache.org/dtds/struts-2.0.dtd&quot;> <struts> <package name=&quot;person&quot;  extends=&quot;struts-default&quot; namespace=&quot;&quot;> <action name=&quot;myAction&quot; class=&quot;example.MyAction&quot;> <result>/myAction.jsp</result> </action> </package> </struts> ์ŠคํŠธ๋Ÿฟ์ธ  2  ํ™˜๊ฒฝ์„ค์ • ํŒŒ์ผ : struts.xml ํ™˜๊ฒฝ์„ค์ •
<struts> < include  file=&quot;struts-default.xml&quot;/> < include  file=&quot;config-browser.xml&quot;/> ย  <package name=&quot;default&quot; extends=&quot;struts-default&quot;> ... </package> ย  <include file=&quot;other.xml&quot;/> </struts> struts.xml ์— ๋‹ค๋ฅธ ์„ค์ • ํŒŒ์ผ ํฌํ•จ ํ™˜๊ฒฝ์„ค์ • ,[object Object]
<struts> <constant name=&quot;struts.devMode&quot; value=&quot;true&quot; />  </struts> struts.devMode = true <filter> <filter-name>struts</filter-name> <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class> <init-param> <param-name>struts.devMode</param-name> <param-value>true</param-value> </init-param> </filter> ์ƒ์ˆ˜ ๊ฐ’ ์ •์˜ ํ™˜๊ฒฝ์„ค์ • ,[object Object],[object Object],[object Object]
struts-default.xml struts-plugin.xml struts.xml struts.properties web.xml ์ƒ์ˆ˜ ๊ฐ’ ๊ฒ€์ƒ‰ ํ™˜๊ฒฝ์„ค์ •
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],ํŒจํ‚ค์ง€ ์„ค์ • ํ™˜๊ฒฝ์„ค์ •
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],ํŒจํ‚ค์ง€ ์†์„ฑ ํ™˜๊ฒฝ์„ค์ •
<struts> <package  name=&quot;employee&quot;  extends=&quot;default&quot;  namespace=&quot;/employee&quot;> <default-interceptor-ref name=&quot;crudStack&quot;/> <action name=&quot;list&quot; method=&quot;list&quot;  class=&quot;org.apache.struts2.showcase.action.EmployeeAction&quot;> <result>/empmanager/listEmployees.jsp</result> <interceptor-ref name=&quot;basicStack&quot;> </action> </package> </struts> ํŒจํ‚ค์ง€ ์„ค์ • ์˜ˆ ํ™˜๊ฒฝ์„ค์ •
๋„ค์ž„์ŠคํŽ˜์ด์Šค ํ™˜๊ฒฝ์„ค์ • ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
<package name=&quot;student&quot; namespace=&quot; /student &quot;> <action name=&quot; save &quot; class=&quot;example.StudentAction&quot;> <result>listStudent.jsp</result> </action> </package> <package name=&quot;professor&quot; namespace=&quot; /professor &quot;> <action name=&quot; save &quot; class=&quot;example.ProfessorAction&quot;> <result>listProfessor.jsp</result> </action> </package> ๋„ค์ž„์ŠคํŽ˜์ด์Šค ์˜ˆ ํ™˜๊ฒฝ์„ค์ •
์•ก์…˜ ์„ค์ • ํ™˜๊ฒฝ์„ค์ • ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
<action name= &quot; logon&quot; class= &quot;  example .SecurityAction &quot;  method=&quot;logon> <result> logon.jsp </result> </action> ์•ก์…˜ ์ด๋ฆ„ ๋ฆฌ์ ˆํŠธ (type  ์ƒ๋žต ์‹œ ๊ธฐ๋ณธ๊ฐ’์€  dispatcher  ํƒ€์ž… ์‚ฌ์šฉ  name  ์ƒ๋žต ์‹œ ๊ธฐ๋ณธ๊ฐ’์€  success  ๋ฆฌ์ ˆํŠธ ์ฝ”๋“œ ์‚ฌ์šฉ ) ๋ฆฌ์ ˆํŠธ ํŽ˜์ด์ง€ ์ •์˜ ์•ก์…˜ ํด๋ž˜์Šค ์•ก์…˜ ๋ฉ”์†Œ๋“œ (method  ์†์„ฑ ์ƒ๋žต ์‹œ  execute()  ์‚ฌ์šฉ ) ์•ก์…˜ ์„ค์ • ํ™˜๊ฒฝ์„ค์ •
<action name= &quot; logon&quot; class= &quot;  example .SecurityAction &quot;  method=  &quot;  logon  &quot; > <interceptor-ref name=&quot;basicStack&quot;> <result type=&quot;redirect-action&quot;>menu</result> <result name=&quot;input&quot;>/example/logon.jsp</result> </action> ์•ก์…˜ ์ด๋ฆ„ ๋‹ค๋ฅธ ์•ก์…˜์„ ๋ฆฌ์ ˆํŠธ๋กœ ์‚ฌ์šฉ JSP ๋ฅผ ๋ฆฌ์ ˆํŠธ๋กœ ์‚ฌ์šฉ ์•ก์…˜์— ์ธํ„ฐ์…‰ํ„ฐ ์Šคํƒ ์ ์šฉ ์•ก์…˜ ํด๋ž˜์Šค ์•ก์…˜ ๋ฉ”์†Œ๋“œ ๋‹ค์ค‘ ๋ฆฌ์ ˆํŠธ ์ •์˜ ์•ก์…˜ ์„ค์ • ์˜ˆ ํ™˜๊ฒฝ์„ค์ •
<action name=&quot;delete&quot; class=&quot;example.MyAction&quot;  method =&quot; delete &quot;> public class MyAction { public String  delete () throws Exception { ... return &quot;success&quot;; } } ์•ก์…˜ ๋ฉ”์†Œ๋“œ ์„ค์ • ํ™˜๊ฒฝ์„ค์ • ,[object Object]
<action name=&quot; * Data &quot; class=&quot;example.MyAction&quot; method=&quot; {1} &quot;> add Data   add () remove Data   remove () edit Data   edit () view Data   view () find Data   find () *  ์— ํ•ด๋‹นํ•˜๋Š” ์•ก์…˜์˜ ์ ‘๋‘์–ด๊ฐ€ ๋ฉ”์†Œ๋“œ ์ด๋ฆ„์ด ๋œ๋‹ค . ์™€์ผ๋“œ ์นด๋“œ ๋งคํ•‘ ํ™˜๊ฒฝ์„ค์ • ,[object Object]
<package name= &quot; default&quot; extends= &quot; struts-default&quot;> < default-action-ref  name=&quot;underConstruction&quot;> <action name=&quot;underConstruction&quot;> <result>/underConstruction.jsp</result> </action> </package> ๊ธฐ๋ณธ ์•ก์…˜ ๋งคํ•‘ ํ™˜๊ฒฝ์„ค์ • ,[object Object]
<package ... > < global-results > <result name=&quot;error&quot;>/Error.jsp</result> <result name=&quot;invalid.token&quot;>/Error.jsp</result> <result name=&quot;login&quot; type=&quot;redirect-action&quot;> Logon!input </result> < /global-results > </package> ๊ธ€๋กœ๋ฒŒ ๋ฆฌ์ ˆํŠธ ํ™˜๊ฒฝ์„ค์ • ,[object Object],[object Object],[object Object]
๋ฆฌ์†Œ์Šค ๋ฒˆ๋“ค ํ™˜๊ฒฝ์„ค์ • ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
๋ฆฌ์†Œ์Šค ๋ฒˆ๋“ค์— ์ •์˜ํ•œ ๋‚ด์šฉ ์ ์šฉ ๋Œ€์ƒ ํ™˜๊ฒฝ์„ค์ • ,[object Object],[object Object],[object Object]
๋ฆฌ์†Œ์Šค ๋ฒˆ๋“ค ์‚ฌ์šฉ๋ฒ• ํ™˜๊ฒฝ์„ค์ • ,[object Object],[object Object],[object Object],[object Object],[object Object]
์•ก์…˜ ๋ฆฌ์†Œ์Šค ๋ฒˆ๋“ค ํ™˜๊ฒฝ์„ค์ • ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
# ๋ฆฌ์†Œ์Šค ๋ฒˆ๋“ค ํŒŒ์ผ label.sample   =  ์ด ๊ฒƒ์€  properties  ํŒŒ์ผ ์•ˆ์˜ ๋ฉ”์‹œ์ง€์ž…๋‹ˆ๋‹ค . // ์•ก์…˜ ํด๋ž˜์Šค public class MyAction extends ActionSupport { private String message; public String execute() throws Exception { message = getText(&quot; label.sample &quot;)); return SUCCESS; } ... } #JSP <s:text name=&quot; label.sample &quot;/> <s:submit key=&quot; label.sample &quot;/> <s:property value=&quot; %{getText(โ€˜label.sampleโ€™)}  &quot;/> ๋ฆฌ์†Œ์Šค ๋ฒˆ๋“ค ์‚ฌ์šฉ ์˜ˆ ํ™˜๊ฒฝ์„ค์ •
์•ก์…˜ ๋ฆฌ์†Œ์Šค ๋ฒˆ๋“ค ๋ถ€๋ชจ ํด๋ž˜์Šค ๋ฆฌ์†Œ์Šค ๋ฒˆ๋“ค ์ธํ„ฐํŽ˜์ด์Šค ๋ฆฌ์†Œ์Šค ๋ฒˆ๋“ค ๋ชจ๋ธ ๋“œ๋ฆฌ๋ธ์˜ ๋ชจ๋ธ ๋ฆฌ์†Œ์Šค ๋ฒˆ๋“ค ํŒจํ‚ค์ง€ ๋ฆฌ์†Œ์Šค ๋ฒˆ๋“ค ๊ธ€๋กœ๋ฒŒ ๋ฆฌ์†Œ์Šค ๋ฒˆ๋“ค ๋ฆฌ์†Œ์Šค ๋ฒˆ๋“ค ๊ฒ€์ƒ‰ ์ˆœ์„œ ํ™˜๊ฒฝ์„ค์ •
ํ”Œ๋Ÿฌ๊ทธ์ธ ํ”Œ๋Ÿฌ๊ทธ์ธ ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
ํ”Œ๋Ÿฌ๊ทธ์ธ ํ”Œ๋Ÿฌ๊ทธ์ธ ,[object Object],[object Object]
Sitemesh ํ”Œ๋Ÿฌ๊ทธ์ธ ,[object Object],[object Object],[object Object]
welcome.jsp - Home Page example.com ๊ด‘๊ณ  ๋ฐฐ๋„ˆ 1 ๊ฒ€์ƒ‰ ์ตœ์‹  ๋‰ด์Šค . . search.cgi - Search Results ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ . . . . . ๊ด‘๊ณ  ๋ฐฐ๋„ˆ 2 ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ ๋ฐ”๋”” ๋‚ด์šฉ ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ example.com:   {title} ๋ฉ”๋‰ด . ํ™ˆ . ๋‰ด์Šค . ๊ฒ€์ƒ‰ . ๊ณต์ง€ copyright 2007 example.com welcome.jsp - Home Page example.com:   Home Page ๋ฉ”๋‰ด . ํ™ˆ . ๋‰ด์Šค . ๊ฒ€์ƒ‰ . ๊ณต์ง€ copyright 2007 example.com example.com ๊ฒ€์ƒ‰ ์ตœ์‹  ๋‰ด์Šค . . ๊ด‘๊ณ  ๋ฐฐ๋„ˆ 1 search.cgi - Search Results example.com:   Search Results ๋ฉ”๋‰ด . ํ™ˆ . ๋‰ด์Šค . ๊ฒ€์ƒ‰ . ๊ณต์ง€ copyright 2007 example.com ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ . . . . . ๊ด‘๊ณ  ๋ฐฐ๋„ˆ 2 decorator ์— ์˜ํ•ด์„œ  ๋ ˆ์ด์•„์›ƒ์„ ๊ตฌ์„ฑ . ์ตœ์ข… ํŽ˜์ด์ง€๋ฅผ ์ƒ์„ฑํ•œ๋‹ค . decorator ์— ์˜ํ•ด์„œ  ๋ ˆ์ด์•„์›ƒ์„ ๊ตฌ์„ฑํ•œ๋‹ค . ์ตœ์ข… ํŽ˜์ด์ง€๋ฅผ ์ƒ์„ฑํ•œ๋‹ค . decorator ์— ์ •์˜๋œ ๋ ˆ์ด์•„์›ƒ . Sitemesh  ์ž‘์—… ๊ฐœ๋…๋„ ํ”Œ๋Ÿฌ๊ทธ์ธ
JFreeChart  ํ”Œ๋Ÿฌ๊ทธ์ธ ํ”Œ๋Ÿฌ๊ทธ์ธ ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
JFreeChart  ์ƒ˜ํ”Œ ํ”Œ๋Ÿฌ๊ทธ์ธ
JasperReport  ํ”Œ๋Ÿฌ๊ทธ์ธ ํ”Œ๋Ÿฌ๊ทธ์ธ ,[object Object],[object Object],[object Object],[object Object],[object Object]
JasperReport  ์ƒ˜ํ”Œ ํ”Œ๋Ÿฌ๊ทธ์ธ
iReport ๋ฅผ ์‚ฌ์šฉํ•œ  JasperReport  ๋””์ž์ธ ํ”Œ๋Ÿฌ๊ทธ์ธ
Why not? ํ”Œ๋Ÿฌ๊ทธ์ธ ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค .

Mรกs contenido relacionado

La actualidad mรกs candente

Jpa แ„Œแ…กแ†ฏ (แ„’แ…กแ„‚แ…ณแ†ซ แ„Žแ…ฅแ†จ) แ„’แ…กแ„€แ…ต
Jpa แ„Œแ…กแ†ฏ (แ„’แ…กแ„‚แ…ณแ†ซ แ„Žแ…ฅแ†จ) แ„’แ…กแ„€แ…ตJpa แ„Œแ…กแ†ฏ (แ„’แ…กแ„‚แ…ณแ†ซ แ„Žแ…ฅแ†จ) แ„’แ…กแ„€แ…ต
Jpa แ„Œแ…กแ†ฏ (แ„’แ…กแ„‚แ…ณแ†ซ แ„Žแ…ฅแ†จ) แ„’แ…กแ„€แ…ต๊ฒฝ์› ์ด
ย 
DDD ๊ตฌํ˜„๊ธฐ์ดˆ (๊ฑฐ์˜ Final ๋ฒ„์ „)
DDD ๊ตฌํ˜„๊ธฐ์ดˆ (๊ฑฐ์˜ Final ๋ฒ„์ „)DDD ๊ตฌํ˜„๊ธฐ์ดˆ (๊ฑฐ์˜ Final ๋ฒ„์ „)
DDD ๊ตฌํ˜„๊ธฐ์ดˆ (๊ฑฐ์˜ Final ๋ฒ„์ „)beom kyun choi
ย 
Spring ๊ต์œก ์ž๋ฃŒ
Spring ๊ต์œก ์ž๋ฃŒSpring ๊ต์œก ์ž๋ฃŒ
Spring ๊ต์œก ์ž๋ฃŒHyosang Hong
ย 
2007๋…„ ์ œ8ํšŒ JCO ์ปจํผ๋Ÿฐ์Šค POJO ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐœํ‘œ ์ž๋ฃŒ
2007๋…„ ์ œ8ํšŒ JCO ์ปจํผ๋Ÿฐ์Šค POJO ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐœํ‘œ ์ž๋ฃŒ2007๋…„ ์ œ8ํšŒ JCO ์ปจํผ๋Ÿฐ์Šค POJO ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐœํ‘œ ์ž๋ฃŒ
2007๋…„ ์ œ8ํšŒ JCO ์ปจํผ๋Ÿฐ์Šค POJO ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐœํ‘œ ์ž๋ฃŒbeom kyun choi
ย 
Scala, Spring-Boot, JPA์˜ ๋ถˆํŽธํ•˜๋ฉด์„œ๋„ ์ฆ๊ฑฐ์šด ๋™๊ฑฐ
Scala, Spring-Boot, JPA์˜ ๋ถˆํŽธํ•˜๋ฉด์„œ๋„ ์ฆ๊ฑฐ์šด ๋™๊ฑฐScala, Spring-Boot, JPA์˜ ๋ถˆํŽธํ•˜๋ฉด์„œ๋„ ์ฆ๊ฑฐ์šด ๋™๊ฑฐ
Scala, Spring-Boot, JPA์˜ ๋ถˆํŽธํ•˜๋ฉด์„œ๋„ ์ฆ๊ฑฐ์šด ๋™๊ฑฐJavajigi Jaesung
ย 
Ksug2015 - JPA2, JPA แ„€แ…ตแ„Žแ…ฉแ„‹แ…ชแ„†แ…ขแ„‘แ…ตแ†ผ
Ksug2015 - JPA2, JPA แ„€แ…ตแ„Žแ…ฉแ„‹แ…ชแ„†แ…ขแ„‘แ…ตแ†ผKsug2015 - JPA2, JPA แ„€แ…ตแ„Žแ…ฉแ„‹แ…ชแ„†แ…ขแ„‘แ…ตแ†ผ
Ksug2015 - JPA2, JPA แ„€แ…ตแ„Žแ…ฉแ„‹แ…ชแ„†แ…ขแ„‘แ…ตแ†ผYounghan Kim
ย 

La actualidad mรกs candente (6)

Jpa แ„Œแ…กแ†ฏ (แ„’แ…กแ„‚แ…ณแ†ซ แ„Žแ…ฅแ†จ) แ„’แ…กแ„€แ…ต
Jpa แ„Œแ…กแ†ฏ (แ„’แ…กแ„‚แ…ณแ†ซ แ„Žแ…ฅแ†จ) แ„’แ…กแ„€แ…ตJpa แ„Œแ…กแ†ฏ (แ„’แ…กแ„‚แ…ณแ†ซ แ„Žแ…ฅแ†จ) แ„’แ…กแ„€แ…ต
Jpa แ„Œแ…กแ†ฏ (แ„’แ…กแ„‚แ…ณแ†ซ แ„Žแ…ฅแ†จ) แ„’แ…กแ„€แ…ต
ย 
DDD ๊ตฌํ˜„๊ธฐ์ดˆ (๊ฑฐ์˜ Final ๋ฒ„์ „)
DDD ๊ตฌํ˜„๊ธฐ์ดˆ (๊ฑฐ์˜ Final ๋ฒ„์ „)DDD ๊ตฌํ˜„๊ธฐ์ดˆ (๊ฑฐ์˜ Final ๋ฒ„์ „)
DDD ๊ตฌํ˜„๊ธฐ์ดˆ (๊ฑฐ์˜ Final ๋ฒ„์ „)
ย 
Spring ๊ต์œก ์ž๋ฃŒ
Spring ๊ต์œก ์ž๋ฃŒSpring ๊ต์œก ์ž๋ฃŒ
Spring ๊ต์œก ์ž๋ฃŒ
ย 
2007๋…„ ์ œ8ํšŒ JCO ์ปจํผ๋Ÿฐ์Šค POJO ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐœํ‘œ ์ž๋ฃŒ
2007๋…„ ์ œ8ํšŒ JCO ์ปจํผ๋Ÿฐ์Šค POJO ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐœํ‘œ ์ž๋ฃŒ2007๋…„ ์ œ8ํšŒ JCO ์ปจํผ๋Ÿฐ์Šค POJO ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐœํ‘œ ์ž๋ฃŒ
2007๋…„ ์ œ8ํšŒ JCO ์ปจํผ๋Ÿฐ์Šค POJO ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐœํ‘œ ์ž๋ฃŒ
ย 
Scala, Spring-Boot, JPA์˜ ๋ถˆํŽธํ•˜๋ฉด์„œ๋„ ์ฆ๊ฑฐ์šด ๋™๊ฑฐ
Scala, Spring-Boot, JPA์˜ ๋ถˆํŽธํ•˜๋ฉด์„œ๋„ ์ฆ๊ฑฐ์šด ๋™๊ฑฐScala, Spring-Boot, JPA์˜ ๋ถˆํŽธํ•˜๋ฉด์„œ๋„ ์ฆ๊ฑฐ์šด ๋™๊ฑฐ
Scala, Spring-Boot, JPA์˜ ๋ถˆํŽธํ•˜๋ฉด์„œ๋„ ์ฆ๊ฑฐ์šด ๋™๊ฑฐ
ย 
Ksug2015 - JPA2, JPA แ„€แ…ตแ„Žแ…ฉแ„‹แ…ชแ„†แ…ขแ„‘แ…ตแ†ผ
Ksug2015 - JPA2, JPA แ„€แ…ตแ„Žแ…ฉแ„‹แ…ชแ„†แ…ขแ„‘แ…ตแ†ผKsug2015 - JPA2, JPA แ„€แ…ตแ„Žแ…ฉแ„‹แ…ชแ„†แ…ขแ„‘แ…ตแ†ผ
Ksug2015 - JPA2, JPA แ„€แ…ตแ„Žแ…ฉแ„‹แ…ชแ„†แ…ขแ„‘แ…ตแ†ผ
ย 

Destacado

20130710 ossf koscom
20130710 ossf koscom20130710 ossf koscom
20130710 ossf koscomAhnku Toh
ย 
Hey There Wonderful Guys!
Hey There Wonderful Guys!Hey There Wonderful Guys!
Hey There Wonderful Guys!figueroalvvvpjhrqu
ย 
La no rodona de la raรณ
La no rodona de la raรณLa no rodona de la raรณ
La no rodona de la raรณnuriapujolas
ย 
RESUME
RESUMERESUME
RESUMEMMAGCAL
ย 
Presentaciรณn1
Presentaciรณn1Presentaciรณn1
Presentaciรณn1akoky
ย 
VC / PE deals in India in October 016
VC / PE deals in India in October 016VC / PE deals in India in October 016
VC / PE deals in India in October 016India Business Reports
ย 
Photo
PhotoPhoto
PhotoJuliieju
ย 
Tema 7 lengua 6ยบ
Tema 7 lengua 6ยบTema 7 lengua 6ยบ
Tema 7 lengua 6ยบmaestrojuanavila
ย 
Six nations fixtures 2012
Six nations fixtures 2012Six nations fixtures 2012
Six nations fixtures 2012stevenreilly
ย 
Cuadro comparativo entre la educaciรณn de ecuador y finlandia
Cuadro comparativo entre la educaciรณn de ecuador y finlandiaCuadro comparativo entre la educaciรณn de ecuador y finlandia
Cuadro comparativo entre la educaciรณn de ecuador y finlandialabinager
ย 
JBoss Community Introduction
JBoss Community IntroductionJBoss Community Introduction
JBoss Community Introductionjbugkorea
ย 
Applying CEP Drools Fusion - Drools jBPM Bootcamps 2011
Applying CEP Drools Fusion - Drools jBPM Bootcamps 2011Applying CEP Drools Fusion - Drools jBPM Bootcamps 2011
Applying CEP Drools Fusion - Drools jBPM Bootcamps 2011Geoffrey De Smet
ย 
Drools and jBPM 6 Overview
Drools and jBPM 6 OverviewDrools and jBPM 6 Overview
Drools and jBPM 6 OverviewMark Proctor
ย 

Destacado (20)

20130710 ossf koscom
20130710 ossf koscom20130710 ossf koscom
20130710 ossf koscom
ย 
Drools Ecosystem
Drools EcosystemDrools Ecosystem
Drools Ecosystem
ย 
Hey There Wonderful Guys!
Hey There Wonderful Guys!Hey There Wonderful Guys!
Hey There Wonderful Guys!
ย 
CPP SRC
CPP SRCCPP SRC
CPP SRC
ย 
La no rodona de la raรณ
La no rodona de la raรณLa no rodona de la raรณ
La no rodona de la raรณ
ย 
Mapa concepual gerencia de proyectos
Mapa concepual gerencia de proyectosMapa concepual gerencia de proyectos
Mapa concepual gerencia de proyectos
ย 
Kevinquintero
KevinquinteroKevinquintero
Kevinquintero
ย 
RESUME
RESUMERESUME
RESUME
ย 
test test
test test test test
test test
ย 
Presentaciรณn1
Presentaciรณn1Presentaciรณn1
Presentaciรณn1
ย 
VC / PE deals in India in October 016
VC / PE deals in India in October 016VC / PE deals in India in October 016
VC / PE deals in India in October 016
ย 
Photo
PhotoPhoto
Photo
ย 
Informe 77
Informe 77Informe 77
Informe 77
ย 
Tema 7 lengua 6ยบ
Tema 7 lengua 6ยบTema 7 lengua 6ยบ
Tema 7 lengua 6ยบ
ย 
Six nations fixtures 2012
Six nations fixtures 2012Six nations fixtures 2012
Six nations fixtures 2012
ย 
Real Estate Sector in India
Real Estate Sector in IndiaReal Estate Sector in India
Real Estate Sector in India
ย 
Cuadro comparativo entre la educaciรณn de ecuador y finlandia
Cuadro comparativo entre la educaciรณn de ecuador y finlandiaCuadro comparativo entre la educaciรณn de ecuador y finlandia
Cuadro comparativo entre la educaciรณn de ecuador y finlandia
ย 
JBoss Community Introduction
JBoss Community IntroductionJBoss Community Introduction
JBoss Community Introduction
ย 
Applying CEP Drools Fusion - Drools jBPM Bootcamps 2011
Applying CEP Drools Fusion - Drools jBPM Bootcamps 2011Applying CEP Drools Fusion - Drools jBPM Bootcamps 2011
Applying CEP Drools Fusion - Drools jBPM Bootcamps 2011
ย 
Drools and jBPM 6 Overview
Drools and jBPM 6 OverviewDrools and jBPM 6 Overview
Drools and jBPM 6 Overview
ย 

Similar a Daejeon IT Developer Conference Struts2

ํ…Œ์Šคํ„ฐ๋„ ์•Œ์•„์•ผ ํ•  ์›น ๊ฐœ๋ฐœ(ํ…Œ์ŠคํŠธ ๊ต์œก 3์žฅ 1์ ˆ ๋ถ€๋ถ„๋ฐœ์ทŒ)
ํ…Œ์Šคํ„ฐ๋„ ์•Œ์•„์•ผ ํ•  ์›น ๊ฐœ๋ฐœ(ํ…Œ์ŠคํŠธ ๊ต์œก 3์žฅ 1์ ˆ ๋ถ€๋ถ„๋ฐœ์ทŒ)ํ…Œ์Šคํ„ฐ๋„ ์•Œ์•„์•ผ ํ•  ์›น ๊ฐœ๋ฐœ(ํ…Œ์ŠคํŠธ ๊ต์œก 3์žฅ 1์ ˆ ๋ถ€๋ถ„๋ฐœ์ทŒ)
ํ…Œ์Šคํ„ฐ๋„ ์•Œ์•„์•ผ ํ•  ์›น ๊ฐœ๋ฐœ(ํ…Œ์ŠคํŠธ ๊ต์œก 3์žฅ 1์ ˆ ๋ถ€๋ถ„๋ฐœ์ทŒ)SangIn Choung
ย 
Big Data platform์„ ์œ„ํ•œ Sencha Ext JS ์‚ฌ๋ก€.
Big Data platform์„ ์œ„ํ•œ Sencha Ext JS ์‚ฌ๋ก€.Big Data platform์„ ์œ„ํ•œ Sencha Ext JS ์‚ฌ๋ก€.
Big Data platform์„ ์œ„ํ•œ Sencha Ext JS ์‚ฌ๋ก€.ํšจ๊ทผ ๋ฐ•
ย 
ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจ๋Ÿฌ๋‹ค์ž„์˜ ์ง„ํ™” ๋ฐ Spring์˜ ๊ธˆ์œต๊ถŒ ์ ์šฉ
ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจ๋Ÿฌ๋‹ค์ž„์˜ ์ง„ํ™” ๋ฐ Spring์˜ ๊ธˆ์œต๊ถŒ ์ ์šฉํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจ๋Ÿฌ๋‹ค์ž„์˜ ์ง„ํ™” ๋ฐ Spring์˜ ๊ธˆ์œต๊ถŒ ์ ์šฉ
ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจ๋Ÿฌ๋‹ค์ž„์˜ ์ง„ํ™” ๋ฐ Spring์˜ ๊ธˆ์œต๊ถŒ ์ ์šฉ์ค‘์„  ๊ณฝ
ย 
MVVM Pattern for Android
MVVM Pattern for AndroidMVVM Pattern for Android
MVVM Pattern for Androidtaeinkim6
ย 
CRUD Pattern in Ajax
CRUD Pattern in AjaxCRUD Pattern in Ajax
CRUD Pattern in AjaxRhio Kim
ย 
์˜คํ”ˆ์†Œ์Šค ํ”„๋ ˆ์ž„์›Œํฌ ๊ธฐ๋ฐ˜ ์›น ์„œ๋น„์Šค ์„ค๊ณ„ (Example)
์˜คํ”ˆ์†Œ์Šค ํ”„๋ ˆ์ž„์›Œํฌ ๊ธฐ๋ฐ˜ ์›น ์„œ๋น„์Šค ์„ค๊ณ„ (Example)์˜คํ”ˆ์†Œ์Šค ํ”„๋ ˆ์ž„์›Œํฌ ๊ธฐ๋ฐ˜ ์›น ์„œ๋น„์Šค ์„ค๊ณ„ (Example)
์˜คํ”ˆ์†Œ์Šค ํ”„๋ ˆ์ž„์›Œํฌ ๊ธฐ๋ฐ˜ ์›น ์„œ๋น„์Šค ์„ค๊ณ„ (Example)์ค‘์„  ๊ณฝ
ย 
Opensource apm scouter in practice
Opensource apm scouter in practiceOpensource apm scouter in practice
Opensource apm scouter in practicedonghoonlee18659041
ย 
์Šคํ”„๋ง๊ตฐ์‚ด์—†์ด์„ธํŒ…ํ•˜๊ธฐ(The way to setting the Spring framework for web.)
์Šคํ”„๋ง๊ตฐ์‚ด์—†์ด์„ธํŒ…ํ•˜๊ธฐ(The way to setting the Spring framework for web.)์Šคํ”„๋ง๊ตฐ์‚ด์—†์ด์„ธํŒ…ํ•˜๊ธฐ(The way to setting the Spring framework for web.)
์Šคํ”„๋ง๊ตฐ์‚ด์—†์ด์„ธํŒ…ํ•˜๊ธฐ(The way to setting the Spring framework for web.)EunChul Shin
ย 
๋ฐ˜๋ณต์ ์ธ ์ž‘์—…์ด ์‹ซ์€ ์•ˆ๋“œ๋กœ์ด๋“œ ๊ฐœ๋ฐœ์ž์—๊ฒŒ
๋ฐ˜๋ณต์ ์ธ ์ž‘์—…์ด ์‹ซ์€ ์•ˆ๋“œ๋กœ์ด๋“œ ๊ฐœ๋ฐœ์ž์—๊ฒŒ๋ฐ˜๋ณต์ ์ธ ์ž‘์—…์ด ์‹ซ์€ ์•ˆ๋“œ๋กœ์ด๋“œ ๊ฐœ๋ฐœ์ž์—๊ฒŒ
๋ฐ˜๋ณต์ ์ธ ์ž‘์—…์ด ์‹ซ์€ ์•ˆ๋“œ๋กœ์ด๋“œ ๊ฐœ๋ฐœ์ž์—๊ฒŒSungju Jin
ย 
์ฒ˜์Œ ์‹œ์ž‘ํ•˜๋Š” ๋ผ๋ผ๋ฒจ
์ฒ˜์Œ ์‹œ์ž‘ํ•˜๋Š” ๋ผ๋ผ๋ฒจ์ฒ˜์Œ ์‹œ์ž‘ํ•˜๋Š” ๋ผ๋ผ๋ฒจ
์ฒ˜์Œ ์‹œ์ž‘ํ•˜๋Š” ๋ผ๋ผ๋ฒจKwangSeob Jeong
ย 
XECon2015 :: [2-1] ์ •๊ด‘์„ญ - ์ฒ˜์Œ ์‹œ์ž‘ํ•˜๋Š” laravel
XECon2015 :: [2-1] ์ •๊ด‘์„ญ - ์ฒ˜์Œ ์‹œ์ž‘ํ•˜๋Š” laravelXECon2015 :: [2-1] ์ •๊ด‘์„ญ - ์ฒ˜์Œ ์‹œ์ž‘ํ•˜๋Š” laravel
XECon2015 :: [2-1] ์ •๊ด‘์„ญ - ์ฒ˜์Œ ์‹œ์ž‘ํ•˜๋Š” laravelXpressEngine
ย 
[1A5]แ„’แ…ญแ„‹แ…ฒแ†ฏแ„Œแ…ฅแ†จแ„‹แ…ตแ†ซแ„‹แ…กแ†ซแ„ƒแ…ณแ„…แ…ฉแ„‹แ…ตแ„ƒแ…ณแ„‹แ…ขแ†ธแ„€แ…ขแ„‡แ…กแ†ฏ
[1A5]แ„’แ…ญแ„‹แ…ฒแ†ฏแ„Œแ…ฅแ†จแ„‹แ…ตแ†ซแ„‹แ…กแ†ซแ„ƒแ…ณแ„…แ…ฉแ„‹แ…ตแ„ƒแ…ณแ„‹แ…ขแ†ธแ„€แ…ขแ„‡แ…กแ†ฏ[1A5]แ„’แ…ญแ„‹แ…ฒแ†ฏแ„Œแ…ฅแ†จแ„‹แ…ตแ†ซแ„‹แ…กแ†ซแ„ƒแ…ณแ„…แ…ฉแ„‹แ…ตแ„ƒแ…ณแ„‹แ…ขแ†ธแ„€แ…ขแ„‡แ…กแ†ฏ
[1A5]แ„’แ…ญแ„‹แ…ฒแ†ฏแ„Œแ…ฅแ†จแ„‹แ…ตแ†ซแ„‹แ…กแ†ซแ„ƒแ…ณแ„…แ…ฉแ„‹แ…ตแ„ƒแ…ณแ„‹แ…ขแ†ธแ„€แ…ขแ„‡แ…กแ†ฏNAVER D2
ย 
แ„‰แ…ณแ„‘แ…ณแ„…แ…ตแ†ผ แ„‰แ…ณแ„แ…ฅแ„ƒแ…ต 1แ„Œแ…กแ†ผ
แ„‰แ…ณแ„‘แ…ณแ„…แ…ตแ†ผ แ„‰แ…ณแ„แ…ฅแ„ƒแ…ต 1แ„Œแ…กแ†ผแ„‰แ…ณแ„‘แ…ณแ„…แ…ตแ†ผ แ„‰แ…ณแ„แ…ฅแ„ƒแ…ต 1แ„Œแ…กแ†ผ
แ„‰แ…ณแ„‘แ…ณแ„…แ…ตแ†ผ แ„‰แ…ณแ„แ…ฅแ„ƒแ…ต 1แ„Œแ…กแ†ผSeongchan Kang
ย 
Metaworks3 Framework workbook 2015
Metaworks3 Framework workbook 2015Metaworks3 Framework workbook 2015
Metaworks3 Framework workbook 2015uEngine Solutions
ย 
[๊ฐœ๋ฐฉํ˜• ํด๋ผ์šฐ๋“œ ํ”Œ๋žซํผ ์˜คํ”ˆ์„ธ๋ฏธ๋‚˜ ์˜คํ”ˆํด๋ผ์šฐ๋“œ Pub] 3.open shift ๋ถ„์„
[๊ฐœ๋ฐฉํ˜• ํด๋ผ์šฐ๋“œ ํ”Œ๋žซํผ ์˜คํ”ˆ์„ธ๋ฏธ๋‚˜ ์˜คํ”ˆํด๋ผ์šฐ๋“œ Pub] 3.open shift ๋ถ„์„[๊ฐœ๋ฐฉํ˜• ํด๋ผ์šฐ๋“œ ํ”Œ๋žซํผ ์˜คํ”ˆ์„ธ๋ฏธ๋‚˜ ์˜คํ”ˆํด๋ผ์šฐ๋“œ Pub] 3.open shift ๋ถ„์„
[๊ฐœ๋ฐฉํ˜• ํด๋ผ์šฐ๋“œ ํ”Œ๋žซํผ ์˜คํ”ˆ์„ธ๋ฏธ๋‚˜ ์˜คํ”ˆํด๋ผ์šฐ๋“œ Pub] 3.open shift ๋ถ„์„Tommy Lee
ย 
04.์‹คํ–‰ํ™˜๊ฒฝ ๊ต์œก๊ต์žฌ(ํ™”๋ฉด์ฒ˜๋ฆฌ)
04.์‹คํ–‰ํ™˜๊ฒฝ ๊ต์œก๊ต์žฌ(ํ™”๋ฉด์ฒ˜๋ฆฌ)04.์‹คํ–‰ํ™˜๊ฒฝ ๊ต์œก๊ต์žฌ(ํ™”๋ฉด์ฒ˜๋ฆฌ)
04.์‹คํ–‰ํ™˜๊ฒฝ ๊ต์œก๊ต์žฌ(ํ™”๋ฉด์ฒ˜๋ฆฌ)Hankyo
ย 

Similar a Daejeon IT Developer Conference Struts2 (20)

ํ…Œ์Šคํ„ฐ๋„ ์•Œ์•„์•ผ ํ•  ์›น ๊ฐœ๋ฐœ(ํ…Œ์ŠคํŠธ ๊ต์œก 3์žฅ 1์ ˆ ๋ถ€๋ถ„๋ฐœ์ทŒ)
ํ…Œ์Šคํ„ฐ๋„ ์•Œ์•„์•ผ ํ•  ์›น ๊ฐœ๋ฐœ(ํ…Œ์ŠคํŠธ ๊ต์œก 3์žฅ 1์ ˆ ๋ถ€๋ถ„๋ฐœ์ทŒ)ํ…Œ์Šคํ„ฐ๋„ ์•Œ์•„์•ผ ํ•  ์›น ๊ฐœ๋ฐœ(ํ…Œ์ŠคํŠธ ๊ต์œก 3์žฅ 1์ ˆ ๋ถ€๋ถ„๋ฐœ์ทŒ)
ํ…Œ์Šคํ„ฐ๋„ ์•Œ์•„์•ผ ํ•  ์›น ๊ฐœ๋ฐœ(ํ…Œ์ŠคํŠธ ๊ต์œก 3์žฅ 1์ ˆ ๋ถ€๋ถ„๋ฐœ์ทŒ)
ย 
Big Data platform์„ ์œ„ํ•œ Sencha Ext JS ์‚ฌ๋ก€.
Big Data platform์„ ์œ„ํ•œ Sencha Ext JS ์‚ฌ๋ก€.Big Data platform์„ ์œ„ํ•œ Sencha Ext JS ์‚ฌ๋ก€.
Big Data platform์„ ์œ„ํ•œ Sencha Ext JS ์‚ฌ๋ก€.
ย 
ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจ๋Ÿฌ๋‹ค์ž„์˜ ์ง„ํ™” ๋ฐ Spring์˜ ๊ธˆ์œต๊ถŒ ์ ์šฉ
ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจ๋Ÿฌ๋‹ค์ž„์˜ ์ง„ํ™” ๋ฐ Spring์˜ ๊ธˆ์œต๊ถŒ ์ ์šฉํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจ๋Ÿฌ๋‹ค์ž„์˜ ์ง„ํ™” ๋ฐ Spring์˜ ๊ธˆ์œต๊ถŒ ์ ์šฉ
ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจ๋Ÿฌ๋‹ค์ž„์˜ ์ง„ํ™” ๋ฐ Spring์˜ ๊ธˆ์œต๊ถŒ ์ ์šฉ
ย 
MVVM Pattern for Android
MVVM Pattern for AndroidMVVM Pattern for Android
MVVM Pattern for Android
ย 
CRUD Pattern in Ajax
CRUD Pattern in AjaxCRUD Pattern in Ajax
CRUD Pattern in Ajax
ย 
Sencha ExtJS๋ฅผ ํ™œ์šฉํ•œ Big Data Platform ๊ฐœ๋ฐœ ์‚ฌ๋ก€
Sencha ExtJS๋ฅผ ํ™œ์šฉํ•œ Big Data Platform ๊ฐœ๋ฐœ ์‚ฌ๋ก€ Sencha ExtJS๋ฅผ ํ™œ์šฉํ•œ Big Data Platform ๊ฐœ๋ฐœ ์‚ฌ๋ก€
Sencha ExtJS๋ฅผ ํ™œ์šฉํ•œ Big Data Platform ๊ฐœ๋ฐœ ์‚ฌ๋ก€
ย 
์˜คํ”ˆ์†Œ์Šค ํ”„๋ ˆ์ž„์›Œํฌ ๊ธฐ๋ฐ˜ ์›น ์„œ๋น„์Šค ์„ค๊ณ„ (Example)
์˜คํ”ˆ์†Œ์Šค ํ”„๋ ˆ์ž„์›Œํฌ ๊ธฐ๋ฐ˜ ์›น ์„œ๋น„์Šค ์„ค๊ณ„ (Example)์˜คํ”ˆ์†Œ์Šค ํ”„๋ ˆ์ž„์›Œํฌ ๊ธฐ๋ฐ˜ ์›น ์„œ๋น„์Šค ์„ค๊ณ„ (Example)
์˜คํ”ˆ์†Œ์Šค ํ”„๋ ˆ์ž„์›Œํฌ ๊ธฐ๋ฐ˜ ์›น ์„œ๋น„์Šค ์„ค๊ณ„ (Example)
ย 
Opensource apm scouter in practice
Opensource apm scouter in practiceOpensource apm scouter in practice
Opensource apm scouter in practice
ย 
Opensource apm scouter in practice
Opensource apm scouter in practiceOpensource apm scouter in practice
Opensource apm scouter in practice
ย 
ecdevday4
ecdevday4ecdevday4
ecdevday4
ย 
Spark sql
Spark sqlSpark sql
Spark sql
ย 
์Šคํ”„๋ง๊ตฐ์‚ด์—†์ด์„ธํŒ…ํ•˜๊ธฐ(The way to setting the Spring framework for web.)
์Šคํ”„๋ง๊ตฐ์‚ด์—†์ด์„ธํŒ…ํ•˜๊ธฐ(The way to setting the Spring framework for web.)์Šคํ”„๋ง๊ตฐ์‚ด์—†์ด์„ธํŒ…ํ•˜๊ธฐ(The way to setting the Spring framework for web.)
์Šคํ”„๋ง๊ตฐ์‚ด์—†์ด์„ธํŒ…ํ•˜๊ธฐ(The way to setting the Spring framework for web.)
ย 
๋ฐ˜๋ณต์ ์ธ ์ž‘์—…์ด ์‹ซ์€ ์•ˆ๋“œ๋กœ์ด๋“œ ๊ฐœ๋ฐœ์ž์—๊ฒŒ
๋ฐ˜๋ณต์ ์ธ ์ž‘์—…์ด ์‹ซ์€ ์•ˆ๋“œ๋กœ์ด๋“œ ๊ฐœ๋ฐœ์ž์—๊ฒŒ๋ฐ˜๋ณต์ ์ธ ์ž‘์—…์ด ์‹ซ์€ ์•ˆ๋“œ๋กœ์ด๋“œ ๊ฐœ๋ฐœ์ž์—๊ฒŒ
๋ฐ˜๋ณต์ ์ธ ์ž‘์—…์ด ์‹ซ์€ ์•ˆ๋“œ๋กœ์ด๋“œ ๊ฐœ๋ฐœ์ž์—๊ฒŒ
ย 
์ฒ˜์Œ ์‹œ์ž‘ํ•˜๋Š” ๋ผ๋ผ๋ฒจ
์ฒ˜์Œ ์‹œ์ž‘ํ•˜๋Š” ๋ผ๋ผ๋ฒจ์ฒ˜์Œ ์‹œ์ž‘ํ•˜๋Š” ๋ผ๋ผ๋ฒจ
์ฒ˜์Œ ์‹œ์ž‘ํ•˜๋Š” ๋ผ๋ผ๋ฒจ
ย 
XECon2015 :: [2-1] ์ •๊ด‘์„ญ - ์ฒ˜์Œ ์‹œ์ž‘ํ•˜๋Š” laravel
XECon2015 :: [2-1] ์ •๊ด‘์„ญ - ์ฒ˜์Œ ์‹œ์ž‘ํ•˜๋Š” laravelXECon2015 :: [2-1] ์ •๊ด‘์„ญ - ์ฒ˜์Œ ์‹œ์ž‘ํ•˜๋Š” laravel
XECon2015 :: [2-1] ์ •๊ด‘์„ญ - ์ฒ˜์Œ ์‹œ์ž‘ํ•˜๋Š” laravel
ย 
[1A5]แ„’แ…ญแ„‹แ…ฒแ†ฏแ„Œแ…ฅแ†จแ„‹แ…ตแ†ซแ„‹แ…กแ†ซแ„ƒแ…ณแ„…แ…ฉแ„‹แ…ตแ„ƒแ…ณแ„‹แ…ขแ†ธแ„€แ…ขแ„‡แ…กแ†ฏ
[1A5]แ„’แ…ญแ„‹แ…ฒแ†ฏแ„Œแ…ฅแ†จแ„‹แ…ตแ†ซแ„‹แ…กแ†ซแ„ƒแ…ณแ„…แ…ฉแ„‹แ…ตแ„ƒแ…ณแ„‹แ…ขแ†ธแ„€แ…ขแ„‡แ…กแ†ฏ[1A5]แ„’แ…ญแ„‹แ…ฒแ†ฏแ„Œแ…ฅแ†จแ„‹แ…ตแ†ซแ„‹แ…กแ†ซแ„ƒแ…ณแ„…แ…ฉแ„‹แ…ตแ„ƒแ…ณแ„‹แ…ขแ†ธแ„€แ…ขแ„‡แ…กแ†ฏ
[1A5]แ„’แ…ญแ„‹แ…ฒแ†ฏแ„Œแ…ฅแ†จแ„‹แ…ตแ†ซแ„‹แ…กแ†ซแ„ƒแ…ณแ„…แ…ฉแ„‹แ…ตแ„ƒแ…ณแ„‹แ…ขแ†ธแ„€แ…ขแ„‡แ…กแ†ฏ
ย 
แ„‰แ…ณแ„‘แ…ณแ„…แ…ตแ†ผ แ„‰แ…ณแ„แ…ฅแ„ƒแ…ต 1แ„Œแ…กแ†ผ
แ„‰แ…ณแ„‘แ…ณแ„…แ…ตแ†ผ แ„‰แ…ณแ„แ…ฅแ„ƒแ…ต 1แ„Œแ…กแ†ผแ„‰แ…ณแ„‘แ…ณแ„…แ…ตแ†ผ แ„‰แ…ณแ„แ…ฅแ„ƒแ…ต 1แ„Œแ…กแ†ผ
แ„‰แ…ณแ„‘แ…ณแ„…แ…ตแ†ผ แ„‰แ…ณแ„แ…ฅแ„ƒแ…ต 1แ„Œแ…กแ†ผ
ย 
Metaworks3 Framework workbook 2015
Metaworks3 Framework workbook 2015Metaworks3 Framework workbook 2015
Metaworks3 Framework workbook 2015
ย 
[๊ฐœ๋ฐฉํ˜• ํด๋ผ์šฐ๋“œ ํ”Œ๋žซํผ ์˜คํ”ˆ์„ธ๋ฏธ๋‚˜ ์˜คํ”ˆํด๋ผ์šฐ๋“œ Pub] 3.open shift ๋ถ„์„
[๊ฐœ๋ฐฉํ˜• ํด๋ผ์šฐ๋“œ ํ”Œ๋žซํผ ์˜คํ”ˆ์„ธ๋ฏธ๋‚˜ ์˜คํ”ˆํด๋ผ์šฐ๋“œ Pub] 3.open shift ๋ถ„์„[๊ฐœ๋ฐฉํ˜• ํด๋ผ์šฐ๋“œ ํ”Œ๋žซํผ ์˜คํ”ˆ์„ธ๋ฏธ๋‚˜ ์˜คํ”ˆํด๋ผ์šฐ๋“œ Pub] 3.open shift ๋ถ„์„
[๊ฐœ๋ฐฉํ˜• ํด๋ผ์šฐ๋“œ ํ”Œ๋žซํผ ์˜คํ”ˆ์„ธ๋ฏธ๋‚˜ ์˜คํ”ˆํด๋ผ์šฐ๋“œ Pub] 3.open shift ๋ถ„์„
ย 
04.์‹คํ–‰ํ™˜๊ฒฝ ๊ต์œก๊ต์žฌ(ํ™”๋ฉด์ฒ˜๋ฆฌ)
04.์‹คํ–‰ํ™˜๊ฒฝ ๊ต์œก๊ต์žฌ(ํ™”๋ฉด์ฒ˜๋ฆฌ)04.์‹คํ–‰ํ™˜๊ฒฝ ๊ต์œก๊ต์žฌ(ํ™”๋ฉด์ฒ˜๋ฆฌ)
04.์‹คํ–‰ํ™˜๊ฒฝ ๊ต์œก๊ต์žฌ(ํ™”๋ฉด์ฒ˜๋ฆฌ)
ย 

Daejeon IT Developer Conference Struts2

  • 1. ๋ณธ ๋ฌธ์„œ์˜ ๋ฐฐํฌ ๋ฐ ๋ณ€๊ฒฝ , ์ถœ๋ ฅ ๋ฐ ํ™œ์šฉ์— ๊ด€ํ•œ ๋ชจ๋“  ๊ถŒ๋ฆฌ๋Š” ์ž‘์„ฑ์ž์— ์žˆ์Šต๋‹ˆ๋‹ค . ๋ณธ ์„œ๋น„์Šค๋Š” ์ œ 1 ํšŒ ๋Œ€์ „ IT ๊ฐœ๋ฐœ์ž ์ปค๋ฎค๋‹ˆํ‹ฐ ์ฐธ์„์ž๋ฅผ ์œ„ํ•ด ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค .
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11. ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ ํ”„๋ ˆ์ž„์›Œํฌ ๋ณด์•ˆ ํ”„๋ ˆ์ž„์›Œํฌ SQL & OR Mapper ํ”„๋ ˆ์ž„์›Œํฌ DI (Dependency Injection) & AOP (Aspected Oriented Programming) ํ”„๋ ˆ์ž„์›Œํฌ ๋””์Šคํ”Œ๋ ˆ์ด ๋ ˆ์ด์•„์›ƒ ํ”„๋ ˆ์ž„์›Œํฌ SOA ํ”„๋ ˆ์ž„์›Œํฌ ๋ฆฌํฌํŒ… ํ”„๋ ˆ์ž„์›Œํฌ โ€ฆ ๋ฐฐํฌ ๋ฐ ํ˜•์ƒ ๊ด€๋ฆฌ ํ”„๋ ˆ์ž„์›Œํฌ ์ž๋ฐ” ๊ธฐ๋ฐ˜์˜ ์˜คํ”ˆ ์†Œ์Šค ํ”„๋ ˆ์ž„์›Œํฌ ๊ฐœ์š” ํ”„๋ ˆ์ž„์›Œํฌ๋ž€
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27. public class MyAction { ... public String execute() throws Exception { ... return &quot;success&quot;; } } ์•ก์…˜ ํด๋ž˜์Šค์˜ ํ”„๋กœํ† ํƒ€์ž… Struts2 ๋ž€
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37. FilterDispatcher struts.xml Interceptor Result ActionMapper ActionProxy/ActionInvocation ActionContext Tag Library Action ํ•ต์‹ฌ ํ‚ค์›Œ๋“œ Struts2 ๋ž€
  • 38. ํ•„ํ„ฐ ๋””์ŠคํŒจ์ฒ˜ ์•ก์…˜ ์ธ๋ณด์ผ€์ด์…˜ ์•ก์…˜ ๋งคํผ ํƒœ๊ทธ ์„œ๋ธŒ์‹œ์Šคํ…œ HTML, Dojo, Forms, etc ํ…œํ”Œ๋ฆฟ JSP, FreeMarker, Velocity, etc HttpServletResponse ์ธํ„ฐ์…‰ํ„ฐ 1 ๋ฆฌ์ ˆํŠธ ์ธํ„ฐ์…‰ํ„ฐ 3 ์ธํ„ฐ์…‰ํ„ฐ 2 ์ธํ„ฐ์…‰ํ„ฐ 3 ์ธํ„ฐ์…‰ํ„ฐ 1 ์•ก์…˜ํ”„๋ก์‹œ ์ธํ„ฐ์…‰ํ„ฐ 2 ์•ก์…˜ ํ™˜๊ฒฝ์„ค์ •๊ด€๋ฆฌ์ž struts.xml Other Filters (Sitemesh ...) ActionContextCleanUp Filter HttpServletRequest ์ŠคํŠธ๋Ÿฟ์ธ  2 ์•„ํ‚คํ…์ฒ˜ ๊ฐœ๋…๋„ Struts2 ์•„ํ‚คํ…์ณ
  • 39.
  • 40. ํ•„ํ„ฐ ๋””์ŠคํŒจ์ฒ˜ ์•ก์…˜ ์ธ๋ณด์ผ€์ด์…˜ ์•ก์…˜ ๋งคํผ ํƒœ๊ทธ ์„œ๋ธŒ์‹œ์Šคํ…œ HTML, Dojo, Forms, etc ํ…œํ”Œ๋ฆฟ JSP, FreeMarker, Velocity, etc HttpServletResponse ์ธํ„ฐ์…‰ํ„ฐ 1 ๋ฆฌ์ ˆํŠธ ์ธํ„ฐ์…‰ํ„ฐ 3 ์ธํ„ฐ์…‰ํ„ฐ 2 ์ธํ„ฐ์…‰ํ„ฐ 3 ์ธํ„ฐ์…‰ํ„ฐ 1 ์ธํ„ฐ์…‰ํ„ฐ 2 ์•ก์…˜ ์•ก์…˜ํ”„๋ก์‹œ ํ™˜๊ฒฝ์„ค์ •๊ด€๋ฆฌ์ž struts.xml HttpServletRequest ํ•„ํ„ฐ ๋””์ŠคํŒจ์ฒ˜ Struts2 ์•„ํ‚คํ…์ณ
  • 41.
  • 42.
  • 43. ํ•„ํ„ฐ ๋””์ŠคํŒจ์ฒ˜ ์•ก์…˜ ์ธ๋ณด์ผ€์ด์…˜ ํƒœ๊ทธ ์„œ๋ธŒ์‹œ์Šคํ…œ HTML, Dojo, Forms, etc ํ…œํ”Œ๋ฆฟ JSP, FreeMarker, Velocity, etc HttpServletResponse ์ธํ„ฐ์…‰ํ„ฐ 1 ๋ฆฌ์ ˆํŠธ ์ธํ„ฐ์…‰ํ„ฐ 3 ์ธํ„ฐ์…‰ํ„ฐ 2 ์ธํ„ฐ์…‰ํ„ฐ 3 ์ธํ„ฐ์…‰ํ„ฐ 1 ์ธํ„ฐ์…‰ํ„ฐ 2 ์•ก์…˜ ์•ก์…˜ํ”„๋ก์‹œ ํ™˜๊ฒฝ์„ค์ •๊ด€๋ฆฌ์ž struts.xml HttpServletRequest ์•ก์…˜ ๋งคํผ ํ•„ํ„ฐ ๋””์ŠคํŒจ์ฒ˜ ์ •์˜ Struts2 ์•„ํ‚คํ…์ณ
  • 44.
  • 45.
  • 46. ์•ก์…˜ ์ธ๋ณด์ผ€์ด์…˜ ์•ก์…˜ ๋งคํผ ์•ก์…˜ํ”„๋ก์‹œ ํ•„ํ„ฐ ๋””์ŠคํŒจ์ฒ˜ ํƒœ๊ทธ ์„œ๋ธŒ์‹œ์Šคํ…œ HTML, Dojo, Forms, etc ํ…œํ”Œ๋ฆฟ JSP, FreeMarker, Velocity, etc HttpServletResponse ์ธํ„ฐ์…‰ํ„ฐ 1 ๋ฆฌ์ ˆํŠธ ์ธํ„ฐ์…‰ํ„ฐ 3 ์ธํ„ฐ์…‰ํ„ฐ 2 ์ธํ„ฐ์…‰ํ„ฐ 3 ์ธํ„ฐ์…‰ํ„ฐ 1 ์ธํ„ฐ์…‰ํ„ฐ 2 ์•ก์…˜ ํ™˜๊ฒฝ์„ค์ •๊ด€๋ฆฌ์ž struts.xml HttpServletRequest ์•ก์…˜ ํ”„๋ก์‹œ / ์•ก์…˜ ์ธ๋ณด์ผ€์ด์…˜ Struts2 ์•„ํ‚คํ…์ณ
  • 47.
  • 48. ํ•„ํ„ฐ ๋””์ŠคํŒจ์ฒ˜ proxy = ActionProxyFactory.getFactory().createActionProxy() proxy.execute() ์•ก์…˜ ํ”„๋ก์‹œ invocation.invoke() ์•ก์…˜ ์ธ๋ณด์ผ€์ด์…˜ interceptor() invokeActionOnly() executeResult() ์ธํ„ฐ์…‰ํ„ฐ ์ธํ„ฐ์…‰ํ„ฐ ์ธํ„ฐ์…‰ํ„ฐ ๋ฆฌ์ ˆํŠธ ์•ก์…˜ ์•ก์…˜ ํ”„๋ก์‹œ / ์•ก์…˜ ์ธ๋ณด์ผ€์ด์…˜ ์ž‘์—… ํ๋ฆ„ Struts2 ์•„ํ‚คํ…์ณ
  • 49. ActionProxy invocation.invoke() ActionInvocation invoke() { if (interceptors.hasNext()) { interceptor.interceptor(this); } else { invokeActionOnly(); } if (!executed) { executeResult(); } Interceptor interceptor(invocation) { โ€ฆ return invocation.invoke(); } ์•ก์…˜ ํ”„๋ก์‹œ / ์•ก์…˜ ์ธ๋ณด์ผ€์ด์…˜ ํ˜ธ์ถœ ๊ตฌ์กฐ Struts2 ์•„ํ‚คํ…์ณ
  • 50.
  • 51. ์•ก์…˜ ์ปจํ…์ŠคํŠธ ์‹œํ€€์Šค ๋‹ค์ด์–ด๊ทธ๋žจ Struts2 ์•„ํ‚คํ…์ณ :ActionContext :ActionProxy :ActionInvocation 1. getContext() ActionProxy ๊ฐ€ ์‹คํ–‰๋  ๋•Œ ThreadLocal ๋กœ๋ถ€ํ„ฐ ActionContext ๋ฅผ ์–ป๊ณ  ์ด๋ฅผ ์ €์žฅํ•œ๋‹ค . 2. return 4. return 3. getInvocationContext() ActionProxy ๋Š” ActionInvocation ์„ ์œ„ํ•ด ActionContext ๋ฅผ ์–ป๊ณ  ThreadLocal ์ƒ์— ์ด๋ฅผ ์„ค์ •ํ•œ๋‹ค . 5. setContext(aContext) 6. invoke() 7. setContext(aContext) ActionInvocation ์ด ๋ฆฌํ„ด๋œ ํ›„ , ThreadLocal ์ƒ์˜ ์˜ˆ์ „ ActionContext ๋ฅผ ์„ค์ •ํ•œ๋‹ค .
  • 52.
  • 53. ํ•„ํ„ฐ ๋””์ŠคํŒจ์ฒ˜ ์•ก์…˜ ์ธ๋ณด์ผ€์ด์…˜ ํƒœ๊ทธ ์„œ๋ธŒ์‹œ์Šคํ…œ HTML, Dojo, Forms, etc ํ…œํ”Œ๋ฆฟ JSP, FreeMarker, Velocity, etc HttpServletResponse ๋ฆฌ์ ˆํŠธ ์•ก์…˜ ์•ก์…˜ํ”„๋ก์‹œ ํ™˜๊ฒฝ์„ค์ •๊ด€๋ฆฌ์ž struts.xml HttpServletRequest ์•ก์…˜ ๋งคํผ ์ธํ„ฐ์…‰ํ„ฐ 1 ์ธํ„ฐ์…‰ํ„ฐ 3 ์ธํ„ฐ์…‰ํ„ฐ 2 ์ธํ„ฐ์…‰ํ„ฐ 3 ์ธํ„ฐ์…‰ํ„ฐ 1 ์ธํ„ฐ์…‰ํ„ฐ 2 ์ธํ„ฐ์…‰ํ„ฐ Struts2 ์•„ํ‚คํ…์ณ
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.
  • 62.
  • 63.
  • 64.
  • 65. ํ•„ํ„ฐ ๋””์ŠคํŒจ์ฒ˜ ์•ก์…˜ ์ธ๋ณด์ผ€์ด์…˜ ํƒœ๊ทธ ์„œ๋ธŒ์‹œ์Šคํ…œ HTML, Dojo, Forms, etc ํ…œํ”Œ๋ฆฟ JSP, FreeMarker, Velocity, etc HttpServletResponse ์ธํ„ฐ์…‰ํ„ฐ 1 ๋ฆฌ์ ˆํŠธ ์ธํ„ฐ์…‰ํ„ฐ 3 ์ธํ„ฐ์…‰ํ„ฐ 2 ์ธํ„ฐ์…‰ํ„ฐ 3 ์ธํ„ฐ์…‰ํ„ฐ 1 ์ธํ„ฐ์…‰ํ„ฐ 2 ์•ก์…˜ํ”„๋ก์‹œ ํ™˜๊ฒฝ์„ค์ •๊ด€๋ฆฌ์ž struts.xml HttpServletRequest ์•ก์…˜ ๋งคํผ ์•ก์…˜ ์•ก์…˜ Struts2 ์•„ํ‚คํ…์ณ
  • 66.
  • 67.
  • 68.
  • 69.
  • 70.
  • 71.
  • 72.
  • 73.
  • 74.
  • 75.
  • 76.
  • 77. ํ•„ํ„ฐ ๋””์ŠคํŒจ์ฒ˜ ์•ก์…˜ ์ธ๋ณด์ผ€์ด์…˜ ํƒœ๊ทธ ์„œ๋ธŒ์‹œ์Šคํ…œ HTML, Dojo, Forms, etc ํ…œํ”Œ๋ฆฟ JSP, FreeMarker, Velocity, etc HttpServletResponse ์ธํ„ฐ์…‰ํ„ฐ 1 ์ธํ„ฐ์…‰ํ„ฐ 3 ์ธํ„ฐ์…‰ํ„ฐ 2 ์ธํ„ฐ์…‰ํ„ฐ 3 ์ธํ„ฐ์…‰ํ„ฐ 1 ์ธํ„ฐ์…‰ํ„ฐ 2 ์•ก์…˜ํ”„๋ก์‹œ ํ™˜๊ฒฝ์„ค์ •๊ด€๋ฆฌ์ž struts.xml HttpServletRequest ์•ก์…˜ ๋งคํผ ์•ก์…˜ ๋ฆฌ์ ˆํŠธ ๋ฆฌ์ ˆํŠธ Struts2 ์•„ํ‚คํ…์ณ
  • 78.
  • 79.
  • 80.
  • 81.
  • 82.
  • 83.
  • 84.
  • 85.
  • 86.
  • 87.
  • 88.
  • 89.
  • 90.
  • 91.
  • 92.
  • 93.
  • 94.
  • 95.
  • 96.
  • 97.
  • 98.
  • 99.
  • 100.
  • 101.
  • 102. <web-app โ€ฆ > <filter> <filter-name>struts</filter-name> <filter-class> org.apache.struts2.dispatcher.FilterDispatcher </filter-class> </filter> <filter-mapping> <filter-name>struts</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app> ์ŠคํŠธ๋Ÿฟ์ธ  2 ์ปจํŠธ๋กค๋Ÿฌ ํ•„ํ„ฐ ๋””์ŠคํŒจ์ฒ˜ ๋“ฑ๋ก ํ™˜๊ฒฝ์„ค์ •
  • 103. <?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; ?> <!DOCTYPE struts PUBLIC &quot;-//Apache Software Foundation//DTD Struts Configuration 2.0//EN&quot; &quot;http://struts.apache.org/dtds/struts-2.0.dtd&quot;> <struts> <package name=&quot;person&quot; extends=&quot;struts-default&quot; namespace=&quot;&quot;> <action name=&quot;myAction&quot; class=&quot;example.MyAction&quot;> <result>/myAction.jsp</result> </action> </package> </struts> ์ŠคํŠธ๋Ÿฟ์ธ  2 ํ™˜๊ฒฝ์„ค์ • ํŒŒ์ผ : struts.xml ํ™˜๊ฒฝ์„ค์ •
  • 104.
  • 105.
  • 106. struts-default.xml struts-plugin.xml struts.xml struts.properties web.xml ์ƒ์ˆ˜ ๊ฐ’ ๊ฒ€์ƒ‰ ํ™˜๊ฒฝ์„ค์ •
  • 107.
  • 108.
  • 109. <struts> <package name=&quot;employee&quot; extends=&quot;default&quot; namespace=&quot;/employee&quot;> <default-interceptor-ref name=&quot;crudStack&quot;/> <action name=&quot;list&quot; method=&quot;list&quot; class=&quot;org.apache.struts2.showcase.action.EmployeeAction&quot;> <result>/empmanager/listEmployees.jsp</result> <interceptor-ref name=&quot;basicStack&quot;> </action> </package> </struts> ํŒจํ‚ค์ง€ ์„ค์ • ์˜ˆ ํ™˜๊ฒฝ์„ค์ •
  • 110.
  • 111. <package name=&quot;student&quot; namespace=&quot; /student &quot;> <action name=&quot; save &quot; class=&quot;example.StudentAction&quot;> <result>listStudent.jsp</result> </action> </package> <package name=&quot;professor&quot; namespace=&quot; /professor &quot;> <action name=&quot; save &quot; class=&quot;example.ProfessorAction&quot;> <result>listProfessor.jsp</result> </action> </package> ๋„ค์ž„์ŠคํŽ˜์ด์Šค ์˜ˆ ํ™˜๊ฒฝ์„ค์ •
  • 112.
  • 113. <action name= &quot; logon&quot; class= &quot; example .SecurityAction &quot; method=&quot;logon> <result> logon.jsp </result> </action> ์•ก์…˜ ์ด๋ฆ„ ๋ฆฌ์ ˆํŠธ (type ์ƒ๋žต ์‹œ ๊ธฐ๋ณธ๊ฐ’์€ dispatcher ํƒ€์ž… ์‚ฌ์šฉ name ์ƒ๋žต ์‹œ ๊ธฐ๋ณธ๊ฐ’์€ success ๋ฆฌ์ ˆํŠธ ์ฝ”๋“œ ์‚ฌ์šฉ ) ๋ฆฌ์ ˆํŠธ ํŽ˜์ด์ง€ ์ •์˜ ์•ก์…˜ ํด๋ž˜์Šค ์•ก์…˜ ๋ฉ”์†Œ๋“œ (method ์†์„ฑ ์ƒ๋žต ์‹œ execute() ์‚ฌ์šฉ ) ์•ก์…˜ ์„ค์ • ํ™˜๊ฒฝ์„ค์ •
  • 114. <action name= &quot; logon&quot; class= &quot; example .SecurityAction &quot; method= &quot; logon &quot; > <interceptor-ref name=&quot;basicStack&quot;> <result type=&quot;redirect-action&quot;>menu</result> <result name=&quot;input&quot;>/example/logon.jsp</result> </action> ์•ก์…˜ ์ด๋ฆ„ ๋‹ค๋ฅธ ์•ก์…˜์„ ๋ฆฌ์ ˆํŠธ๋กœ ์‚ฌ์šฉ JSP ๋ฅผ ๋ฆฌ์ ˆํŠธ๋กœ ์‚ฌ์šฉ ์•ก์…˜์— ์ธํ„ฐ์…‰ํ„ฐ ์Šคํƒ ์ ์šฉ ์•ก์…˜ ํด๋ž˜์Šค ์•ก์…˜ ๋ฉ”์†Œ๋“œ ๋‹ค์ค‘ ๋ฆฌ์ ˆํŠธ ์ •์˜ ์•ก์…˜ ์„ค์ • ์˜ˆ ํ™˜๊ฒฝ์„ค์ •
  • 115.
  • 116.
  • 117.
  • 118.
  • 119.
  • 120.
  • 121.
  • 122.
  • 123. # ๋ฆฌ์†Œ์Šค ๋ฒˆ๋“ค ํŒŒ์ผ label.sample = ์ด ๊ฒƒ์€ properties ํŒŒ์ผ ์•ˆ์˜ ๋ฉ”์‹œ์ง€์ž…๋‹ˆ๋‹ค . // ์•ก์…˜ ํด๋ž˜์Šค public class MyAction extends ActionSupport { private String message; public String execute() throws Exception { message = getText(&quot; label.sample &quot;)); return SUCCESS; } ... } #JSP <s:text name=&quot; label.sample &quot;/> <s:submit key=&quot; label.sample &quot;/> <s:property value=&quot; %{getText(โ€˜label.sampleโ€™)} &quot;/> ๋ฆฌ์†Œ์Šค ๋ฒˆ๋“ค ์‚ฌ์šฉ ์˜ˆ ํ™˜๊ฒฝ์„ค์ •
  • 124. ์•ก์…˜ ๋ฆฌ์†Œ์Šค ๋ฒˆ๋“ค ๋ถ€๋ชจ ํด๋ž˜์Šค ๋ฆฌ์†Œ์Šค ๋ฒˆ๋“ค ์ธํ„ฐํŽ˜์ด์Šค ๋ฆฌ์†Œ์Šค ๋ฒˆ๋“ค ๋ชจ๋ธ ๋“œ๋ฆฌ๋ธ์˜ ๋ชจ๋ธ ๋ฆฌ์†Œ์Šค ๋ฒˆ๋“ค ํŒจํ‚ค์ง€ ๋ฆฌ์†Œ์Šค ๋ฒˆ๋“ค ๊ธ€๋กœ๋ฒŒ ๋ฆฌ์†Œ์Šค ๋ฒˆ๋“ค ๋ฆฌ์†Œ์Šค ๋ฒˆ๋“ค ๊ฒ€์ƒ‰ ์ˆœ์„œ ํ™˜๊ฒฝ์„ค์ •
  • 125.
  • 126.
  • 127.
  • 128. welcome.jsp - Home Page example.com ๊ด‘๊ณ  ๋ฐฐ๋„ˆ 1 ๊ฒ€์ƒ‰ ์ตœ์‹  ๋‰ด์Šค . . search.cgi - Search Results ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ . . . . . ๊ด‘๊ณ  ๋ฐฐ๋„ˆ 2 ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ ๋ฐ”๋”” ๋‚ด์šฉ ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ example.com: {title} ๋ฉ”๋‰ด . ํ™ˆ . ๋‰ด์Šค . ๊ฒ€์ƒ‰ . ๊ณต์ง€ copyright 2007 example.com welcome.jsp - Home Page example.com: Home Page ๋ฉ”๋‰ด . ํ™ˆ . ๋‰ด์Šค . ๊ฒ€์ƒ‰ . ๊ณต์ง€ copyright 2007 example.com example.com ๊ฒ€์ƒ‰ ์ตœ์‹  ๋‰ด์Šค . . ๊ด‘๊ณ  ๋ฐฐ๋„ˆ 1 search.cgi - Search Results example.com: Search Results ๋ฉ”๋‰ด . ํ™ˆ . ๋‰ด์Šค . ๊ฒ€์ƒ‰ . ๊ณต์ง€ copyright 2007 example.com ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ . . . . . ๊ด‘๊ณ  ๋ฐฐ๋„ˆ 2 decorator ์— ์˜ํ•ด์„œ ๋ ˆ์ด์•„์›ƒ์„ ๊ตฌ์„ฑ . ์ตœ์ข… ํŽ˜์ด์ง€๋ฅผ ์ƒ์„ฑํ•œ๋‹ค . decorator ์— ์˜ํ•ด์„œ ๋ ˆ์ด์•„์›ƒ์„ ๊ตฌ์„ฑํ•œ๋‹ค . ์ตœ์ข… ํŽ˜์ด์ง€๋ฅผ ์ƒ์„ฑํ•œ๋‹ค . decorator ์— ์ •์˜๋œ ๋ ˆ์ด์•„์›ƒ . Sitemesh ์ž‘์—… ๊ฐœ๋…๋„ ํ”Œ๋Ÿฌ๊ทธ์ธ
  • 129.
  • 130. JFreeChart ์ƒ˜ํ”Œ ํ”Œ๋Ÿฌ๊ทธ์ธ
  • 131.
  • 132. JasperReport ์ƒ˜ํ”Œ ํ”Œ๋Ÿฌ๊ทธ์ธ
  • 133. iReport ๋ฅผ ์‚ฌ์šฉํ•œ JasperReport ๋””์ž์ธ ํ”Œ๋Ÿฌ๊ทธ์ธ
  • 134.