Spring MVC集成Tiles使用方法

转载 2015年11月19日 15:50:51

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

首先使用:<tiles:getAsString name="title"/>打印tiles配置文件中定义的字符串属性title
然后是分别加载header,content,footer三个jsp页面,共同组成mainTemplate.jsp

 

Html代码  收藏代码
  1. <%@taglib uri="http://jakarta.apache.org/struts/tags-tiles" prefix="tiles"%>  
  2. <html>  
  3. <head>  
  4.   
  5. <title><tiles:getAsString name="title"/></title>  
  6. </head>  
  7. <body>  
  8. the title is:<tiles:getAsString name="title"/><br>  
  9. <tiles:insert name="header"/><br>  
  10. <tiles:insert name="content"/><br>  
  11. <tiles:insert name="footer"/><br>   
  12. </body>  
  13. </html>  

 

header.content.footer页面如下:

Html代码  收藏代码
  1. <html>  
  2. <head>  
  3. </head>  
  4. <body>  
  5. this is from header  
  6. </body>  
  7. </html>  
  8.   
  9.   
  10. <html>  
  11. <head>  
  12. </head>  
  13. <body>  
  14. this is from content  
  15. </body>  
  16. </html>  
  17.   
  18.   
  19. <html>  
  20. <head>  
  21. </head>  
  22. <body>  
  23. this is from footer</body>  
  24. </html>  

 

Spring MVC 控制类:

Java代码  收藏代码
  1. package Action;  
  2.   
  3. import java.util.ArrayList;  
  4. import java.util.List;  
  5.   
  6. import javax.servlet.http.HttpServletRequest;  
  7. import javax.servlet.http.HttpServletResponse;  
  8.   
  9. import model.Student;  
  10.   
  11. import org.springframework.validation.BindException;  
  12. import org.springframework.web.servlet.ModelAndView;  
  13. import org.springframework.web.servlet.mvc.AbstractCommandController;  
  14.   
  15. public class TilesHomeController extends AbstractCommandController {  
  16.   
  17.   
  18.     protected ModelAndView handle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, BindException arg3) throws Exception {  
  19.         return null;  
  20.     }  
  21.   
  22.     protected ModelAndView handleRequestInternal(HttpServletRequest arg0, HttpServletResponse arg1) throws Exception {  
  23.   
  24.           
  25.          return new ModelAndView("courseDetail","","");  
  26.     }  
  27.   
  28.   
  29.       
  30. }    

 当我们运行上面这个控制器时候,系统会自动去寻找courseDetail.jsp这个文件,但我们还没有定义这个文件,所以,我们要这样写tiles-def.xml

Xml代码  收藏代码
  1. <!DOCTYPE tiles-definitions PUBLIC  
  2.        "-//Apache Software Foundation//DTD Tiles Configuration//EN"  
  3.        "http://jakarta.apache.org/struts/dtds/tiles-config_1_1.dtd">  
  4.   
  5.   
  6. <tiles-definitions>  
  7.   <definition name="template" page="/tiles/mainTemplate.jsp">  
  8.     <put name="title" value="default title"/>  
  9.     <put name="header" value="="/tiles/header.jsp"/>  
  10.     <put name="content" value="/tiles/content.jsp"/>  
  11.     <put name="footer" value="/tiles/footer.jsp"/>  
  12.   </definition>  
  13.     
  14. <!--以courseDetail命名的配置,覆盖了模板中的title和content对应的页面-->  
  15.   <definition name="courseDetail" extends="template">  
  16.     <put name="title" value="courseDetail title"/>  
  17.     <put name="content" value="/tiles/courseContent.jsp"/>  
  18.   </definition>  
  19.   
  20. </tiles-definitions>  

 

/title/courseContent.jsp

Html代码  收藏代码
  1. <%@taglib uri="http://jakarta.apache.org/struts/tags-tiles" prefix="tiles" %>  
  2. <html>  
  3. <head></head>  
  4. <body>  
  5.      this is courseContent  
  6. </body>  
  7. </html>  

 

spring配置文件:

Xml代码  收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd" >  
  3. <beans>  
  4.   
  5. <bean id="simpleUrlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">  
  6.  <property name="mappings">  
  7.    <props>  
  8.        <prop key="/tiles.mvc">TilesController</prop>  
  9.    </props>  
  10.  </property>  
  11. </bean>  
  12.   
  13.   
  14. <bean id="TilesController" class="Action.TilesHomeController">  
  15. </bean>  
  16.   
  17. <!-- tiles页面解析器-->   
  18. <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">  
  19.   <property name="viewClass">  
  20.     <value>org.springframework.web.servlet.view.tiles.TilesView</value>  
  21.   </property>  
  22. </bean>  
  23.   
  24.   
  25. <!-- tiles配置器-->  
  26. <bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles.TilesConfigurer">  
  27.  <property name="definitions">  
  28.    <list>  
  29.      <value>/WEB-INF/train-def.xml</value>  
  30.    </list>  
  31.  </property>  
  32. </bean>   
  33. </beans>  

 

运行/title.mvc (mvc是我自定义的扩展名)我们可以看到如下结果:

courseDetail title
this is from header
this is courseDetail
this is from footer

 

如果我们需要在每一个页面的header部分显示一些我们从数据库里读取的数值,我们可以在不同的控制器中加入访问数据库的代码,但这样显得很啰唆,因为header部门在每个页面都是公用的,也就是说不同的页面只有content部分不同,这样,我们就会有很多冗余代码,为了解决这个问题,我们可以使用spring为我们提供的ComponentControllerSupport

Java代码  收藏代码
  1. package Action;  
  2.   
  3. import javax.servlet.http.HttpServletRequest;  
  4. import javax.servlet.http.HttpServletResponse;  
  5.   
  6. import model.Student;  
  7.   
  8. import org.apache.struts.tiles.ComponentContext;  
  9. import org.springframework.web.servlet.view.tiles.ComponentControllerSupport;  
  10.   
  11. public class HeaderTilesController extends ComponentControllerSupport {  
  12.   
  13.   
  14.     protected void doPerform(ComponentContext context, HttpServletRequest request,  
  15.             HttpServletResponse response) throws Exception {  
  16.          Student stu=new Student();  
  17.          stu.setName("gaoxiang");  
  18.          stu.setSex("male");  
  19.          //tiles context中存放简单数据  
  20.       context.putAttribute("name", stu.getName());  
  21.          context.putAttribute("sex", stu.getSex());  
  22.          //tiles context中存放对象  
  23.       context.putAttribute("student", stu);  
  24.          //request中存放数据  
  25.       request.setAttribute("requestname", stu.getName()+"-request");  
  26.          request.setAttribute("requestsex", stu.getSex()+"-request");  
  27.     }  
  28.   
  29. }  

 

改写train-def.xml

Xml代码  收藏代码
  1. <!DOCTYPE tiles-definitions PUBLIC  
  2.        "-//Apache Software Foundation//DTD Tiles Configuration//EN"  
  3.        "http://jakarta.apache.org/struts/dtds/tiles-config_1_1.dtd">  
  4.   
  5.   
  6. <tiles-definitions>  
  7.   <definition name="template" page="/tiles/mainTemplate.jsp">  
  8.     <put name="title" value="default title"/>  
  9.     <put name="header" value=".header"/>  
  10.     <put name="content" value="/tiles/content.jsp"/>  
  11.     <put name="footer" value="/tiles/footer.jsp"/>  
  12.   </definition>  
  13.     
  14.   <definition name="courseDetail" extends="template">  
  15.     <put name="title" value="courseDetail title"/>  
  16.     <put name="content" value="/tiles/courseContent.jsp"/>  
  17.   </definition>  
  18.     
  19.   <definition name=".header" page="/tiles/header.jsp" controllerClass="Action.HeaderTilesController">  
  20.   </definition>  
  21. </tiles-definitions>  

 

改header.jsp

Html代码  收藏代码
  1. <%@ taglib uri="http://jakarta.apache.org/struts/tags-tiles" prefix="tiles" %>  

相关文章推荐

Spring MVC集成Tiles3

1、添加依赖 org.apache.tiles tiles-servlet 3.0.7 org.apache.tiles til...

Spring MVC集成Tiles框架

Spring MVC集成Tiles框架,其实就是增加Tiles视图解析,想来是很简单的,基本配置如下: 在SpringMVC.xml中配置视图:   bean id="tilesConfigu...

Spring MVC @RequestMapping使用方法

@RequestMapping使用

Spring MVC 下加入Tiles2

介绍Tiles2 如今,网站一般被划分成片正在呈现不同的网页之间的可重复使用的模板。例如,一个网站中包含头,页脚,菜单等,这项目仍然通过了该网站,并给它一个共同的外观和感觉。这是非常困难的硬编码在每...

DWR3.0与Spring MVC集成方法

DWR(Direct Web Remoting)是一个用于改善web页面与Java类交互的远程服务器端Ajax开源框架,可以帮助开发人员开发包含AJAX技术的网站。它可以允许在浏览器里的代码使用运行在...

Spring MVC集成其他带来的事务注解无效之context:component-scan扫描使用上的容易忽略的use-default-filters

这两天,在使用公司的框架开发进行数据存储shi

Mybatis集成Spring MVC,使用Spring test进行测试

Mybatis集成Spring MVC mybatis集成spring,一般来说配置比较麻烦,我们都是事先弄个手脚架子然后稍微复制粘贴一下子就搞定了,对于spring boot来说这些一般的模板配...

使用maven管理spring3.1.2 及spring mvc ,hibernate4.3.6集成开发的依赖环境

commons-dbcp commons-dbcp 1.4 org.springframework spring-core 3.1.4.RELEASE org.spring...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)