Hlavní menu

Nástroje

WebKiv / FrameworkyProWebKiv

View (print) - Edit page | Recent changes - Page history

Updated 30 June 2009, 13:48 by PremekBrada

WebKiv.FrameworkyProWebKiv History

Hide minor edits - Show changes to output

30 June 2009, 13:48 by PremekBrada -
Changed lines 22-23 from:
* [[InstalaceVzorovehoOpencmsModulu|Instalace [=OpenCms=] modulu]]
to:
* [[InstalaceVzorovehoOpencmsModulu|Instalace vzorového [=SpringOpenCms=] modulu]]
30 June 2009, 08:39 by JaroslavPavuk -
Changed lines 22-23 from:
* [[Instalace [=OpenCms=] modulu]]
to:
* [[InstalaceVzorovehoOpencmsModulu|Instalace [=OpenCms=] modulu]]
30 June 2009, 08:36 by JaroslavPavuk -
Added lines 22-23:
* [[Instalace [=OpenCms=] modulu]]
30 June 2009, 08:31 by JaroslavPavuk -
Changed line 33 from:
* [[OpenCmsMapovaniNaUrl|Mapování modulů na hezká URL external]]
to:
* [[OpenCmsMapovaniNaUrl|Mapování modulů na hezká URL]]
Changed line 35 from:
* [[OpenCmsValidaceVstupnichPoliFormularu|Validace vstupních polí formulářů external]]
to:
* [[OpenCmsValidaceVstupnichPoliFormularu|Validace vstupních polí formulářů]]
29 June 2009, 20:09 by Tomas Peterka -
Changed lines 24-28 from:
!!!TODO Instalace modulu pro OpenCMS - jako odkaz

!!!TODO Odkaz na stranku s dalsimi "vecmi"

to:
!Ostatní dokumenty

* [[OpenCmsBestPractices|Best Practices]]
Added lines 29-43:

* [[OpenCmsLogovaniJednotlivychModulu|Jak vytvorit logovaci soubor pro jednotlive moduly do OpenCms]]
* [[OpenCmsLogovaniTraceLevel|Jak Přinutit Opencms aby logoval úroveň trace]]
* [[OpenCmsZnepristupneniViewStranek|Znepřístupnění view stránek z URL v OpenCms]]
* [[OpenCmsMapovaniNaUrl|Mapování modulů na hezká URL external]]
* [[OpenCmsPouzitiTaglibAKnihoven|Využití dalších Taglib a knihoven v prostředí OpenCms a Spring MVC]]
* [[OpenCmsValidaceVstupnichPoliFormularu|Validace vstupních polí formulářů external]]
* [[OpenCmsInternacionalizace|Internacionalizace]]
* [[OpenCmsTestovaniModulu|Testování modulů]]

----

* [[OpenCmsOdkazy|Odkazy]]

----
29 June 2009, 20:00 by Tomas Peterka -
Changed lines 17-18 from:
Hlavní dokumenty
to:
!Hlavní dokumenty
29 June 2009, 19:59 by Tomas Peterka -
Added line 20:
Deleted lines 22-130:
!Integrace Spring Web Flow do [=OpenCms=]


!!Instalace knihoven

# Funkční Spring MVC (minimálně verze 2.5.4!) podle návodu výše.

# Stažení [[http://www.springsource.org/download#webflow|Spring Web Flow]] (min. verze 2.0.x).

# Stažení [[http://repo1.maven.org/maven2/ognl/ognl/2.6.9/ognl-2.6.9.jar|OGNL 2.6.9]] nebo [[http://www.springsource.com/repository/app/bundle/detail?name=com.springsource.org.jboss.el|jboss-el]].

# Přidání stažených [@JAR@] knihoven do [@OPENCMS_HOME\WEB-INF\lib@].


!!Konfigurace

Upravíme soubor [@TOMCAT_HOME\webapps\opencms\WEB-INF\springapp-servlet.xml@]

Atributy kořenového elementu [@beans@] rožšíríme o schema pro Web Flow. Dostaneme tedy:

[@<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:flow="http://www.springframework.org/schema/webflow-config"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd
http://www.springframework.org/schema/webflow-config
http://www.springframework.org/schema/webflow-config/spring-webflow-config-2.0.xsd">@]

Mapováni controlleru flow na [@springappflow.html@]. Soubor s definicí flow bude očekáván ve tvaru [@springappflow.xml@], viz definice níže.

[@<bean id="simpleUrlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="springappflow.html">flowController</prop>
</props>
</property>
</bean>@]

Dále je samotná konfigurace Web Flow (stále jsme ve [@springapp-servlet.xml@]):

[@<bean id="flowController" class="org.springframework.webflow.mvc.servlet.FlowController">
<property name="flowExecutor" ref="flowExecutor"/>
</bean>

<flow:flow-executor id="flowExecutor" flow-registry="flowRegistry"/>@]

Nastavení cesty k definicím flow. Povinně musíme zadat cestu k [@springappflow.xml@], které jsme umístili do [@/WEB-INF/flows/@]. Je možné zde nastavit cesty k dalším definicím.

[@<flow:flow-registry id="flowRegistry" flow-builder-services="flowBuilderServices">
<flow:flow-location path="/WEB-INF/flows/springappflow.xml"/>
</flow:flow-registry>@]

Zaregistrování [@viewResolveru@] pro používaní view z MVC:

[@<flow:flow-builder-services id="flowBuilderServices" view-factory-creator="viewFactoryCreator"/>

<bean id="viewFactoryCreator" class="org.springframework.webflow.mvc.builder.MvcViewFactoryCreator">
<property name="viewResolvers">
<list>
<ref bean="viewResolver"/>
</list>
</property>
</bean>@]

[@ViewResolver@] může vypadat například takto:

[@<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"></property>
<property name="prefix" value="/opencms/system/modules/cz.zcu.kiv.opencms.springapp/elements/views/"></property>
<property name="suffix" value=".jsp"></property>
</bean>@]

Tímto máme hotovou konfiguraci souboru [@springapp-servlet.xml@].

!!Definice Flow

Podle výše uvedené konfigurace předpokládáme definici flow v souboru [@springappflow.xml@]. Tvorba definic flow a práce s nimi je popsána v [[http://static.springframework.org/spring-webflow/docs/2.0.x/reference/html/index.html|referenční příručce]] v kapitolách 2-5.

!!Spring IDE

* plugin do Eclipse
* podpora Web Flow 2.0
* kontrola syntaxe, našeptávač
* grafický editor

!!!Instalace

* najdeme na [[http://springide.org/blog/|SpringIDE]]
* v Eclipse WTP lze stahovat přímo v 'Help -> Software Updates -> Available Software -> Spring IDE Update Site', kde vybereme
** /Core/Spring IDE Core
** /Extensions/Spring IDE Web Flow Extension
* při problémech s instalací hledejte např. v [[http://jira.springframework.org/secure/Dashboard.jspa|bugzille]] springu

!!!Založení Spring projektu

Není vhodné přidávat soubory s definicemi flow do hlavního projektu, který synchronizujeme s [=OpenCms serverem=] (jsou vyžadovány DTD pro XML). Vytvoříme tedy samostatný Spring projekt, kterému do Build Path přidáme náš hlavní projekt. Pro tvorbu nové definice máme k dispozici průvodce (jako pro vytváření projektu). Projekt obsahuje složku Spring Elements, kam můžeme vložit naše definice flow (právé tlačitko myši -> Properties). Grafický editor otevřeme položkou v kontextovém menu pravým tlačítkem myši na definici flow.


!!Odkazy

* [[http://static.springframework.org/spring-webflow/docs/2.0.x/reference/html/index.html|Referenční příručka]]
* [[http://www.springbyexample.org/examples/simple-spring-web-flow-webapp.html|Spring by Example - Web Flow]]
* [[http://www.springbyexample.org/examples/spring-web-flow-subflow-webapp.html|Spring by Example - Web Flow Subflow]]
* [[http://wheelersoftware.com/articles/spring-web-flow-2.0.html|Tutorial - Shopping Cart]]
----
29 June 2009, 19:58 by Tomas Peterka -
Added line 16:
Changed line 19 from:
to:
* [[IntegraceSpringWebFlowDoOpenCms|Integrace Spring Web Flow do [=OpenCms=]]]
29 June 2009, 19:57 by Tomas Peterka -
Changed lines 18-60 from:
!Integrace Spring MVC do [=OpenCms=]

!!Softwarové požadavky

* [=OpenCms=] 7.0.5 a teoreticky vyšší
* Spring Framwork 2.5.6 (obsahuje i MVC)
* Java 1.5 a vyšší


!!Používaní konvence

Pro zjednodušení výkladu je v následujícím dokumentu použita při odkazování na adresáře následující konvence:

* [@TOMCAT_HOME@] je adresář, ve kterém je nainstalován tomcat, na kterém je [=OpenCms=] nasazeno
* [@OPENCMS_HOME@] je adresář, ve kterém je běžící [=OpenCms=] (standardně [@TOMCAT_HOME\webapps\opencms@])


!!Než začnete číst tento tutoriál

Tento návod je napsán tak, že i ve Spring MVC nezkušenému uživateli poskytne návod na to, jak tento framework zaintegrovat do [=OpenCms=]. Nicméně je doporučeníhodné projít si nejdříve Spring MVC Step By Step Tutorial, který je standardně v distribuci Spring Framweworku. Dále uvedený postup pro vás poté bude daleko více srozumitelnější.

!!Integrace Spring MVC do [=OpenCms=]

Instalace Spring MVC frameworků se obecně skládá z následkujících bodů:


!!!1. Zastavte Tomcat

Předtím, než budete pokračovat v čtení a provádění tohoto tutoriálu, zastavte prosím tomcata.


!!!2. Úprava souboru [@web.xml@]

Do souboru [@web.xml@] ([@OPENCMS_HOME\WEB-INF@]) se musí doplnit nastavení [@DispatcherServletu@] Spring MVC a jeho namapování na URL. Volitelně se může přidat definice [@tld@] souboru pro knihovnu značek Springu. (Při použití nové verze servletů toto odpadá, neboť všechny jar soubory na classpath jsou javou skenovány a všechny nalezené [@*.tld@] soubory jsou automaticky přidány. Nicméně není na závadu, pokud je [@tld@] soubor explicitně v [@web.xml@] specifikován.)

Do [@web.xml@] doplňte následující definici servletu a jeho mapování:

[@<!-- Spring MVC Sample App Servlet -->
<servlet>
<servlet-name>springmvcapp</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
to:

----

!Integrace Spring Web Flow do [=OpenCms=]


!!Instalace knihoven

# Funkční Spring MVC (minimálně verze 2.5.4!) podle návodu výše.

# Stažení [[http://www.springsource.org/download#webflow|Spring Web Flow]] (min. verze 2.0.x).

# Stažení [[http://repo1.maven.org/maven2/ognl/ognl/2.6.9/ognl-2.6.9.jar|OGNL 2.6.9]] nebo [[http://www.springsource.com/repository/app/bundle/detail?name=com.springsource.org.jboss.el|jboss-el]].

# Přidání stažených [@JAR@] knihoven do [@OPENCMS_HOME\WEB-INF\lib@].


!!Konfigurace

Upravíme soubor [@TOMCAT_HOME\webapps\opencms\WEB-INF\springapp-servlet.xml@]

Atributy kořenového elementu [@beans@] rožšíríme o schema pro Web Flow. Dostaneme tedy:

[@<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:flow="http://www.springframework.org/schema/webflow-config"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd
http://www.springframework.org/schema/webflow-config
http://www.springframework.org/schema/webflow-config/spring-webflow-config-2.0.xsd">@]

Mapováni controlleru flow na [@springappflow.html@]. Soubor s definicí flow bude očekáván ve tvaru [@springappflow.xml@], viz definice níže.

[@<bean id="simpleUrlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="springappflow.html">flowController</prop>
</props>
</property>
</bean>@]

Dále je samotná konfigurace Web Flow (stále jsme ve [@springapp-servlet.xml@]):

[@<bean id="flowController" class="org.springframework.webflow.mvc.servlet.FlowController">
<property name="flowExecutor" ref="flowExecutor"/>
</bean>
Changed lines 68-121 from:
<!-- Servlet Mapping -->
<servlet-mapping>
<servlet-name>springmvcapp</servlet-name>
<url-pattern>/springmvcapp/*</url-pattern>
</servlet-mapping>@]

Stěžejnímy body v tomto kódu je element: [@<servlet-name>springmvcapp</servlet-name>@], neboť udává, v jakém soubor bude Spring MVC hledat svá nastavení.

Jako další bod je potřeba přidat definici [@tld@] souboru. Toto se provede tím, že se do elementu [@<jsp-config>@] přidá následující kód:

[@<jsp-config>
...
<taglib>
<taglib-uri>/spring</taglib-uri>
<taglib-location>/WEB-INF/tld/spring-form.tld</taglib-location>
</taglib>
</jsp-config>@]


!!!3. Přidání [@tld@] (Tag library deskriptor) souboru s popisem taglib Spring-forms

Tento soubor musí být zkopírován do adresáře zadaného v minulém kroku. V našem případě je to tedy [@OPENCMS_HOME/WEB-INF/tld/@]. Soubor se nachází v distribuci Spring frameworku v adresáři: [@spring-framework-2.5.X/dist/resources/@].


!!!4. Vytvoření souboru s definicí beans a nastavení Spring MVC

Spring MVC požaduje konfigurační soubor, ve kterém jsou uloženy definice beans a dalších java tříd, které při své činnosti potřebuje. Jméno tohoto souboru je určeno jménem servletu - viz. výše v souboru [@web.xml@] a příponou [@–servlet.xml@]. V našem případě se tedy tento soubor bude jmenovat [@springapp-servlet.xml@]. A bude ležet na stejné adresářové úrovni jako soubor [@web.xml@]. Tento soubor bude vypadat následujícím způsobem:

[@<?xml version="1.0" encoding="utf-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/xmlschema-instance"
xsi:schemalocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<!-- the application context definition for the springapp dispatcherservlet -->

</beans>@]

Výše uvedená, na ještě prázdný soubor obsáhlá definice, je důležitá pro správnou funkci nástrojů, například pro podporu Springu v Eclipse.


!!!5. Přidání souboru s [@applicationContextem@] pro Spring

Vzhledem k tomu, že konfigurační soubor Spring MVC není jediným místem, ze kterého si Spring může načítat definice java bean, je možné a i důrazně doporučené oddělit konfigurační soubor Spring MVC od ostatních konfiguračních souborů Springu. Tím se zaručí to, že se mezi sebou nemíchají definice beanů, které jsou použiti v zobrazovací vrstvě s definicemi beanů, které se například starají o přístup k databázi. Toho se docílí tím, že se do souboru [@web.xml@] přidá následující kód:

[@<listener>
<listenerclass>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>@]

Spring poté bude hledat soubor [@applicationContext.xml@], který musí ležet na stejné úrovni jako soubor [@web.xml@] (pokud se nenastaví jinak). Prázdný soubor [@applicationContext.xml@] má následující strukturu:

[@<?xml version="1.0" encoding="utf-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
to:
<flow:flow-executor id="flowExecutor" flow-registry="flowRegistry"/>@]

Nastavení cesty k definicím flow. Povinně musíme zadat cestu k [@springappflow.xml@], které jsme umístili do [@/WEB-INF/flows/@]. Je možné zde nastavit cesty k dalším definicím.

[@<flow:flow-registry id="flowRegistry" flow-builder-services="flowBuilderServices">
<flow:flow-location path="/WEB-INF/flows/springappflow.xml"/>
</flow:flow-registry>@]

Zaregistrování [@viewResolveru@] pro používaní view z MVC:

[@<flow:flow-builder-services id="flowBuilderServices" view-factory-creator="viewFactoryCreator"/>
Changed lines 80-133 from:
</beans>@]

!!!6. Přidání knihoven Spring MVC do [=OpenCms=]

Jako poslední krok je potřeba nahrát do [=OpenCms=] knihovny, které Spring MVC potřebuje pro svůj běh. Do adresáře: [@OPENCMS_HOME/WEB-INF/lib@] nahrajte následující soubory:

* spring.jar z adresáře: [@spring-framework-2.5.6/dist@]
* spring-webmvc.jar z adresáře: [@spring-framework-2.5.6/dist/modules @]


!!!7. Test instalace

Nyní spusťte Tomcat a [=OpenCms=] by mělo bez chyby nastartovat. Pokud se [=OpenCms=] nerozběhlo, můžete se podívat do log souborů v adresáři: [@TOMCAT_HOME\webapps\opencms\WEB-INF\logs@] A pokusit se v nich příčinu chyby objevit.
----

!Integrace Spring Web Flow do [=OpenCms=]


!!Instalace knihoven

# Funkční Spring MVC (minimálně verze 2.5.4!) podle návodu výše.

# Stažení [[http://www.springsource.org/download#webflow|Spring Web Flow]] (min. verze 2.0.x).

# Stažení [[http://repo1.maven.org/maven2/ognl/ognl/2.6.9/ognl-2.6.9.jar|OGNL 2.6.9]] nebo [[http://www.springsource.com/repository/app/bundle/detail?name=com.springsource.org.jboss.el|jboss-el]].

# Přidání stažených [@JAR@] knihoven do [@OPENCMS_HOME\WEB-INF\lib@].


!!Konfigurace

Upravíme soubor [@TOMCAT_HOME\webapps\opencms\WEB-INF\springapp-servlet.xml@]

Atributy kořenového elementu [@beans@] rožšíríme o schema pro Web Flow. Dostaneme tedy:

[@<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:flow="http://www.springframework.org/schema/webflow-config"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd
http://www.springframework.org/schema/webflow-config
http://www.springframework.org/schema/webflow-config/spring-webflow-config-2.0.xsd">@]

Mapováni controlleru flow na [@springappflow.html@]. Soubor s definicí flow bude očekáván ve tvaru [@springappflow.xml@], viz definice níže.

[@<bean id="simpleUrlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="springappflow.html">flowController</prop>
</props>
</property>
to:
<bean id="viewFactoryCreator" class="org.springframework.webflow.mvc.builder.MvcViewFactoryCreator">
<property name="viewResolvers">
<list>
<ref bean="viewResolver"/>
</list>
</property>
Deleted lines 87-112:
Dále je samotná konfigurace Web Flow (stále jsme ve [@springapp-servlet.xml@]):

[@<bean id="flowController" class="org.springframework.webflow.mvc.servlet.FlowController">
<property name="flowExecutor" ref="flowExecutor"/>
</bean>

<flow:flow-executor id="flowExecutor" flow-registry="flowRegistry"/>@]

Nastavení cesty k definicím flow. Povinně musíme zadat cestu k [@springappflow.xml@], které jsme umístili do [@/WEB-INF/flows/@]. Je možné zde nastavit cesty k dalším definicím.

[@<flow:flow-registry id="flowRegistry" flow-builder-services="flowBuilderServices">
<flow:flow-location path="/WEB-INF/flows/springappflow.xml"/>
</flow:flow-registry>@]

Zaregistrování [@viewResolveru@] pro používaní view z MVC:

[@<flow:flow-builder-services id="flowBuilderServices" view-factory-creator="viewFactoryCreator"/>

<bean id="viewFactoryCreator" class="org.springframework.webflow.mvc.builder.MvcViewFactoryCreator">
<property name="viewResolvers">
<list>
<ref bean="viewResolver"/>
</list>
</property>
</bean>@]
29 June 2009, 19:56 by Tomas Peterka -
Changed lines 16-17 from:
to:
Hlavní dokumenty
* [[IntegraceSpringMVCDoOpenCms|Integrace Spring MVC do [=OpenCms=]]]
25 June 2009, 22:17 by JaroslavPavuk -
Deleted lines 237-238:

Added lines 239-245:

!!!TODO Instalace modulu pro OpenCMS - jako odkaz

!!!TODO Odkaz na stranku s dalsimi "vecmi"


----
25 June 2009, 22:11 by JaroslavPavuk -
Changed line 221 from:
* najdeme na [[http://springide.org/blog/|SpringIDE]] external
to:
* najdeme na [[http://springide.org/blog/|SpringIDE]]
25 June 2009, 22:08 by JaroslavPavuk -
Changed lines 172-173 from:
'''Dále je samotná konfigurace Web Flow:'''
to:
Dále je samotná konfigurace Web Flow (stále jsme ve [@springapp-servlet.xml@]):
Changed lines 180-181 from:
Nastavení cesty k definicím flow. Povinně musíme zadat cestu k [@springappflow.xml@], které jsme umístili do [@/WEB-INF/flows/@]. Dále zde můžeme nastavit cesty k dalším definicím.
to:
Nastavení cesty k definicím flow. Povinně musíme zadat cestu k [@springappflow.xml@], které jsme umístili do [@/WEB-INF/flows/@]. Je možné zde nastavit cesty k dalším definicím.
Changed lines 187-188 from:
[@
<flow:flow-builder-services id="flowBuilderServices" view-factory-creator="viewFactoryCreator"/>
to:

[@<flow:flow-builder-services id="flowBuilderServices" view-factory-creator="viewFactoryCreator"/>
Changed lines 206-207 from:
to:
Tímto máme hotovou konfiguraci souboru [@springapp-servlet.xml@].
25 June 2009, 22:02 by JaroslavPavuk -
Changed lines 224-225 from:
* při problémech s instalací hledejte např. v [[http://jet2009.origo.ethz.ch/http://jira.springframework.org/secure/Dashboard.jspa|bugzille]] springu
to:
* při problémech s instalací hledejte např. v [[http://jira.springframework.org/secure/Dashboard.jspa|bugzille]] springu
Changed lines 228-230 from:
Není vhodné přidávat soubory s definicemi flow do hlavního projektu, který synchronizujeme s OpenCms serverem (jsou vyžadovány DTD pro XML). Vytvoříme tedy samostatný Spring projekt, kterému do Build Path přidáme náš hlavní projekt. Pro tvorbu nové definice máme k dispozici průvodce (jako pro vytváření projektu). Projekt obsahuje složku Spring Elements, kam můžeme vložit naše definice flow (právé tlačitko myši -> Properties). Grafický editor otevřeme položkou v kontextovém menu pravým tlačítkem myši na definici flow.

to:
Není vhodné přidávat soubory s definicemi flow do hlavního projektu, který synchronizujeme s [=OpenCms serverem=] (jsou vyžadovány DTD pro XML). Vytvoříme tedy samostatný Spring projekt, kterému do Build Path přidáme náš hlavní projekt. Pro tvorbu nové definice máme k dispozici průvodce (jako pro vytváření projektu). Projekt obsahuje složku Spring Elements, kam můžeme vložit naše definice flow (právé tlačitko myši -> Properties). Grafický editor otevřeme položkou v kontextovém menu pravým tlačítkem myši na definici flow.

25 June 2009, 21:59 by JaroslavPavuk -
Changed lines 172-173 from:
[+Dále je samotná konfigurace Web Flow:+]
to:
'''Dále je samotná konfigurace Web Flow:'''
Changed lines 233-238 from:
* Referenční příručka external
* Spring by Example - Web Flow external
* Spring by Example - Web Flow Subflow external
* Tutorial - Shopping Cart external

to:
* [[http://static.springframework.org/spring-webflow/docs/2.0.x/reference/html/index.html|Referenční příručka]]
* [[http://www.springbyexample.org/examples/simple-spring-web-flow-webapp.html|Spring by Example - Web Flow]]
* [[http://www.springbyexample.org/examples/spring-web-flow-subflow-webapp.html|Spring by Example - Web Flow Subflow]]
* [[http://wheelersoftware.com/articles/spring-web-flow-2.0.html|Tutorial - Shopping Cart]]

25 June 2009, 21:55 by JaroslavPavuk -
Changed lines 182-186 from:




to:
[@<flow:flow-registry id="flowRegistry" flow-builder-services="flowBuilderServices">
<flow:flow-location path="/WEB-INF/flows/springappflow.xml"/>
</flow:flow-registry>@]

Zaregistrování [@viewResolveru@] pro používaní view z MVC:
[@
<flow:flow-builder-services id="flowBuilderServices" view-factory-creator="viewFactoryCreator"/>

<bean id="viewFactoryCreator" class="org.springframework.webflow.mvc.builder.MvcViewFactoryCreator">
<property name="viewResolvers">
<list>
<ref bean="viewResolver"/>
</list>
</property>
</bean>@]

[@ViewResolver@] může vypadat například takto:

[@<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"></property>
<property name="prefix" value="/opencms/system/modules/cz.zcu.kiv.opencms.springapp/elements/views/"></property>
<property name="suffix" value=".jsp"></property>
</bean>@]


!!Definice Flow

Podle výše uvedené konfigurace předpokládáme definici flow v souboru [@springappflow.xml@]. Tvorba definic flow a práce s nimi je popsána v [[http://static.springframework.org/spring-webflow/docs/2.0.x/reference/html/index.html|referenční příručce]] v kapitolách 2-5.

!!Spring IDE

* plugin do Eclipse
* podpora Web Flow 2.0
* kontrola syntaxe, našeptávač
* grafický editor

!!!Instalace

* najdeme na [[http://springide.org/blog/|SpringIDE]] external
* v Eclipse WTP lze stahovat přímo v 'Help -> Software Updates -> Available Software -> Spring IDE Update Site', kde vybereme
** /Core/Spring IDE Core
** /Extensions/Spring IDE Web Flow Extension
* při problémech s instalací hledejte např. v [[http://jet2009.origo.ethz.ch/http://jira.springframework.org/secure/Dashboard.jspa|bugzille]] springu

!!!Založení Spring projektu

Není vhodné přidávat soubory s definicemi flow do hlavního projektu, který synchronizujeme s OpenCms serverem (jsou vyžadovány DTD pro XML). Vytvoříme tedy samostatný Spring projekt, kterému do Build Path přidáme náš hlavní projekt. Pro tvorbu nové definice máme k dispozici průvodce (jako pro vytváření projektu). Projekt obsahuje složku Spring Elements, kam můžeme vložit naše definice flow (právé tlačitko myši -> Properties). Grafický editor otevřeme položkou v kontextovém menu pravým tlačítkem myši na definici flow.


!!Odkazy

* Referenční příručka external
* Spring by Example - Web Flow external
* Spring by Example - Web Flow Subflow external
* Tutorial - Shopping Cart external

25 June 2009, 21:47 by JaroslavPavuk -
Changed lines 140-146 from:
# Stažení OGNL 2.6.9 external nebo jboss-el external.

# Přidání stažených JAR knihoven do OPENCMS_HOME\WEB-INF\lib.



to:
# Stažení [[http://repo1.maven.org/maven2/ognl/ognl/2.6.9/ognl-2.6.9.jar|OGNL 2.6.9]] nebo [[http://www.springsource.com/repository/app/bundle/detail?name=com.springsource.org.jboss.el|jboss-el]].

# Přidání stažených [@JAR@] knihoven do [@OPENCMS_HOME\WEB-INF\lib@].


!!Konfigurace

Upravíme soubor [@TOMCAT_HOME\webapps\opencms\WEB-INF\springapp-servlet.xml@]

Atributy kořenového elementu [@beans@] rožšíríme o schema pro Web Flow. Dostaneme tedy:

[@<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:flow="http://www.springframework.org/schema/webflow-config"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd
http://www.springframework.org/schema/webflow-config
http://www.springframework.org/schema/webflow-config/spring-webflow-config-2.0.xsd">@]

Mapováni controlleru flow na [@springappflow.html@]. Soubor s definicí flow bude očekáván ve tvaru [@springappflow.xml@], viz definice níže.

[@<bean id="simpleUrlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="springappflow.html">flowController</prop>
</props>
</property>
</bean>@]

[+Dále je samotná konfigurace Web Flow:+]

[@<bean id="flowController" class="org.springframework.webflow.mvc.servlet.FlowController">
<property name="flowExecutor" ref="flowExecutor"/>
</bean>

<flow:flow-executor id="flowExecutor" flow-registry="flowRegistry"/>@]

Nastavení cesty k definicím flow. Povinně musíme zadat cestu k [@springappflow.xml@], které jsme umístili do [@/WEB-INF/flows/@]. Dále zde můžeme nastavit cesty k dalším definicím.





25 June 2009, 21:38 by JaroslavPavuk -
Changed lines 138-139 from:
# Stažení [[Spring Web Flow|http://www.springsource.org/download#webflow]] (min. verze 2.0.x).
to:
# Stažení [[http://www.springsource.org/download#webflow|Spring Web Flow]] (min. verze 2.0.x).
25 June 2009, 21:37 by JaroslavPavuk -
Changed lines 136-139 from:
# Funkční Spring MVC (minimálně verze 2.5.4!) podle návodu.

# Stažení Spring Web Flow external (min. verze 2.0.x).
to:
# Funkční Spring MVC (minimálně verze 2.5.4!) podle návodu výše.

# Stažení [[Spring Web Flow|http://www.springsource.org/download#webflow]] (min. verze 2.0.x).
25 June 2009, 21:32 by JaroslavPavuk -
Changed lines 134-146 from:
to:
!!Instalace knihoven

# Funkční Spring MVC (minimálně verze 2.5.4!) podle návodu.

# Stažení Spring Web Flow external (min. verze 2.0.x).

# Stažení OGNL 2.6.9 external nebo jboss-el external.

# Přidání stažených JAR knihoven do OPENCMS_HOME\WEB-INF\lib.



25 June 2009, 21:29 by JaroslavPavuk -
Changed lines 131-135 from:

Web Flow


to:
!Integrace Spring Web Flow do [=OpenCms=]


25 June 2009, 21:27 by JaroslavPavuk -
Changed lines 15-16 from:
to:
----
Deleted lines 128-135:







Added lines 130-136:


Web Flow



----
25 June 2009, 21:24 by JaroslavPavuk -
Changed lines 49-50 from:
Do souboru [@web.xml@] ([@OPENCMS_HOME\WEB-INF@]) se musí doplnit nastavení [@DispatcherServletu@] Spring MVC a jeho namapování na URL. Volitelně se může přidat definice tld souboru pro knihovnu značek Springu. (Při použití nové verze servletů toto odpadá, neboť všechny jar soubory na classpath jsou javou skenovány a všechny nalezené *.tld soubory jsou automaticky přidány. Nicméně není na závadu, pokud je tld soubor explicitně v [@web.xml@] specifikován.)
to:
Do souboru [@web.xml@] ([@OPENCMS_HOME\WEB-INF@]) se musí doplnit nastavení [@DispatcherServletu@] Spring MVC a jeho namapování na URL. Volitelně se může přidat definice [@tld@] souboru pro knihovnu značek Springu. (Při použití nové verze servletů toto odpadá, neboť všechny jar soubory na classpath jsou javou skenovány a všechny nalezené [@*.tld@] soubory jsou automaticky přidány. Nicméně není na závadu, pokud je [@tld@] soubor explicitně v [@web.xml@] specifikován.)
Changed lines 68-69 from:
Jako další bod je potřeba přidat definici tld souboru. Toto se provede tím, že se do elementu [@<jsp-config>@] přidá následující kód:
to:
Jako další bod je potřeba přidat definici [@tld@] souboru. Toto se provede tím, že se do elementu [@<jsp-config>@] přidá následující kód:
Changed lines 79-80 from:
!!!3. Přidání tld (Tag library deskriptor) souboru s popisem taglib Spring-forms
to:
!!!3. Přidání [@tld@] (Tag library deskriptor) souboru s popisem taglib Spring-forms
Changed lines 100-101 from:
!!!5. Přidání souboru s applicationContextem pro Spring
to:
!!!5. Přidání souboru s [@applicationContextem@] pro Spring
Changed lines 108-109 from:
Spring poté bude hledat soubor [@applicationContext.xml@], který musí ležet na stejné úrovni jako soubor [@web.xml@] (pokud se nenastaví jinak). Prázdný soubor applicationContext.xml má následující strukturu:
to:
Spring poté bude hledat soubor [@applicationContext.xml@], který musí ležet na stejné úrovni jako soubor [@web.xml@] (pokud se nenastaví jinak). Prázdný soubor [@applicationContext.xml@] má následující strukturu:
25 June 2009, 21:22 by JaroslavPavuk -
Changed lines 49-52 from:
Do souboru [@web.xml@] ([@OPENCMS_HOME\WEB-INF@]) se musí doplnit nastavení [@DispatcherServletu@] Spring MVC a jeho namapování na URL. Volitelně se může přidat definice tld souboru pro knihovnu značek Springu. (Při použití nové verze servletů toto odpadá, neboť všechny jar soubory na classpath jsou javou skenovány a všechny nalezené *.tld soubory jsou automaticky přidány. Nicméně není na závadu, pokud je tld soubor explicitně v web.xml specifikován.)

Do web.xml doplňte následující definici servletu a jeho mapování:
to:
Do souboru [@web.xml@] ([@OPENCMS_HOME\WEB-INF@]) se musí doplnit nastavení [@DispatcherServletu@] Spring MVC a jeho namapování na URL. Volitelně se může přidat definice tld souboru pro knihovnu značek Springu. (Při použití nové verze servletů toto odpadá, neboť všechny jar soubory na classpath jsou javou skenovány a všechny nalezené *.tld soubory jsou automaticky přidány. Nicméně není na závadu, pokud je tld soubor explicitně v [@web.xml@] specifikován.)

Do [@web.xml@] doplňte následující definici servletu a jeho mapování:
Changed lines 102-103 from:
Vzhledem k tomu, že konfigurační soubor Spring MVC není jediným místem, ze kterého si Spring může načítat definice java bean, je možné a i důrazně doporučené oddělit konfigurační soubor Spring MVC od ostatních konfiguračních souborů Springu. Tím se zaručí to, že se mezi sebou nemíchají definice beanů, které jsou použiti v zobrazovací vrstvě s definicemi beanů, které se například starají o přístup k databázi. Toho se docílí tím, že se do souboru web.xml přidá následující kód:
to:
Vzhledem k tomu, že konfigurační soubor Spring MVC není jediným místem, ze kterého si Spring může načítat definice java bean, je možné a i důrazně doporučené oddělit konfigurační soubor Spring MVC od ostatních konfiguračních souborů Springu. Tím se zaručí to, že se mezi sebou nemíchají definice beanů, které jsou použiti v zobrazovací vrstvě s definicemi beanů, které se například starají o přístup k databázi. Toho se docílí tím, že se do souboru [@web.xml@] přidá následující kód:
Changed lines 108-109 from:
Spring poté bude hledat soubor [@applicationContext.xml@], který musí ležet na stejné úrovni jako soubor web.xml (pokud se nenastaví jinak). Prázdný soubor applicationContext.xml má následující strukturu:
to:
Spring poté bude hledat soubor [@applicationContext.xml@], který musí ležet na stejné úrovni jako soubor [@web.xml@] (pokud se nenastaví jinak). Prázdný soubor applicationContext.xml má následující strukturu:
25 June 2009, 21:20 by JaroslavPavuk -
Changed lines 16-17 from:
!Integrace Spring MVC do OpenCms
to:
!Integrace Spring MVC do [=OpenCms=]
Changed line 20 from:
* OpenCms 7.0.5 a teoreticky vyšší
to:
* [=OpenCms=] 7.0.5 a teoreticky vyšší
Changed lines 29-32 from:
* [@TOMCAT_HOME@] je adresář, ve kterém je nainstalován tomcat, na kterém je OpenCms nasazeno
* [@OPENCMS_HOME@] je adresář, ve kterém je běžící OpenCms (standardně [@TOMCAT_HOME\webapps\opencms@])

to:
* [@TOMCAT_HOME@] je adresář, ve kterém je nainstalován tomcat, na kterém je [=OpenCms=] nasazeno
* [@OPENCMS_HOME@] je adresář, ve kterém je běžící [=OpenCms=] (standardně [@TOMCAT_HOME\webapps\opencms@])

Changed lines 35-38 from:
Tento návod je napsán tak, že i ve Spring MVC nezkušenému uživateli poskytne návod na to, jak tento framework zaintegrovat do OpenCms. Nicméně je doporučeníhodné projít si nejdříve Spring MVC Step By Step Tutorial, který je standardně v distribuci Spring Framweworku. Dále uvedený postup pro vás poté bude daleko více srozumitelnější.

!!Integrace Spring MVC do OpenCms
to:
Tento návod je napsán tak, že i ve Spring MVC nezkušenému uživateli poskytne návod na to, jak tento framework zaintegrovat do [=OpenCms=]. Nicméně je doporučeníhodné projít si nejdříve Spring MVC Step By Step Tutorial, který je standardně v distribuci Spring Framweworku. Dále uvedený postup pro vás poté bude daleko více srozumitelnější.

!!Integrace Spring MVC do [=OpenCms=]
Changed lines 49-50 from:
Do souboru [@web.xml@] ([@OPENCMS_HOME\WEB-INF@]) se musí doplnit nastavení DispatcherServletu Spring MVC a jeho namapování na URL. Volitelně se může přidat definice tld souboru pro knihovnu značek Springu. (Při použití nové verze servletů toto odpadá, neboť všechny jar soubory na classpath jsou javou skenovány a všechny nalezené *.tld soubory jsou automaticky přidány. Nicméně není na závadu, pokud je tld soubor explicitně v web.xml specifikován.)
to:
Do souboru [@web.xml@] ([@OPENCMS_HOME\WEB-INF@]) se musí doplnit nastavení [@DispatcherServletu@] Spring MVC a jeho namapování na URL. Volitelně se může přidat definice tld souboru pro knihovnu značek Springu. (Při použití nové verze servletů toto odpadá, neboť všechny jar soubory na classpath jsou javou skenovány a všechny nalezené *.tld soubory jsou automaticky přidány. Nicméně není na závadu, pokud je tld soubor explicitně v web.xml specifikován.)
Changed lines 117-120 from:
!!!6. Přidání knihoven Spring MVC do OpenCms

Jako poslední krok je potřeba nahrát do OpenCms knihovny, které Spring MVC potřebuje pro svůj běh. Do adresáře: [@OPENCMS_HOME/WEB-INF/lib@] nahrajte následující soubory:
to:
!!!6. Přidání knihoven Spring MVC do [=OpenCms=]

Jako poslední krok je potřeba nahrát do [=OpenCms=] knihovny, které Spring MVC potřebuje pro svůj běh. Do adresáře: [@OPENCMS_HOME/WEB-INF/lib@] nahrajte následující soubory:
Changed lines 127-135 from:
Nyní spusťte Tomcat a OpenCms by mělo bez chyby nastartovat. Pokud se OpenCms nerozběhlo, můžete se podívat do log souborů v adresáři: [@TOMCAT_HOME\webapps\opencms\WEB-INF\logs@] A pokusit se v nich příčinu chyby objevit.







to:
Nyní spusťte Tomcat a [=OpenCms=] by mělo bez chyby nastartovat. Pokud se [=OpenCms=] nerozběhlo, můžete se podívat do log souborů v adresáři: [@TOMCAT_HOME\webapps\opencms\WEB-INF\logs@] A pokusit se v nich příčinu chyby objevit.







25 June 2009, 21:15 by JaroslavPavuk -
Changed lines 29-32 from:
* TOMCAT_HOME je adresář, ve kterém je nainstalován tomcat, na kterém je OpenCms nasazeno
* OPENCMS_HOME je adresář, ve kterém je běžící OpenCms (standardně TOMCAT_HOME\webapps\opencms)

to:
* [@TOMCAT_HOME@] je adresář, ve kterém je nainstalován tomcat, na kterém je OpenCms nasazeno
* [@OPENCMS_HOME@] je adresář, ve kterém je běžící OpenCms (standardně [@TOMCAT_HOME\webapps\opencms@])

Changed lines 47-50 from:
!!!2. Úprava souboru web.xml

Do souboru web.xml (OPENCMS_HOME\WEB-INF) se musí doplnit nastavení DispatcherServletu Spring MVC a jeho namapování na URL. Volitelně se může přidat definice tld souboru pro knihovnu značek Springu. (Při použití nové verze servletů toto odpadá, neboť všechny jar soubory na classpath jsou javou skenovány a všechny nalezené *.tld soubory jsou automaticky přidány. Nicméně není na závadu, pokud je tld soubor explicitně v web.xml specifikován.)
to:
!!!2. Úprava souboru [@web.xml@]

Do souboru [@web.xml@] ([@OPENCMS_HOME\WEB-INF@]) se musí doplnit nastavení DispatcherServletu Spring MVC a jeho namapování na URL. Volitelně se může přidat definice tld souboru pro knihovnu značek Springu. (Při použití nové verze servletů toto odpadá, neboť všechny jar soubory na classpath jsou javou skenovány a všechny nalezené *.tld soubory jsou automaticky přidány. Nicméně není na závadu, pokud je tld soubor explicitně v web.xml specifikován.)
Changed lines 66-68 from:
Stěžejnímy body v tomto kódu je element: <servlet-name>springmvcapp</servlet-name>, neboť udává, v jakém soubor bude Spring MVC hledat svá nastavení.

Jako další bod je potřeba přidat definici tld souboru. Toto se provede tím, že se do elementu <jsp-config> přidá následující kód:
to:
Stěžejnímy body v tomto kódu je element: [@<servlet-name>springmvcapp</servlet-name>@], neboť udává, v jakém soubor bude Spring MVC hledat svá nastavení.

Jako další bod je potřeba přidat definici tld souboru. Toto se provede tím, že se do elementu [@<jsp-config>@] přidá následující kód:
Changed lines 81-83 from:
Tento soubor musí být zkopírován do adresáře zadaného v minulém kroku. V našem případě je to tedy OPENCMS_HOME/WEB-INF/tld/. Soubor se nachází v distribuci Spring frameworku v adresáři: spring-framework-2.5.X/dist/resources/.

to:
Tento soubor musí být zkopírován do adresáře zadaného v minulém kroku. V našem případě je to tedy [@OPENCMS_HOME/WEB-INF/tld/@]. Soubor se nachází v distribuci Spring frameworku v adresáři: [@spring-framework-2.5.X/dist/resources/@].

Changed lines 86-87 from:
Spring MVC požaduje konfigurační soubor, ve kterém jsou uloženy definice beans a dalších java tříd, které při své činnosti potřebuje. Jméno tohoto souboru je určeno jménem servletu - viz. výše v souboru web.xml a příponou –servlet.xml. V našem případě se tedy tento soubor bude jmenovat springapp-servlet.xml. A bude ležet na stejné adresářové úrovni jako soubor web.xml. Tento soubor bude vypadat následujícím způsobem:
to:
Spring MVC požaduje konfigurační soubor, ve kterém jsou uloženy definice beans a dalších java tříd, které při své činnosti potřebuje. Jméno tohoto souboru je určeno jménem servletu - viz. výše v souboru [@web.xml@] a příponou [@–servlet.xml@]. V našem případě se tedy tento soubor bude jmenovat [@springapp-servlet.xml@]. A bude ležet na stejné adresářové úrovni jako soubor [@web.xml@]. Tento soubor bude vypadat následujícím způsobem:
Added line 96:
Changed lines 102-103 from:
Vzhledem k tomu, že konfigurační soubor Spring MVC není jediným místem, ze kterého si Spring může načítat definice java bean, je možné a i důrazně doporučené oddělit konfigurační soubor Spring MVC od ostatních konfiguračních souborů Springu. Tím se zaručí to, že se mezi sebou nemíchají definice beanů, které jsou použiti v zobrazovací vrstvě s definicemi beanů, které se například starají o přístup k databázi. Toho se docílí tím, že se do souboru web.xml přidá následující kód:
to:
Vzhledem k tomu, že konfigurační soubor Spring MVC není jediným místem, ze kterého si Spring může načítat definice java bean, je možné a i důrazně doporučené oddělit konfigurační soubor Spring MVC od ostatních konfiguračních souborů Springu. Tím se zaručí to, že se mezi sebou nemíchají definice beanů, které jsou použiti v zobrazovací vrstvě s definicemi beanů, které se například starají o přístup k databázi. Toho se docílí tím, že se do souboru web.xml přidá následující kód:
Changed lines 108-109 from:
Spring poté bude hledat soubor applicationContext.xml, který musí ležet na stejné úrovni jako soubor web.xml (pokud se nenastaví jinak). Prázdný soubor applicationContext.xml má následující strukturu:
to:
Spring poté bude hledat soubor [@applicationContext.xml@], který musí ležet na stejné úrovni jako soubor web.xml (pokud se nenastaví jinak). Prázdný soubor applicationContext.xml má následující strukturu:
Changed lines 119-124 from:
Jako poslední krok je potřeba nahrát do OpenCms knihovny, které Spring MVC potřebuje pro svůj běh. Do adresáře: OPENCMS_HOME/WEB-INF/lib nahrajte následující soubory:

* spring.jar z adresáře: spring-framework-2.5.6/dist
* spring-webmvc.jar z adresáře: spring-framework-2.5.6/dist/modules

to:
Jako poslední krok je potřeba nahrát do OpenCms knihovny, které Spring MVC potřebuje pro svůj běh. Do adresáře: [@OPENCMS_HOME/WEB-INF/lib@] nahrajte následující soubory:

* spring.jar z adresáře: [@spring-framework-2.5.6/dist@]
* spring-webmvc.jar z adresáře: [@spring-framework-2.5.6/dist/modules @]

Changed lines 127-135 from:
Nyní spusťte Tomcat a OpenCms by mělo bez chyby nastartovat. Pokud se OpenCms nerozběhlo, můžete se podívat do log souborů v adresáři: TOMCAT_HOME\webapps\opencms\WEB-INF\logs A pokusit se v nich příčinu chyby objevit.







to:
Nyní spusťte Tomcat a OpenCms by mělo bez chyby nastartovat. Pokud se OpenCms nerozběhlo, můžete se podívat do log souborů v adresáři: [@TOMCAT_HOME\webapps\opencms\WEB-INF\logs@] A pokusit se v nich příčinu chyby objevit.







25 June 2009, 21:11 by JaroslavPavuk -
Changed lines 16-19 from:
!!Integrace Spring MVC do OpenCms

!!!Softwarové požadavky
to:
!Integrace Spring MVC do OpenCms

!!Softwarové požadavky
Changed lines 25-26 from:
!!!Používaní konvence
to:
!!Používaní konvence
Changed lines 33-34 from:
!!!Než začnete číst tento tutoriál
to:
!!Než začnete číst tento tutoriál
Changed lines 37-38 from:
!!!!Integrace Spring MVC do OpenCms
to:
!!Integrace Spring MVC do OpenCms
Changed lines 42-43 from:
!!!!1. Zastavte Tomcat
to:
!!!1. Zastavte Tomcat
Changed lines 47-48 from:
!!!!2. Úprava souboru web.xml
to:
!!!2. Úprava souboru web.xml
Changed lines 78-79 from:
!!!!3. Přidání tld (Tag library deskriptor) souboru s popisem taglib Spring-forms
to:
!!!3. Přidání tld (Tag library deskriptor) souboru s popisem taglib Spring-forms
Changed lines 83-84 from:
!!!!4. Vytvoření souboru s definicí beans a nastavení Spring MVC
to:
!!!4. Vytvoření souboru s definicí beans a nastavení Spring MVC
Changed lines 97-98 from:
!!!!5. Přidání souboru s applicationContextem pro Spring
to:
!!!5. Přidání souboru s applicationContextem pro Spring
Changed lines 112-113 from:
!!!!6. Přidání knihoven Spring MVC do OpenCms
to:
!!!6. Přidání knihoven Spring MVC do OpenCms
Changed lines 120-121 from:
!!!!7. Test instalace
to:
!!!7. Test instalace
25 June 2009, 21:09 by JaroslavPavuk -
Changed lines 37-38 from:
!!!Integrace Spring MVC do OpenCms
to:
!!!!Integrace Spring MVC do OpenCms
Changed lines 42-43 from:
#Zastavte Tomcat
to:
!!!!1. Zastavte Tomcat
Changed lines 47-48 from:
#Úprava souboru web.xml
to:
!!!!2. Úprava souboru web.xml
Changed lines 78-79 from:
#Přidání tld (Tag library deskriptor) souboru s popisem taglib Spring-forms
to:
!!!!3. Přidání tld (Tag library deskriptor) souboru s popisem taglib Spring-forms
Changed lines 83-84 from:
#Vytvoření souboru s definicí beans a nastavení Spring MVC
to:
!!!!4. Vytvoření souboru s definicí beans a nastavení Spring MVC
Changed lines 97-98 from:
#Přidání souboru s applicationContextem pro Spring
to:
!!!!5. Přidání souboru s applicationContextem pro Spring
Changed lines 112-113 from:
#Přidání knihoven Spring MVC do OpenCms
to:
!!!!6. Přidání knihoven Spring MVC do OpenCms
Changed lines 120-121 from:
#Test instalace
to:
!!!!7. Test instalace
25 June 2009, 21:07 by JaroslavPavuk -
Changed lines 16-19 from:
[++Integrace Spring MVC do OpenCms ++]

Softwarové požadavky
to:
!!Integrace Spring MVC do OpenCms

!!!Softwarové požadavky
Changed lines 25-26 from:
Používaní konvence
to:
!!!Používaní konvence
Changed lines 33-34 from:
Než začnete číst tento tutoriál
to:
!!!Než začnete číst tento tutoriál
Changed lines 37-38 from:
Integrace Spring MVC do OpenCms
to:
!!!Integrace Spring MVC do OpenCms
Changed lines 42-43 from:
Zastavte Tomcat
to:
#Zastavte Tomcat
Changed lines 47-48 from:
Úprava souboru web.xml
to:
#Úprava souboru web.xml
Changed lines 78-79 from:
Přidání tld (Tag library deskriptor) souboru s popisem taglib Spring-forms
to:
#Přidání tld (Tag library deskriptor) souboru s popisem taglib Spring-forms
Changed lines 83-84 from:
Vytvoření souboru s definicí beans a nastavení Spring MVC
to:
#Vytvoření souboru s definicí beans a nastavení Spring MVC
Changed lines 97-98 from:
Přidání souboru s applicationContextem pro Spring
to:
#Přidání souboru s applicationContextem pro Spring
Changed lines 112-113 from:
Přidání knihoven Spring MVC do OpenCms
to:
#Přidání knihoven Spring MVC do OpenCms
Changed lines 120-121 from:
Test instalace
to:
#Test instalace
25 June 2009, 21:02 by JaroslavPavuk -
Added lines 16-130:
[++Integrace Spring MVC do OpenCms ++]

Softwarové požadavky

* OpenCms 7.0.5 a teoreticky vyšší
* Spring Framwork 2.5.6 (obsahuje i MVC)
* Java 1.5 a vyšší


Používaní konvence

Pro zjednodušení výkladu je v následujícím dokumentu použita při odkazování na adresáře následující konvence:

* TOMCAT_HOME je adresář, ve kterém je nainstalován tomcat, na kterém je OpenCms nasazeno
* OPENCMS_HOME je adresář, ve kterém je běžící OpenCms (standardně TOMCAT_HOME\webapps\opencms)


Než začnete číst tento tutoriál

Tento návod je napsán tak, že i ve Spring MVC nezkušenému uživateli poskytne návod na to, jak tento framework zaintegrovat do OpenCms. Nicméně je doporučeníhodné projít si nejdříve Spring MVC Step By Step Tutorial, který je standardně v distribuci Spring Framweworku. Dále uvedený postup pro vás poté bude daleko více srozumitelnější.

Integrace Spring MVC do OpenCms

Instalace Spring MVC frameworků se obecně skládá z následkujících bodů:


Zastavte Tomcat

Předtím, než budete pokračovat v čtení a provádění tohoto tutoriálu, zastavte prosím tomcata.


Úprava souboru web.xml

Do souboru web.xml (OPENCMS_HOME\WEB-INF) se musí doplnit nastavení DispatcherServletu Spring MVC a jeho namapování na URL. Volitelně se může přidat definice tld souboru pro knihovnu značek Springu. (Při použití nové verze servletů toto odpadá, neboť všechny jar soubory na classpath jsou javou skenovány a všechny nalezené *.tld soubory jsou automaticky přidány. Nicméně není na závadu, pokud je tld soubor explicitně v web.xml specifikován.)

Do web.xml doplňte následující definici servletu a jeho mapování:

[@<!-- Spring MVC Sample App Servlet -->
<servlet>
<servlet-name>springmvcapp</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>

<!-- Servlet Mapping -->
<servlet-mapping>
<servlet-name>springmvcapp</servlet-name>
<url-pattern>/springmvcapp/*</url-pattern>
</servlet-mapping>@]

Stěžejnímy body v tomto kódu je element: <servlet-name>springmvcapp</servlet-name>, neboť udává, v jakém soubor bude Spring MVC hledat svá nastavení.

Jako další bod je potřeba přidat definici tld souboru. Toto se provede tím, že se do elementu <jsp-config> přidá následující kód:
[@<jsp-config>
...
<taglib>
<taglib-uri>/spring</taglib-uri>
<taglib-location>/WEB-INF/tld/spring-form.tld</taglib-location>
</taglib>
</jsp-config>@]


Přidání tld (Tag library deskriptor) souboru s popisem taglib Spring-forms

Tento soubor musí být zkopírován do adresáře zadaného v minulém kroku. V našem případě je to tedy OPENCMS_HOME/WEB-INF/tld/. Soubor se nachází v distribuci Spring frameworku v adresáři: spring-framework-2.5.X/dist/resources/.


Vytvoření souboru s definicí beans a nastavení Spring MVC

Spring MVC požaduje konfigurační soubor, ve kterém jsou uloženy definice beans a dalších java tříd, které při své činnosti potřebuje. Jméno tohoto souboru je určeno jménem servletu - viz. výše v souboru web.xml a příponou –servlet.xml. V našem případě se tedy tento soubor bude jmenovat springapp-servlet.xml. A bude ležet na stejné adresářové úrovni jako soubor web.xml. Tento soubor bude vypadat následujícím způsobem:
[@<?xml version="1.0" encoding="utf-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/xmlschema-instance"
xsi:schemalocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<!-- the application context definition for the springapp dispatcherservlet -->

</beans>@]
Výše uvedená, na ještě prázdný soubor obsáhlá definice, je důležitá pro správnou funkci nástrojů, například pro podporu Springu v Eclipse.


Přidání souboru s applicationContextem pro Spring

Vzhledem k tomu, že konfigurační soubor Spring MVC není jediným místem, ze kterého si Spring může načítat definice java bean, je možné a i důrazně doporučené oddělit konfigurační soubor Spring MVC od ostatních konfiguračních souborů Springu. Tím se zaručí to, že se mezi sebou nemíchají definice beanů, které jsou použiti v zobrazovací vrstvě s definicemi beanů, které se například starají o přístup k databázi. Toho se docílí tím, že se do souboru web.xml přidá následující kód:
[@<listener>
<listenerclass>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>@]

Spring poté bude hledat soubor applicationContext.xml, který musí ležet na stejné úrovni jako soubor web.xml (pokud se nenastaví jinak). Prázdný soubor applicationContext.xml má následující strukturu:
[@<?xml version="1.0" encoding="utf-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">

</beans>@]

Přidání knihoven Spring MVC do OpenCms

Jako poslední krok je potřeba nahrát do OpenCms knihovny, které Spring MVC potřebuje pro svůj běh. Do adresáře: OPENCMS_HOME/WEB-INF/lib nahrajte následující soubory:

* spring.jar z adresáře: spring-framework-2.5.6/dist
* spring-webmvc.jar z adresáře: spring-framework-2.5.6/dist/modules


Test instalace

Nyní spusťte Tomcat a OpenCms by mělo bez chyby nastartovat. Pokud se OpenCms nerozběhlo, můžete se podívat do log souborů v adresáři: TOMCAT_HOME\webapps\opencms\WEB-INF\logs A pokusit se v nich příčinu chyby objevit.







09 March 2009, 14:37 by PremekBrada -
Changed lines 7-8 from:
to:
* např. re-implementace modulu Osoby
Added lines 11-15:
Omezující podmínky
* stávající architektura webových aplikací KIV -- výchozí bod, ne nutně cílový stav
* koncepční jednoduchost (krátká learning curve) -- "příjemcem" je čerstvý absolvent KIV/PIA

09 March 2009, 14:34 by PremekBrada -
Changed line 3 from:
# analyzovat možnosti integrace OpenCms a webových frameworků
to:
# analyzovat možnosti integrace OpenCms a webových frameworků, zejména Spring MVC
09 March 2009, 14:34 by PremekBrada -
Added line 4:
* termín 30.3.2009
09 March 2009, 14:32 by PremekBrada -
Added lines 1-10:
Projekt (semestrální práce z předmětu KIV/JET) má následující cíle:

# analyzovat možnosti integrace OpenCms a webových frameworků
# vyhodnotit přínosy nasazení frameworku - learning curve vs efektivita práce
# vytvořit vzorovou implementaci ve vybrané sadě frameworků

Potenciální frameworky k analýze jsou Spring MVC, JPA/Hibernate, Stripes; tento výčet bude upraven na základě výsledků cíle 1.

----
Zpět na WebKiv.RedSys