Java:Struts, Tiles et pages JSP

De WIKI.minetti.org
Aller à : navigation, rechercher

But

  • Struts permet de mettre en œuvre l'architecture Modèle-Vue-Contrôleur (MVC) dans des applications web.
  • Les JavaServer Pages ou JSP est une technologie basée sur Java qui permet aux développeurs de générer dynamiquement du code HTML, XML ou tout autre type de page web.
  • Tiles est un moteur de template pour pages JSP.

API et dépendances

Avant de commencer, il faut récupérer la dernière version stable du framework Apache Struts ici (prendre une "Full Distribution"). Pour notre exemple, on aura besoin des JAR suivant:

Intégration de Struts dans un projet

Dans un projet web dynamique, ajouter les lignes suivantes dans le fichier WEB-INF/web.xml:

<filter>
    <filter-name>struts2</filter-name>
    <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>

<filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

Ensuite, il faut définir la configuration de Struts à travers le fichier struts.xml à placer dans un répertoire mentionné dans le CLASSPATH (ressources):

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
        "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>

    <constant name="struts.enable.DynamicMethodInvocation" value="false" />
    <constant name="struts.devMode" value="false" />

    <include file="example.xml"/>

</struts>

Ce fichier contient un autre fichier, example.xml:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
        "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>

    <package name="essai-default" extends="struts-default">

        <!-- Ajouter les paramètres communs à tous les paquetages ici -->

    </package>

    <package name="root" namespace="/" extends="essai-default">

        <!-- Ajouter les paramètres propre au paquetage ici -->

        <!-- Ajouter les actions ici -->
 
   </package>

</struts>

Intégration de Tiles

Ajouter les lignes suivantes dans le fichier WEB-INF/web.xml:

<listener>
    <listener-class>org.apache.struts2.tiles.StrutsTilesListener</listener-class>
</listener>

<context-param>
    <param-name>tilesDefinitions</param-name>
    <param-value>/WEB-INF/tiles.xml</param-value>
</context-param>

Dans le fichier de configuration de Struts et pour chaque paquetage utilisant Tiles, ajouter les lignes suivantes:

<result-types>
    <result-type name="tiles" class="org.apache.struts2.views.tiles.TilesResult"/> 
</result-types>

Créer le fichier WEB-INF/tiles.xml:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE tiles-definitions PUBLIC 
        "-//Apache Software Foundation//DTD Tiles Configuration 2.0//EN" 
        "http://struts.apache.org/dtds/tiles-config_2_0.dtd">
<tiles-definitions>

    <!-- Ajouter toutes les définitions Tiles ici -->

</tiles-definitions>

Création du template des pages

On créé la page JSP WEB-INF/pages/layout.jsp qui va nous servir de template:

<%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles" %>
<html>
  <head>
    <title>Essai</title>
  </head>
  <body>
    <tiles:insertAttribute name="body" />
  </body>
</html>

Puis on ajoute la définition Tiles suivante dans le fichier WEB-INF/tiles.xml:

<definition name="default" template="/WEB-INF/pages/layout.jsp">
</definition>

Création d'une action

On créé la nouvelle classe action, héritant de com.opensymphony.xwork2.ActionSupport:

package org.minetti.example.struts.ui.action;

import com.opensymphony.xwork2.ActionSupport;

public class ExampleAction extends ActionSupport {

  private static final long serialVersionUID = 6589265961532614115L;

  @Override
  public String execute() throws Exception {

    // Traitement de l'action

    return ActionSupport.SUCCESS;
  }

}

Puis, insère les lignes suivantes dans le paquetage root du fichier de configuration de Struts:

<action name="Example" class="org.minetti.example.struts.ui.action.ExampleAction">
    <result type="tiles">example</result>
</action>

Création d'une page

Liens externes