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

Ejemplo de Spring MVC Tiles

Spring proporciona soporte de integración con el framework de tiles de Apache. Por lo tanto, podemos utilizar el soporte de Spring Tile para gestionar simplemente el diseño de aplicaciones Spring MVC.

Ventajas de Spring MVC para Tiles

Reutilización: : Podemos usar un solo componente en varias páginas, como componentes de encabezado y pie de página.

Control centralizado: Podemos controlar el diseño de la página a través de una única página de plantilla

Facilidad de cambio de diseño: : Con una única página de plantilla, podemos cambiar el diseño de la página en cualquier momento. Por lo tanto, su sitio web puede adoptar fácilmente nuevas tecnologías, como navegadores, jQuery, etc.

Ejemplo de Spring MVC Tiles

1、agregar dependencias al archivo 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) {
        //escribir el código aquí para agregar contacto
        return "redirect:contact.html";
    }
    
    @RequestMapping("/contact")
    public String showContacts(Model m) {
        m.addAttribute("command", new Contact());
        return "contact";
    }
}

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

web.xml

<?xml versión="1.0" codificación="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-lista>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-lista>
  <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" clase="org.springframework.web.servlet.view.tiles3.TilesConfigurer">
<propiedad nombre="definiciones">
<lista>
<valor>/WEB-INF/tiles.xml</valor>
</lista>
</propiedad>
</bean>
</beans>

6、proporcionar archivo tile.xml

tiles.xml

<?xml versión="1.0" codificación="UTF-8" -->
<!DOCTYPE tiles-definiciones PÚBLICO
       "-//Fundación de Software Apache//DTD Configuración Tiles 2.0//EN"
       "http://tiles.apache.org/dtds/tiles-config_2_0.dtd">
<tiles-definitions>
    <definición nombre="base.definición" plantilla="/WEB-INF/jsp/layout.jsp">
        <poner-atributo nombre="título" valor="" />
        <poner-atributo nombre="encabezado" valor="/WEB-INF/jsp/header.jsp" />
        <poner-atributo nombre="menú" valor="/WEB-INF/jsp/menu.jsp" />
        <poner-atributo nombre="cuerpo" valor="" />
        <poner-atributo nombre="pie" valor="/WEB-INF/jsp/footer.jsp" />
    </definición>
    <definición nombre="contact" extiende="base.definición">
        <poner-atributo nombre="título" valor="Gestor de Contactos" />
        <poner-atributo nombre="cuerpo" valor="/WEB-INF/jsp/contact.jsp" />
    </definición>
    <definición nombre="hello" extiende="base.definición">
        <poner-atributo nombre="título" valor="Hello Spring MVC" />
        <poner-atributo nombre="cuerpo" valor="/WEB-INF/jsp/hello.jsp" />
    </definición>
</tiles-definitions>

7、创建请求的页面

index.jsp

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

8、创建其他视图组件

hello.jsp

<html>  
<head>  
    <title>Ejemplo de Spring MVC</title>  
</head>  
<body>  
<h1>Bienvenido a Spring MVC</h1>  
    <p>Mensaje es: ${message}/p>  
</body>  
</html>

contact.jsp

<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%>  
<html>  
<head>  
    <title>Formulario de Contacto de Spring Tiles</title>  
</head>  
<body>  
<h2>Gestor de Contactos</h2>  
<form:form method="post" action="addContact.html">  
  
    <table>  
    <tr>  
        <td><form:label path="firstname">Nombre</form:label></td>  
        <td><form:input path="firstname" /></td>   
    </tr>  
    <tr>  
        <td><form:label path="lastname">Apellido</form:label></td>  
        <td><form:input path="lastname" /></td>  
    </tr>  
    <tr>  
        <td><form:label path="lastname">Correo Electrónico</form:label></td>  
        <td><form:input path="email" /></td>  
    </tr>  
    <tr>  
        <td><form:label path="lastname">Teléfono</form:label></td>  
        <td><form:input path="telephone" /></td>  
    </tr>  
    <tr>  
        <td colspan="2">  
            <input type="submit" value="Agregar Contacto"/>  
        </td>  
    </tr>  
</table>    
      
</form:form>  
</body>  
</html>

header.jsp

<h2>Encabezado</h2>  
<hr/>

footer.jsp

<hr/>  
<p>Derechos de autor  2010-2014 oldtoolbag.com.</p>

menu.jsp

<p>Menú 1</p>  
<p>Menú 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>  
        <div style="float:left;padding:10px;width:15%; /></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>