Strona główna > SiteMesh, Spring Framework > Spring Framework 3 + SiteMesh 3 – pierwsze starcie

Spring Framework 3 + SiteMesh 3 – pierwsze starcie

Po dłuższej przerwie czas wrócić do pisania 🙂 Wprawdzie praca magisterska jeszcze nie skończona ale jest trochę luźniej i czas na jakiś mądry 😉 wpis.

Ostatnio jeden blogerów Darek Zoń zaczął na swoim blogu pisać tutorial o tworzeniu aplikacji w Spring Framework z wykorzystaniem SiteMesh i Hibernate. Zainteresowałem się tematem i podzielę się się wrażeniami z pierwszego starcia z tymi narzędziami.

Swój projekt rozpocząłem w NetBeans 6.9 RC 2 (ma wsparcie dla Spring Framework 3, do projektu są automatycznie dodane biblioteki wersji 3.0.2). Do utworzenia aplikacji konieczne jest pobranie biblioteki SiteMesh (wersja alpha).

Standardowo tworzymy nowy projekt wykonując następujące kroki

  • New project
  • Java Web -> WebApplication
  • serwer może być domyślny (Apache)
  • zaznaczamy Spring Web MVC i w konfiguracji wybieramy wersję 3

W związku z tym że nowy Spring Framework pozwala na tworzenie kontrolerów poprzez adnotację @Controller w pliku konfiguracyjnym trzeba dodać odpowiednie opcje które na to pozwolą.

W pliku dispatcher-servlet.xml należy dodać poniższy kod:

</span></span>
<pre><pre><context:component-scan base-package="eu.ryznar.controller" />
<context:annotation-config />
<context:spring-configured />

Próba umieszczenia takiego projektu na serwerze zwróci wyjątek w postaci (fragment):

org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 13 in XML document from ServletContext resource [/WEB-INF/dispatcher-servlet.xml] is invalid; nested exception is org.xml.sax.SAXParseException: The prefix "context" for element "context:component-scan" is not bound.
.
.
.
Caused by: org.xml.sax.SAXParseException: The prefix "context" for element "context:component-scan" is not bound.
.
.
.
2010-06-02 12:25:23 org.apache.catalina.core.StandardContext loadOnStartup
SEVERE: Servlet /WebApp1 threw load() exception
org.xml.sax.SAXParseException: The prefix "context" for element "context:component-scan" is not bound.

Aby się tego „pozbyć” w tym samym pliku w sekcji beans należy dodać:

xmlns:context="http://www.springframework.org/schema/context"

Oraz do xsi:schemaLocation dopisać:

http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd

Teraz można dodać kontroler we wskazanej wcześniej paczce:

package eu.ryznar.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

@Controller
public class IndexController {

    @RequestMapping(value="/index")
    public ModelAndView index() {
        ModelAndView mv = new ModelAndView("hello");

        return mv;
    }
}

oraz utworzyć plik hello.jsp w katalogu /WEB-INF/jsp:

<html>
  <head>
    <title>Hello World</title>
    <meta name='description' content='A simple page'>
  </head>
  <body>
    <p>Hello <strong>world</strong>!</p>
  </body>
</html>

Próba uruchomienia takiej aplikacje rzuca kolejny wyjątek (fragment):

java.lang.NoClassDefFoundError: org/aspectj/lang/NoAspectBoundException
.
.
.
Caused by: java.lang.ClassNotFoundException: org.aspectj.lang.NoAspectBoundException
.
.
.
2010-06-01 22:43:05 org.apache.catalina.core.StandardContext loadOnStartup
SEVERE: Servlet /WebApp1 threw load() exception
java.lang.ClassNotFoundException: org.aspectj.lang.NoAspectBoundException

Brakuje nam biblioteki AspectJ. Należy ją pobrać ze strony http://eclipse.org/aspectj .
Pobrany plik należy wypakować, i do bibliotek tworzonego projektu dodać plik jar: aspectjrt.jar.

Teraz można uruchomić aplikację, i po wpisaniu adresu (port zależny od serwera) http://localhost:8084/WebApp1/index.html strona zostanie wyświetlona poprawnie.

Czas na SiteMesh. Do bibliotek projektu należy dodać pobrane archiwum jar.
Działania SiteMesh nie będę omawiał, pokażę tylko konfigurację. Autor wskazanego bloga użył konfiguracji opartej o klasę Java, mi jednak udało się z samą konfiguracją xml. Tzn. w pliku web.xml dodajemy odpowiednie filtry:

  <filter>
    <filter-name>sitemesh</filter-name>
    <filter-class>org.sitemesh.config.ConfigurableSiteMeshFilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>sitemesh</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

I dodatkowo tworzymy plik sitemesh3.xml (w tej samej ścieżce co web.xml) o następującej zawartości:

<?xml version="1.0" encoding="UTF-8"?>
<sitemesh>
  <mapping path="/*" decorator="/WEB-INF/jsp/decorator.jsp"/>
</sitemesh>

Plik który widnieje w konfiguracji decorator.jsp trzeba stworzyć we wskazanej ścieżce. Odgrywa on rolę szablonu, wg którego budowane są podstrony. Przykładowa zawartość pliku.

<html>
  <head>
    <title>SiteMesh example: <sitemesh:write property='title'/></title>
    <style type='text/css'>
      /* Some CSS */
      body { font-family: arial, sans-serif; background-color: #ffffcc; }
      h1, h2, h3, h4 { text-align: center; background-color: #ccffcc; border-top: 1px solid #66ff66; }
      .mainBody { padding: 10px; border: 1px solid #555555; }
      .disclaimer { text-align: center; border-top: 1px solid #cccccc; margin-top: 40px; color: #666666; font-size: smaller; }
    </style>
    <sitemesh:write property='head'/>
  </head>
  <body>

    <h1 class='title'>SiteMesh example site: <sitemesh:write property='title'/></h1>

    <div class='mainBody'>
      <sitemesh:write property='body'/>
    </div>

    <div class='disclaimer'>Site disclaimer. This is an example.</div>

  </body>
</html>

To wszytko. Można odświeżyć wcześniej uruchomioną stronę i zobaczymy ładnie sformatowaną stronę z „Hello World”.

Jeśli coś źle napisałem będę wdzięczny za uwagi.

Reklamy
  1. kuki
    10 listopada 2010 o 8:07

    Dzięki za podzielenie się info, miałem podobny problem ale portlety+spring+liferay+hibernate to dopiero sajgon ^^

  2. amaraa
    9 grudnia 2010 o 12:07

    Thanx

  3. 11 listopada 2012 o 22:56

    Thanks for your handy post. Through the years, I have come to understand that the actual symptoms of mesothelioma cancer
    are caused by the actual build up associated fluid between the lining in the lung and the
    breasts cavity. The illness may start inside the chest vicinity and pass on to
    other parts of the body. Other symptoms of pleural mesothelioma cancer include weight
    loss, severe deep breathing trouble, temperature, difficulty eating, and
    bloating of the face and neck areas. It really should be noted some people existing with the disease usually do not experience
    any kind of serious signs at all.

  4. 6 stycznia 2013 o 19:41

    Hi, its pleasant article about media print,
    we all know media is a impressive source of facts.

  5. 22 czerwca 2013 o 13:42

    For latest news you have to go to see the web and on internet I found this website as a most excellent website for most recent updates.

  6. 28 lipca 2013 o 11:54

    Emma puts Lexy in the soil and says it will heal her. To take matters into her own hands and figure how to get herself
    that ring. By reading this article, you, too, can learn how
    to channel their powers of persuasion and negotiation.

  7. 18 września 2013 o 19:23

    When I initially left a comment I seem too
    have cliicked the -Notify me when new ccomments aare added-
    checkbox and now ech time a comment is added I get four emails with the exact same comment.
    There has to be a way you can remove me rom that service?
    Kudos!

  8. 9 czerwca 2014 o 6:43

    Nadzwyczaj fajowy post, badawcze teksty polecam wszystkim literaturę

  9. 21 lipca 2014 o 19:19

    It’s in fact very complex in this active life to listen news on TV, therefore I
    only use internet for that reason, and obtain the newest news.

  10. 8 sierpnia 2014 o 14:18

    Jesteś może z pewnością patrz swój entuzjazm w praca piszesz.
    Arena liczy na jeszcze bardziej namiętny pisarzy jak ty, który
    nie boi wspominając jak wierzą. Przez cały czas Follow serca.

  11. 24 września 2014 o 21:31

    Strona świadczy o ciekawych wydarzeniach, zapraszam do
    dyskusji

  12. 26 września 2014 o 17:06

    Piekielnie interesujący tekst, polecam wszystkim

  13. 9 października 2014 o 14:34

    *Archangel Zadkiel: „Righteousness of God” – Angel of Divine Justice and
    violet flame protection; assists you with Divine Justice, burning away all that no longer serves you.
    On the physical side, the third eye chakra deficient individual may suffer
    from headaches, eye problems, vision problems, brain tumors, forgetfulness, lack of concentration,
    tumors and seizures. Caution:When working with any gemstone it’s advisable to make sure you do not work with them for more than an hour per session.

  14. 28 grudnia 2014 o 21:53

    Wybitnie fajowy post, nietuzinkowe zapisy zalecam wszystkim literaturę

  15. blood and blade hack
    30 grudnia 2014 o 22:30

    Top gaming manufacturers like Rockdirect inside UK are actually all carrying DX 10 Graphics of their gaming machines.

    Since games are really high-priced, it can be the better choice copying the game and safeguard your investment.
    I always laugh, because as long as I’m in the gaming industry, I am asked yearly,” that PC gaming is dead. It is important mainly because it handles lots of the 3D functions instead of asking the processor to deal with them. For a much more detailed discussion in the technical side of this topic, you can try Microsoft Game Developer Presentations here:. It has been serving millions of customers worldwide. Simply put, gaming PCs aren’t designed for analyzing high frequency data. Gaming personal computers are created to process the enormous levels of information available while playing massive role-playing games or first-person shooters, especially while online. All that you must do is always to follow the prompts that you get on your hard drive monitor. A vast mobile consumer base and increasing penetration of mobile gamers has transformed each buzzword into a fully fledged industry. It’s always about the go, yet never appears to be trying too hard. A large variety of multi-player games is strewn everywhere; websites dedicated with the objective have been with us for what seems like decades. Cheap PC games or video games, and even desktop online flash games are all the fashion int eh UK curently , Ayone with entry to computers or laptoos plus a net connection can begin to play them. Having multiple monitors is very appropriate for day trading professionals. For AMD processors better pick some AM3 board with DDR3 memory support, good chipsets are 785G, 790GX, 890GX, 790X. At $70 this indicates somewhat expensive yet it’s robust and it’ll work with your PS2 or PS3 at the same time your PC. It provides extensive inventory management features, reporting and PC auditing so that it is an ideal solution for today’s demanding corporate networks. Investing in the right PC should yield tremendous recent results for a lengthy time. Generally, Alienware Desktops are thought to be bit expensive if in comparison with their counterparts. Internet chat has opened a new area that savvy headset manufacturers are tapping into. It includes a D-pad and four action buttons and you can clamp it to your desk or sit it in your lap. Fact 2 is a lot more intriguing because these vests have pockets (make a hiking vest circa 1982 and not as visible). Once the configuration in the software programs are over, after that you can attempt enjoying your favorite games or movies. That will be the great thing about MP3: Not only can you transfer these small files however, you can store them easily on inexpensive portable playback devices. Without meeting these specifications, games will lag, graphics will suffer, and the overall gaming experience will likely be disappointing.

  16. 2 stycznia 2015 o 8:09

    Advancement in technology has resulted in the emergence
    of many latest products in the market. Here’s some information on how to tell if the gold on your bracelet is really gold.
    Many stores have time-specific sales so plan accordingly.

  17. 1 listopada 2017 o 5:52

    I was suggested this website through my cousin. I am not sure whether this post is written by means of him as nobody else know such
    targeted approximately my difficulty. You’re incredible!
    Thank you!

  1. 6 września 2015 o 0:45
  2. 28 listopada 2017 o 22:51

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Wyloguj / Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Wyloguj / Zmień )

Zdjęcie na Facebooku

Komentujesz korzystając z konta Facebook. Wyloguj / Zmień )

Zdjęcie na Google+

Komentujesz korzystając z konta Google+. Wyloguj / Zmień )

Connecting to %s

%d blogerów lubi to: