Spring MVC集成Struts Tiles使用方法
首先,我们定义一个总体的tiles视图 /tiles/mainTemplate.jsp
首先使用:<tiles:getAsString name="title"/>打印tiles配置文件中定义的字符串属性title
然后是分别加载header,content,footer三个jsp页面,共同组成mainTemplate.jsp
<%
...
@ taglib uri
=
"
http://jakarta.apache.org/struts/tags-tiles
"
prefix
=
"
tiles
"
%>
<
html
>
<
head
>
<
title
><
tiles:getAsString
name
="title"
/></
title
>
</
head
>
<
body
>
the title is:
<
tiles:getAsString
name
="title"
/><
br
>
<
tiles:insert
name
="header"
/><
br
>
<
tiles:insert
name
="content"
/><
br
>
<
tiles:insert
name
="footer"
/><
br
>
</
body
>
</
html
>
header.content.footer页面如下:
<
html
>
<
head
>
</
head
>
<
body
>
this is from header
</
body
>
</
html
>
<
html
>
<
head
>
</
head
>
<
body
>
this is from content
</
body
>
</
html
>
<
html
>
<
head
>
</
head
>
<
body
>
this is from footer
</
body
>
</
html
>
Spring
MVC 控制类:
package
Action;
import
java.util.ArrayList;
import
java.util.List;
import
javax.servlet.http.HttpServletRequest;
import
javax.servlet.http.HttpServletResponse;
import
model.Student;
import
org.springframework.validation.BindException;
import
org.springframework.web.servlet.ModelAndView;
import
org.springframework.web.servlet.mvc.AbstractCommandController;
public
class
TilesHomeController
extends
AbstractCommandController
...
{
protected
ModelAndView handle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, BindException arg3)
throws
Exception
...
{
return
null
;
}
protected
ModelAndView handleRequestInternal(HttpServletRequest arg0, HttpServletResponse arg1)
throws
Exception
...
{
return
new
ModelAndView(
"
courseDetail
"
,
""
,
""
);
}
}
当我们运行上面这个控制器时候,系统会自动去寻找courseDetail.jsp这个文件,但我们还没有定义这个文件,所以,我们要这样写tiles-def.xml
<!
DOCTYPE tiles-definitions PUBLIC
"-//Apache Software Foundation//DTD Tiles Configuration//EN"
"http://jakarta.apache.org/struts/dtds/tiles-config_1_1.dtd"
>
<
tiles-definitions
>
<
definition
name
="template"
page
="/tiles/mainTemplate.jsp"
>
<
put
name
="title"
value
="default title"
/>
<
put
name
="header"
value
="="
/tiles/header.jsp"
/>
<
put
name
="content"
value
="/tiles/content.jsp"
/>
<
put
name
="footer"
value
="/tiles/footer.jsp"
/>
</
definition
>
<!--
-以courseDetail命名的配置,覆盖了模板中的title和content对应的页面->
<definition name="courseDetail" extends="template">
<put name="title" value="courseDetail title"/>
<put name="content" value="/tiles/courseContent.jsp"/>
</definition>
</tiles-definitions>
/title/courseContent.jsp
<%
...
@ taglib uri
=
"
http://jakarta.apache.org/struts/tags-tiles
"
prefix
=
"
tiles
"
%>
<
html
>
<
head
>
</
head
>
<
body
>
this is courseContent
</
body
>
</
html
>
spring
配置文件:
<?
xml version="1.0" encoding="UTF-8"
?>
<!
DOCTYPE beans PUBLIC "-//SPRING
//DTD BEAN//EN" "http://www.springframework.org/dtd/spring
-beans.dtd"
>
<
beans
>
<
bean
id
="simpleUrlMapping"
class
="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"
>
<
property
name
="mappings"
>
<
props
>
<
prop
key
="/tiles.mvc"
>
TilesController
</
prop
>
</
props
>
</
property
>
</
bean
>
<
bean
id
="TilesController"
class
="Action.TilesHomeController"
>
</
bean
>
<!--
tiles页面解析器
-->
<
bean
id
="viewResolver"
class
="org.springframework.web.servlet.view.InternalResourceViewResolver"
>
<
property
name
="viewClass"
>
<
value
>
org.springframework.web.servlet.view.tiles.TilesView
</
value
>
</
property
>
</
bean
>
<!--
tiles配置器
-->
<
bean
id
="tilesConfigurer"
class
="org.springframework.web.servlet.view.tiles.TilesConfigurer"
>
<
property
name
="definitions"
>
<
list
>
<
value
>
/WEB-INF/train-def.xml
</
value
>
</
list
>
</
property
>
</
bean
>
</
beans
>
运行/title.mvc (mvc是我自定义的扩展名)我们可以看到如下结果:
courseDetail title
this is from header
this is courseDetail
this is from footer
如
果我们需要在每一个页面的header部分显示一些我们从数据库里读取的数值,我们可以在不同的控制器中加入访问数据库的代码,但这样显得很啰唆,因为
header部门在每个页面都是公用的,也就是说不同的页面只有content部分不同,这样,我们就会有很多冗余代码,未解决这个问题,我们可以使用spring
为我们提供的ComponentControllerSupport
package
Action;
import
javax.servlet.http.HttpServletRequest;
import
javax.servlet.http.HttpServletResponse;
import
model.Student;
import
org.apache.struts.tiles.ComponentContext;
import
org.springframework.web.servlet.view.tiles.ComponentControllerSupport;
public
class
HeaderTilesController
extends
ComponentControllerSupport
...
{
protected
void
doPerform(ComponentContext context, HttpServletRequest request,
HttpServletResponse response)
throws
Exception
...
{
Student stu
=
new
Student();
stu.setName(
"
gaoxiang
"
);
stu.setSex(
"
male
"
);
//
tiles context中存放简单数据
context.putAttribute(
"
name
"
, stu.getName());
context.putAttribute(
"
sex
"
, stu.getSex());
//
tiles context中存放对象
context.putAttribute(
"
student
"
, stu);
//
request中存放数据
request.setAttribute(
"
requestname
"
, stu.getName()
+
"
-request
"
);
request.setAttribute(
"
requestsex
"
, stu.getSex()
+
"
-request
"
);
}
}
改写train-def.xml
<!
DOCTYPE tiles-definitions PUBLIC
"-//Apache Software Foundation//DTD Tiles Configuration//EN"
"http://jakarta.apache.org/struts/dtds/tiles-config_1_1.dtd"
>
<
tiles-definitions
>
<
definition
name
="template"
page
="/tiles/mainTemplate.jsp"
>
<
put
name
="title"
value
="default title"
/>
<
put
name
="header"
value
=".header"
/>
<
put
name
="content"
value
="/tiles/content.jsp"
/>
<
put
name
="footer"
value
="/tiles/footer.jsp"
/>
</
definition
>
<
definition
name
="courseDetail"
extends
="template"
>
<
put
name
="title"
value
="courseDetail title"
/>
<
put
name
="content"
value
="/tiles/courseContent.jsp"
/>
</
definition
>
<
definition
name
=".header"
page
="/tiles/header.jsp"
controllerClass
="Action.HeaderTilesController"
>
</
definition
>
</
tiles-definitions
>
改header.jsp
<%
...
@ taglib uri
=
"
http://jakarta.apache.org/struts/tags-tiles
"
prefix
=
"
tiles
"
%>
分享到:
相关推荐
Spring3 MVC 集成 Tiles2 是一个常见的Web开发任务,用于构建结构化的、模块化的网页布局。Tiles2 是一个视图层框架,它允许开发者将网页分解为多个组件(或称为“tiles”),每个组件负责一部分内容或样式,然后...
`spring-webmvc-struts.jar`是Spring框架为了与Struts框架集成而设计的一个模块,它提供了对Struts应用的Spring支持,使得开发者可以在Struts应用中利用Spring的特性,如依赖注入(DI)、面向切面编程(AOP)等。...
标题中的“Spring MVC, Tiles, Freemarker集成”指的是在Java Web开发中,将Spring MVC作为控制器框架,Tiles作为页面布局工具,而Freemarker作为视图模板引擎进行整合使用的技术方案。这种集成可以帮助开发者构建...
**Spring MVC 3 与 Tiles 框架整合** 在Web开发中,Spring MVC和Tiles是两个非常重要的组件。Spring MVC作为一个强大的MVC框架,负责处理应用的业务逻辑和视图展示,而Tiles则是一个视图层框架,主要用于页面布局和...
7. **编写Controller**:在Spring MVC的控制器类中,定义处理请求的方法,并返回Tiles的定义名,例如: ```java @RequestMapping("/index") public String index() { return "baseLayout"; } ``` 8. **运行...
Struts和Spring是Java Web开发中两种非常流行的MVC(Model-View-Controller)框架,它们都致力于解耦业务逻辑和展示层,提高代码的可维护性和可测试性。然而,两者在设计理念、功能特性以及实现方式上存在显著差异。...
Spring MVC 提供了一种可插拔的架构,允许开发者选择使用内置的 Spring Web 框架,或者与其他 Web 框架如 Struts 结合使用。通过策略接口,Spring MVC 具有高度可配置性,支持多种视图技术,如 JSP、Velocity、Tiles...
Spring能够轻松地与其他流行Web框架如Struts、WebWork、JavaServer Faces和Tapestry集成,这意味着你可以指示Spring使用其中的任何一种Web框架。更重要的是,Spring并不紧密依赖Servlets或JSP来向客户端呈现视图。它...
使用 Spring 可插入的 MVC 架构,可以选择是使用内置的 Spring Web 框架还可以是 Struts 这样的 Web 框架。通过策略接口,Spring 框架是高度可配置的,而且包含多种视图技术,例如 JavaServer Pages(JSP)技术、...
标题中的“使用sitemesh替换tiles2,spring mvc+spring web flow+sitemsh”指出了一种在Spring MVC和Spring Web Flow项目中用Sitemesh替代Tiles2作为页面布局工具的技术实践。Sitemesh和Tiles2都是用于创建可重用的...
使用 Spring 可插入的 MVC 架构,可以选择是使用内置的 Spring Web 框架还可以是 Struts 这样的 Web 框架。通过策略接口,Spring 框架是高度可配置的,而且包含多种视图技术,例如 JavaServer Pages(JSP)技术、...
Spring集成Struts与Hibernate入门详解 Spring框架是Java平台上一个开源的轻量级框架,它提供了许多功能强大且灵活的模块,以帮助开发者快速构建企业级应用程序。Struts是Apache软件基金会的一个开源项目,提供了一...
4. **Tiles支持与Eclipse插件教程**:介绍使用Tiles布局系统和Eclipse插件进行开发的方法。 5. **国际化与本地化**:教授如何在Spring MVC中实现应用的多语言支持。 6. **Spring主题**:探讨Spring MVC中如何定制和...
6. **扩展性**:Tiles是基于Servlet API的,因此它可以与其他Web框架(如Spring MVC)配合使用,也可以与各种模板引擎(如FreeMarker或JSP)结合。 在这个“struts2 tiles 模板搭建源码可运行”的项目中,我们可以...
3. **与其他框架的集成**:Spring MVC可以轻松地与其他流行的Web框架(如Struts、WebWork、Java Server Faces和Tapestry)集成。 4. **视图技术的多样性**:除了传统的JSP,Spring MVC还支持Freemarker、Excel、PDF...
Struts Tiles是一个强大的MVC框架Struts中的一个扩展,它提供了布局和组合页面的强大功能。Tiles框架使得开发者能够创建可重用的页面片段,并通过一个中心配置文件将这些片段组合成完整的网页。在这个"struts tiles ...
Spring MVC并不关心视图层的具体实现,它可以与多种视图技术如JSP、Velocity、Tiles等集成,这给予了开发者极大的灵活性。 Spring MVC的优点包括: 1. 高度可配置:Spring MVC的可插拔架构允许开发者选择内置的...
在运行性能方面,JSP+Servlet组合的性能通常最高,其次是Struts 1,接着是Spring MVC,而Struts 2的性能相对较低,特别是当使用OGNL和值栈时。然而,在开发效率上,这些框架的表现却与性能表现相反,Spring MVC和...
Spring提供了全面的结构化和依赖注入功能,Struts2则是一个强大的MVC(Model-View-Controller)框架,而MyBatis则是一个优秀的持久层框架,实现了SQL与Java代码的解耦。当这三者结合使用时,可以构建出高效、可维护...