Tohle se ale vůbec netýká filtrů nebo servletů ale nastavení Sitemesh.
Následující konfigurace filtrů a servletů znamená toto:
všechny pořadavky se předají filtru "sitemesh". Pokud tento filtr
nepřesměruje požadavek jinam, pro všechny cesty začínající na
"/sample/" se zpracují servletem "sample", pokud cesta nezačíná
"/sample/" ale končí ".dec", zpracuje je "sitemesh-freemarker",
ostatní případy zpracuje výchozí servlet (mapovaný k "/", pokud žádný
nespecifikujete, poskytne jej zpravidla servlet kontejner).

Filip Jirsák

    <filter>
        <filter-name>sitemesh</filter-name>
        
<filter-class>com.opensymphony.module.sitemesh.filter.PageFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>sitemesh</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <servlet>
        <servlet-name>sample</servlet-name>
        <servlet-class>
            org.springframework.web.servlet.DispatcherServlet
        </servlet-class>
    </servlet>
    <servlet>
        <servlet-name>sitemesh-freemarker</servlet-name>
        
<servlet-class>com.opensymphony.module.sitemesh.freemarker.FreemarkerDecoratorServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>sample</servlet-name>
        <url-pattern>/sample/*</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>sitemesh-freemarker</servlet-name>
        <url-pattern>*.dec</url-pattern>
    </servlet-mapping>


2009/2/26 Petr Pokorný <[email protected]>:
> Tak jsem to vyzkousel jen s *.dec a bez uspechu. Neklikrat jsem to zkousel 
> prepisovat, z meho pohledu na jednodusi zapisy  a taky nic.
> Tak to prozatim necham pres filter a zkusim se  k tomu vratit az budu mit 
> vice zazitych informaci ohledne mapovani servletu.
>
> Petr a diky za informace
>
> -----Original Message-----
> From: [email protected] [mailto:[email protected]] On 
> Behalf Of Filip Jirsák
> Sent: Wednesday, February 25, 2009 2:03 PM
> To: Java
> Subject: Re: Sitemesh - decodery ve freemarkeru
>
> Filtr to obsluhuje správně, protože má vzor "/*" -- takže se má
> aplikovat na vše mimo pojmenovaných servletů. Pokud jej vyřadíte,
> zobrazí se zdroj Freemarkeru z toho důvodu, že posíláte .dec soubor,
> který neodpovídá žádné cestě servletu, takže jej odešle výchozí
> servlet jako běžný soubor.
>
> Nevím přesně, jak fungují dekorátory a jejich vzory -- předpokládám,
> že je přeposlání (forward) v rámci servlet kontejneru. Pokud se jako
> vzory pro URL používá stejná syntaxe jako pro servlety a filtry, pak
> "/*.dec" je špatně a mělo by to být "*.dec" bez lomítka. Vzory
> začínají buď lomítkem a pak je to buď přesná shoda (pokud vzor nekončí
> hvězdičkou), nebo předpona cesty (pokud cesta končí hvězdičkou). Druhý
> typ vzorů začíná hvězdičkou a určuje "příponu souboru" (postfix
> cesty). Ve vzorech pro servlety a filtry tedy nikdy nemůže být
> hvězdička uprostřed vzoru. Je ale možné, že Sitemesh používá jiný
> způsob rozpoznávání vzorů.
>
> Filip Jirsák
>
> Dne 25. únor 2009 13:08 Petr Pokorný <[email protected]> napsal(a):
>> V tom pipade napisi muj priklad jelikoz si to potrebuji ujasnit na necem 
>> jednoduchem...
>>
>> Toto je web.xml ...funkcne nastavene na filtruj vsechno
>>
>> <?xml version="1.0" encoding="UTF-8"?>
>> <web-app xmlns="http://java.sun.com/xml/ns/javaee";
>>         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
>>         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
>>                  http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd";
>>         version="2.5">
>>
>>    <!-- Filter for Sitemesh -->
>>    <filter>
>>        <filter-name>sitemesh</filter-name>
>>        
>> <filter-class>com.opensymphony.module.sitemesh.filter.PageFilter</filter-class>
>>    </filter>
>>
>>    <servlet>
>>        <servlet-name>sample</servlet-name>
>>        <servlet-class>
>>            org.springframework.web.servlet.DispatcherServlet
>>        </servlet-class>
>>        <load-on-startup>1</load-on-startup>
>>    </servlet>
>>
>>    <servlet-mapping>
>>        <servlet-name>sample</servlet-name>
>>        <url-pattern>/sample/*</url-pattern>
>>    </servlet-mapping>
>>
>>    <!-- All requests should go through sidemesh filter -->
>>    <filter-mapping>
>>        <filter-name>sitemesh</filter-name>
>>        <url-pattern>/*</url-pattern>
>>    </filter-mapping>
>>
>>    <context-param>
>>        <param-name>contextConfigLocation</param-name>
>>        <param-value>
>>            /WEB-INF/applicationContext*.xml
>>        </param-value>
>>    </context-param>
>>    <listener>
>>        <listener-class>
>>            org.springframework.web.context.ContextLoaderListener
>>        </listener-class>
>>    </listener>
>> </web-app>
>>
>> Decorator ma cestu k souboru
>> <decorators>
>>    <decorator name="meDecorator" page="/decorators/decorator.jsp">
>>        <pattern>*</pattern>
>> </decorators>
>>
>> A ve springu je jen definice url na controller ktery zobrazuje jednoduchy 
>> freemarker template...
>>
>> A pokud toto pridam do web.xml
>>
>>    <!--Declare servlet for handling freemarker requests -->
>>    <servlet>
>>        <servlet-name>sitemesh-freemarker</servlet-name>
>>        
>> <servlet-class>com.opensymphony.module.sitemesh.freemarker.FreemarkerDecoratorServlet</servlet-class>
>>        <init-param>
>>            <param-name>TemplatePath</param-name>
>>            <param-value>/decorators/</param-value>
>>        </init-param>
>>        <init-param>
>>            <param-name>default_encoding</param-name>
>>            <param-value>ISO-8859-1</param-value>
>>        </init-param>
>>    </servlet>
>>
>>
>>    <servlet-mapping>
>>        <servlet-name>sitemesh-freemarker</servlet-name>
>>        <url-pattern>*.dec</url-pattern>
>>    </servlet-mapping>
>>
>> A toto do decoderu.xml
>>
>>        <decorator name="frDecorator" page="/decorators/freemarkerDec.dec">
>>        <pattern>/*.dec</pattern>
>>    </decorator>
>>
>> Pokud to volam /sample/index.dec
>>
>> Tak to prevezme filter a ne sitemesh-freemarker
>> A bez filteru  sitemesh to zobrazi oroginal freemarker template.
>>
>> Premyslim zda jen nechapu jak poskladat vice filteru, a servletu dohromady.
>>
>> Diky za odpoved
>>
>> -----Original Message-----
>> From: [email protected] [mailto:[email protected]] On 
>> Behalf Of Filip Jirsák
>> Sent: Wednesday, February 25, 2009 12:26 PM
>> To: Java
>> Subject: Re: Sitemesh - decodery ve freemarkeru
>>
>> Dobré odpoledne,
>> nevím, jaký případ řešíte konkrétně, ale obecně to funguje tak, že
>> servlet engine postupně prochází filtry odpovídající danému URL v
>> pořadí, v jakém jsou definovány, a nakonec (pokud zpracování nějaký
>> filtr nepřeruší nebo nepřesměruje jinam) se řízení předá jedinému
>> servletu, jeho vzor URL nejlépe odpovídá požadovanému URL. Jak přesně
>> se stanovuje, zda filtr patří k danému URL nebo ne a jak se stanovuje
>> pořadí toho, zda URL odpovídá vzoru servletu, najdete ve specifikaci,
>> není to zas tak jednoduché.
>>
>> Pokud například nastavíte Freemarker, aby zpracovával cestu *.ftl, a
>> příslušné šablony nebudou v cestě, jejíž prefix by zpracovával nějaký
>> jiný servlet (např. nebudou v cestě /sablony/sablona.ftl v prípadě,
>> kdy existuje servlet pro cestu /sablony/*), stačí zavolat cestu s
>> koncovkou .ftl a příslušný soubor bude zpracován Freemarkerem.
>>
>> S pozdravem
>>
>> Filip Jirsák
>>
>> Dne 25. únor 2009 11:42 Petr Pokorný <[email protected]> napsal(a):
>>> Zdravim konferenci,
>>> potrebuji poradit o Sitemesh jako serveltu freemarkeru.
>>>
>>> Mam rozchozeny projekt kde mam Spring, freemarker a Sitemesh jako filtr.
>>> Funguje to bez probelmu. Dekodery jsou psane v JSP.
>>> Nejak si nedokazi dat dohroamdy, pridani servletu- freemarkeru, tak aby jsme
>>> mohli psat dekodery taky ve freemarkeru.
>>>
>>> Koukal jsem se na stranky Sitemesh, a vzal si tam ten jejich priklad a uz
>>> nekolikaty den to resim, bud si nedokazi poskladat jak pospolu funguje vice
>>> servletu  a filter  .. nebo tam mam nejakou jinou chybu.
>>>
>>> Mate nekdo o tom prehled, aby jste poradil jak to jednoduse s ungujiciho
>>> filteru prevest na freemarker servlet decoder?
>>>
>>> Diky za podporu
>>>
>>>
>>> Jsem spozdravem Petr Pokorny
>>>
>>>
>>> __________ Informace od ESET Smart Security, verze databaze 3876 (20090221)
>>> __________
>>>
>>> Tuto zpravu proveril ESET Smart Security.
>>>
>>> http://www.eset.cz
>>>
>>>
>>>
>>
>>
>>
>> --
>> Filip Jirsák
>> [email protected]
>>
>>
>> __________ Informace od ESET Smart Security, verze databaze 3876 (20090221) 
>> __________
>>
>> Tuto zpravu proveril ESET Smart Security.
>>
>> http://www.eset.cz
>>
>>
>>
>
>
>
> --
> Filip Jirsák
> [email protected]
>
>



-- 
Filip Jirsák
[email protected]

Odpovedet emailem