English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Exemple Spring MVC Tiles

Spring fournit une intégration avec le cadre apache tile. Par conséquent, nous pouvons gérer simplement la mise en page des applications Spring MVC à l'aide de la prise en charge de Spring Tile.

Avantages de la prise en charge de Tiles par Spring MVC

Réutilisabilité: : Nous pouvons réutiliser un seul composant sur plusieurs pages, par exemple les composants d'en-tête et de pied de page.

Contrôle centralisé des contrôles: Nous pouvons contrôler la mise en page de la page à l'aide d'une seule page de modèle

Facilité de modification de la mise en page: : Grâce à une seule page de modèle, nous pouvons à tout moment modifier la mise en page de la page. Par conséquent, votre site web peut facilement adopter de nouvelles technologies, telles que les assistants, jQuery, etc.

Exemple Spring MVC Tiles

1、ajouter les dépendances au fichier pom.xml。

pom.xml

 <!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>5.1.1.RELEASE</version>
</dependency>
  <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
<dependency>  
    <groupId>javax.servlet</groupId>  
    <artifactId>servlet-api</artifactId>  
    <version>3.0-alpha-1</version>  
</dependency>
    <!-- https://mvnrepository.com/artifact/javax.servlet/jstl -->
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.tomcat/tomcat-jasper -->
<dependency>
    <groupId>org.apache.tomcat</groupId>
    <artifactId>tomcat-jasper</artifactId>
    <version>9.0.12</version>
</dependency>
 <!-- https://mvnrepository.com/artifact/org.apache.tiles/tiles-jsp -->
<dependency>
    <groupId>org.apache.tiles</groupId>
    <artifactId>tiles-jsp</artifactId>
    <version>3.0.5</version>
</dependency>
    
    <!-- https://mvnrepository.com/artifact/org.apache.tiles/tiles-servlet -->
<dependency>
    <groupId>org.apache.tiles</groupId>
    <artifactId>tiles-servlet</artifactId>
    <version>3.0.5</version>
</dependency>
    <!-- https://mvnrepository.com/artifact/org.apache.tiles/tiles-core -->
<dependency>
    <groupId>org.apache.tiles</groupId>
    <artifactId>tiles-core</artifactId>
    <version>3.0.5</version>
</dependency>
   <!-- https://mvnrepository.com/artifact/org.apache.tiles/tiles-el -->
<dependency>
    <groupId>org.apache.tiles</groupId>
    <artifactId>tiles-el</artifactId>
    <version>3.0.5</version>
</dependency>

2、创建bean类

Contact.java

package com.w3codebox.form;
public class Contact {
    private String firstname;
    private String lastname;
    private String email;
    private String telephone;
    
    public String getEmail() {
        return email;
    }
    public String getTelephone() {
        return telephone;
    }
    public void setEmail(String email) {
        this.email = email;
    }
    public void setTelephone(String telephone) {
        this.telephone = telephone;
    }
    public String getFirstname() {
        return firstname;
    }
    public String getLastname() {
        return lastname;
    }
    public void setFirstname(String firstname) {
        this.firstname = firstname;
    }
    public void setLastname(String lastname) {
        this.lastname = lastname;
    }
    
}

3、创建控制器类

HelloWorldController.java

package com.w3codebox.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class HelloWorldController {
    @RequestMapping("/hello")
    public String helloWorld(Model m) {
        String message = "Hello World, Spring MVC @ w"3codebox";
        m.addAttribute("message", message);
        return "hello"; 
    }
}

ContactController.java

package com.w3codebox.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.SessionAttributes;
import com.w3codebox.form.Contact;
@Controller
@SessionAttributes
public class ContactController {
    @RequestMapping(value = "/addContact", method = RequestMethod.POST)
    public String addContact(@ModelAttribute("contact") Contact contact, BindingResult result) {
        //Écrivez le code ici pour ajouter un contact
        return "redirect:contact.html";
    }
    
    @RequestMapping("/contact")
    public String showContacts(Model m) {
        m.addAttribute("command", new Contact());
        return "contact";
    }
}

4、在web.xml文件中提供控制器的条目

web.xml

<?xml version="1.0" encodage="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-_app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>SpringTiles</display-name>
  <welcome-file-liste>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-liste>
  <servlet>
    <servlet-name>spring</servlet-name>
    <servlet-class>
            org.springframework.web.servlet.DispatcherServlet
        </servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>spring</servlet-name>
    <url-pattern>*.html</url-pattern>
  </servlet-mapping>
</web-app>

5、在xml文件中定义Bean

spring-servlet.xml

<beans xmlns="http://www.springframework.org/schema/beans
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance
    xmlns:p="http://www.springframework.org/schema/p
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<context:annotation-config />
<context:component-scan base-package="com.w3codebox.controller" />
<bean id="viewResolver" class="org.springframework.web.servlet.view.tiles3.TilesViewResolver"}}/>
<bean id="tilesConfigurer" classe="org.springframework.web.servlet.view.tiles3.TilesConfigurer">
<propriété nom="définitions">
<liste>
<valeur>/WEB-INF/tiles.xml</valeur>
</liste>
</propriété>
</bean>
</beans>

6fournir le fichier tile.xml

tiles.xml

<?xml version="1.0" encodage="UTF-8" ?">
<!DOCTYPE tiles-définitions PUBLIC
       "-//Fondation Apache//DTD Configuration Tiles 2.0//EN"
       "http://tiles.apache.org/dtds/tiles-config_2_0.dtd">
<tiles-definitions>
    <définition nom="base.définition" modèle="/WEB-INF/jsp/layout.jsp">
        <put-attribut nom="title" valeur="" />
        <put-attribut nom="header" valeur="/WEB-INF/jsp/header.jsp" />
        <put-attribut nom="menu" valeur="/WEB-INF/jsp/menu.jsp" />
        <put-attribut nom="body" valeur="" />
        <put-attribut nom="footer" valeur="/WEB-INF/jsp/footer.jsp" />
    </définition>
    <définition nom="contact" étend="base.définition">
        <put-attribut nom="title" valeur="Gestionnaire de contact" />
        <put-attribut nom="body" valeur="/WEB-INF/jsp/contact.jsp" />
    </définition>
    <définition nom="hello" étend="base.définition">
        <put-attribut nom="title" valeur="Hello Spring MVC" />
        <put-attribut nom="body" valeur="/WEB-INF/jsp/hello.jsp" />
    </définition>
</tiles-definitions>

7、创建请求的页面

index.jsp

<a href="hello.html">Hello Spring</a> | 
<a href="contact.html">Contact</a>

8、创建其他视图组件

hello.jsp

<html>  
<head>  
    <title>Exemple Spring MVC</title>  
</head>  
<body>  
<h1>Bienvenue dans Spring MVC</h1>  
    <p>Message est: ${message}</p>  
</body>  
</html>

contact.jsp

<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%>  
<html>  
<head>  
    <title>Formulaire de contact Spring Tiles</title>  
</head>  
<body>  
<h2>Gestionnaire de contact</h2>  
<form:form method="post" action="addContact.html">  
  
    <table>  
    <tr>  
        <td><form:label path="firstname">Prénom</form:label></td>  
        <td><form:input path="firstname" /></td>   
    </tr>  
    <tr>  
        <td><form:label path="lastname">Nom</form:label></td>  
        <td><form:input path="lastname" /></td>  
    </tr>  
    <tr>  
        <td><form:label path="lastname">Email</form:label></td>  
        <td><form:input path="email" /></td>  
    </tr>  
    <tr>  
        <td><form:label path="lastname">Téléphone</form:label></td>  
        <td><form:input path="telephone" /></td>  
    </tr>  
    <tr>  
        <td colspan="2">  
            <input type="submit" value="Ajouter un contact"/>  
        </td>  
    </tr>  
</table>    
      
</form:form>  
</body>  
</html>

header.jsp

<h2>Header</h2>  
<hr/>

footer.jsp

<hr/>  
<p>Copyright  2010-2014 oldtoolbag.com.</p>

menu.jsp

<p>Menu 1</p>  
<p>Menu 2</p>

layout.jsp

<%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles"%>  
!DOCTYPE HTML public "-//W3C//DTD HTML 4.01 Transitional//EN"  
"http://www.w3.org/TR/html4/loose.dtd">  
<html>  
<head>  
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
<title><tiles:insertAttribute name="title" ignore="true" /></title>  
</head>  
<body>  
        <div><tiles:insertAttribute name="header" /></div>  
        <div style="float:left;padding:10px;width:15;"><tiles:insertAttribute name="menu" /></div>  
        <div style="float:left;padding:10px;width:80%;border-left:1px solid pink;">  
        <tiles:insertAttribute name="body" /></div>  
        <div style="clear:both"><tiles:insertAttribute name="footer" /></div>  
  
</body>  
</html>