本文概述
- Spring MVC中Tiles支持的优势
- Spring MVC Tiles示例
Spring MVC中Tiles支持的优势 可重用性:我们可以在多个页面中重用单个组件, 例如页眉和页脚组件。
集中控制:我们只能通过单个模板页面来控制页面的布局。
易于更改布局:借助单个模板页面, 我们可以随时更改页面的布局。因此, 你的网站可以轻松采用新技术, 例如引导程序, jQuery等。
目录结构
让我们在Eclipse中查看Spring Tile示例的文件。
文章图片
Spring MVC Tiles示例 1.将依赖项添加到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.srcmini.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.srcmini.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 @ srcmini";
m.addAttribute("message", message);
return "hello";
}
}
ContactController.java
package com.srcmini.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.srcmini.form.Contact;
@Controller
@SessionAttributes
public class ContactController {
@RequestMapping(value = "http://www.srcmini.com/addContact", method = RequestMethod.POST)
public String addContact(@ModelAttribute("contact") Contact contact, BindingResult result) {
//write the code here to add contact
return "redirect:contact.html";
}
@RequestMapping("/contact")
public String showContacts(Model m) {
m.addAttribute("command", new Contact());
return "contact";
}
}
4.在web.xml文件中提供控制器的条目
【Spring MVC Tiles用法示例详解】web.xml
<
?xml version="1.0" encoding="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-list>
<
welcome-file>
index.jsp<
/welcome-file>
<
/welcome-file-list>
<
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.srcmini.controller" />
<
bean id="viewResolver" class="org.springframework.web.servlet.view.tiles3.TilesViewResolver"/>
<
bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles3.TilesConfigurer">
<
property name="definitions">
<
list>
<
value>
/WEB-INF/tiles.xml<
/value>
<
/list>
<
/property>
<
/bean>
<
/beans>
6.提供tile.xml文件
Tiles.xml
<
?xml version="1.0" encoding="UTF-8" ?>
<
!DOCTYPE tiles-definitions PUBLIC
"-//Apache Software Foundation//DTD Tiles Configuration 2.0//EN"
"http://tiles.apache.org/dtds/tiles-config_2_0.dtd">
<
tiles-definitions>
<
definition name="base.definition"
template="/WEB-INF/jsp/layout.jsp">
<
put-attribute name="title" value="" />
<
put-attribute name="header" value="http://www.srcmini.com/WEB-INF/jsp/header.jsp" />
<
put-attribute name="menu" value="http://www.srcmini.com/WEB-INF/jsp/menu.jsp" />
<
put-attribute name="body" value="" />
<
put-attribute name="footer" value="http://www.srcmini.com/WEB-INF/jsp/footer.jsp" />
<
/definition>
<
definition name="contact" extends="base.definition">
<
put-attribute name="title" value="http://www.srcmini.com/Contact Manager" />
<
put-attribute name="body" value="http://www.srcmini.com/WEB-INF/jsp/contact.jsp" />
<
/definition>
<
definition name="hello" extends="base.definition">
<
put-attribute name="title" value="http://www.srcmini.com/Hello Spring MVC" />
<
put-attribute name="body" value="http://www.srcmini.com/WEB-INF/jsp/hello.jsp" />
<
/definition>
<
/tiles-definitions>
7.创建请求的页面
index.jsp
<
a href="http://www.srcmini.com/hello.html">
Hello Spring<
/a>
|
<
a href="http://www.srcmini.com/contact.html">
Contact<
/a>
8.创建其他视图组件
hello.jsp
<
html>
<
head>
<
title>
Spring MVC Example<
/title>
<
/head>
<
body>
<
h1>
Welcome to Spring MVC<
/h1>
<
p>
Message is: ${message}<
/p>
<
/body>
<
/html>
contact.jsp
<
%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<
html>
<
head>
<
title>
Spring Tiles Contact Form<
/title>
<
/head>
<
body>
<
h2>
Contact Manager<
/h2>
<
form:form method="post" action="addContact.html">
<
table>
<
tr>
<
td>
<
form:label path="firstname">
First Name<
/form:label>
<
/td>
<
td>
<
form:input path="firstname" />
<
/td>
<
/tr>
<
tr>
<
td>
<
form:label path="lastname">
Last Name<
/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">
Telephone<
/form:label>
<
/td>
<
td>
<
form:input path="telephone" />
<
/td>
<
/tr>
<
tr>
<
td colspan="2">
<
input type="submit" value="http://www.srcmini.com/Add Contact"/>
<
/td>
<
/tr>
<
/table>
<
/form:form>
<
/body>
<
/html>
header.jsp
<
h2>
Header<
/h2>
<
hr/>
footer.jsp
<
hr/>
<
p>
Copyright2010-2014 srcmini.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>
输出
文章图片
文章图片
文章图片
下载此示例(使用Eclipse开发)
下载Tiles jar文件
如果你不使用maven, 请下载tile jar。
推荐阅读
- Spring使用Burlap进行远程处理示例
- Spring MVC表单复选框用法示例
- Spring MVC分页示例图解
- Spring MVC数字验证项目示例图解
- Spring MVC表单下拉列表用法示例
- Spring MVC自定义验证项目示例图解
- Android 模拟器下载编译及调试
- [Android开发]emulator无法启动的问题
- (转)android系统开发 AP 和 BP 简要说明