SlideShare une entreprise Scribd logo
1  sur  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]
감사합니다 .

Contenu connexe

Tendances

Tendances (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 기초와매핑
 

En vedette

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
 
Presentación1
Presentación1Presentación1
Presentación1
akoky
 
Six nations fixtures 2012
Six nations fixtures 2012Six nations fixtures 2012
Six nations fixtures 2012
stevenreilly
 
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
labinager
 
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
Geoffrey De Smet
 

En vedette (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
 

Similaire à Daejeon IT Developer Conference Struts2

프로그래밍 패러다임의 진화 및 Spring의 금융권 적용
프로그래밍 패러다임의 진화 및 Spring의 금융권 적용프로그래밍 패러다임의 진화 및 Spring의 금융권 적용
프로그래밍 패러다임의 진화 및 Spring의 금융권 적용
중선 곽
 
[1A5]효율적인안드로이드앱개발
[1A5]효율적인안드로이드앱개발[1A5]효율적인안드로이드앱개발
[1A5]효율적인안드로이드앱개발
NAVER D2
 

Similaire à 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.실행환경 교육교재(화면처리)
 

Dernier

Grid Layout (Kitworks Team Study 장현정 발표자료)
Grid Layout (Kitworks Team Study 장현정 발표자료)Grid Layout (Kitworks Team Study 장현정 발표자료)
Grid Layout (Kitworks Team Study 장현정 발표자료)
Wonjun Hwang
 

Dernier (7)

MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionMOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
 
Grid Layout (Kitworks Team Study 장현정 발표자료)
Grid Layout (Kitworks Team Study 장현정 발표자료)Grid Layout (Kitworks Team Study 장현정 발표자료)
Grid Layout (Kitworks Team Study 장현정 발표자료)
 
A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)
 
[Terra] Terra Money: Stability and Adoption
[Terra] Terra Money: Stability and Adoption[Terra] Terra Money: Stability and Adoption
[Terra] Terra Money: Stability and Adoption
 
캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차
 
도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'
도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'
도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'
 
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
 

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.