热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

SpringMVC集成StrutsTiles使用方法

首先,我们定义一个总体的tiles视图 /tiles/mainTemplate.jsp 首先使用:打印tiles配置文件中定义的字符串属性title

首先,我们定义一个总体的tiles视图 /tiles/mainTemplate.jsp




首先使用:打印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


>





  








 





<


bean 


id


="viewResolver"


 class


="org.springframework.web.servlet.view.InternalResourceViewResolver"


>





  


<


property 


name


="viewClass"


>





    


<


value


>


org.springframework.web.servlet.view.tiles.TilesView




value


>





  




property


>









bean


>





















<


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


"


 



%>







Spring MVC集成Struts Tiles使用方法




推荐阅读
  • C#编程指南:实现列表与WPF数据网格的高效绑定方法 ... [详细]
  • HTTP协议作为互联网通信的基础,其重要性不言而喻。相比JDK自带的URLConnection,HttpClient不仅提升了易用性和灵活性,还在性能、稳定性和安全性方面进行了显著优化。本文将深入解析HttpClient的使用方法与技巧,帮助开发者更好地掌握这一强大的工具。 ... [详细]
  • 本文深入探讨了NDK与JNI技术在实际项目中的应用及其学习路径。通过分析工程目录结构和关键代码示例,详细介绍了如何在Android开发中高效利用NDK和JNI,实现高性能计算和跨平台功能。同时,文章还提供了从基础概念到高级实践的系统学习指南,帮助开发者快速掌握这些关键技术。 ... [详细]
  • 通过优化模板消息机制,本研究提出了一种高效的信息化推送方案。该方案利用获取的访问令牌(access token)和指定的模板ID,实现了精准且快速的信息推送,显著提升了用户体验和信息传递效率。具体实现中,通过调用相关API接口,确保了消息的准确性和及时性,为用户提供更加便捷的服务。 ... [详细]
  • Understanding the Distinction Between decodeURIComponent and Its Encoding Counterpart
    本文探讨了 JavaScript 中 `decodeURIComponent` 和其编码对应函数之间的区别。通过详细分析这两个函数的功能和应用场景,帮助开发者更好地理解和使用它们,避免常见的编码和解码错误。 ... [详细]
  • 本文深入探讨了 iOS 开发中 `int`、`NSInteger`、`NSUInteger` 和 `NSNumber` 的应用与区别。首先,我们将详细介绍 `NSNumber` 类型,该类用于封装基本数据类型,如整数、浮点数等,使其能够在 Objective-C 的集合类中使用。通过分析这些类型的特性和应用场景,帮助开发者更好地理解和选择合适的数据类型,提高代码的健壮性和可维护性。苹果官方文档提供了更多详细信息,可供进一步参考。 ... [详细]
  • 计算 n 叉树中各节点子树的叶节点数量分析 ... [详细]
  • 使用 MyEclipse 和 TestNG 测试框架在 Java 中高效进行单元测试
    通过MyEclipse集成TestNG测试框架,可以在Java开发中高效地进行单元测试。本文介绍了在JDK 1.8.0_121和MyEclipse 10.0离线环境下配置和使用TestNG的具体步骤,帮助开发者提高测试效率和代码质量。 ... [详细]
  • Java 中优先级队列的轮询方法详解与应用 ... [详细]
  • 本文作为“实现简易版Spring系列”的第五篇,继前文深入探讨了Spring框架的核心技术之一——控制反转(IoC)之后,将重点转向另一个关键技术——面向切面编程(AOP)。对于使用Spring框架进行开发的开发者来说,AOP是一个不可或缺的概念。了解AOP的背景及其基本原理,对于掌握这一技术至关重要。本文将通过具体示例,详细解析AOP的实现机制,帮助读者更好地理解和应用这一技术。 ... [详细]
  • 本文将详细介绍在Android应用中添加自定义返回按钮的方法,帮助开发者更好地理解和实现这一功能。通过具体的代码示例和步骤说明,本文旨在为初学者提供清晰的指导,确保他们在开发过程中能够顺利集成返回按钮,提升用户体验。 ... [详细]
  • 本题库精选了Java核心知识点的练习题,旨在帮助学习者巩固和检验对Java理论基础的掌握。其中,选择题部分涵盖了访问控制权限等关键概念,例如,Java语言中仅允许子类或同一包内的类访问的访问权限为protected。此外,题库还包括其他重要知识点,如异常处理、多线程、集合框架等,全面覆盖Java编程的核心内容。 ... [详细]
  • 本文介绍了一种基于最大匹配算法的简易分词程序的设计与实现。该程序通过引入哈希集合存储词典,利用前向最大匹配方法对输入文本进行高效分词处理,具有较高的准确率和较快的处理速度,适用于中文文本的快速分词需求。 ... [详细]
  • HBase在金融大数据迁移中的应用与挑战
    随着最后一台设备的下线,标志着超过10PB的HBase数据迁移项目顺利完成。目前,新的集群已在新机房稳定运行超过两个月,监控数据显示,新集群的查询响应时间显著降低,系统稳定性大幅提升。此外,数据消费的波动也变得更加平滑,整体性能得到了显著优化。 ... [详细]
  • 深入解析Tomcat:开发者的实用指南
    深入解析Tomcat:开发者的实用指南 ... [详细]
author-avatar
zackcoolgirl_497
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有