springmvc 整合apache tiles

本文详细介绍了如何将Spring MVC 3.2与Apache Tiles整合,包括配置依赖、创建tiles.xml文件、整合tiles到Dispatcher Servlet、配置tiles定义以及展示实际效果。整合完成后,可以使用tiles.xml文件定义布局和模板,通过Dispatcher Servlet进行视图解析。
   最近把springmvc3.2.0 和 apache tiles 整合了一下,并用mvn构建了web工程,下面把关键点说明一下。前提:springmvc3.2 已经搭建完毕,搭建方式可查看 
http://zld406504302.iteye.com/blog/1887537 
   1:pom.xml 依赖项 
     
Java代码   收藏代码
  1.    <!--tiles jar 依赖-->  
  2.    <dependency>  
  3. <groupId>org.apache.tiles</groupId>  
  4. <artifactId>tiles-extras</artifactId>  
  5. <version>3.0.1</version>  
  6.    </dependency>  
  7.    <!--jstl 依赖 (构建tiles模板会用到)-->  
  8.    <dependency>  
  9.     <groupId>javax.servlet</groupId>  
  10.     <artifactId>jstl</artifactId>  
  11.     <version>1.2</version>  
  12.    </dependency>  
  13.      

  
   2:创建tiles.xml 文件,并构建tiles模板 
       2.1 目录结构 
          [img] 
 
[/img] 
      2.2 文件内容 
        tiles.xml 
      
Java代码   收藏代码
  1.         <?xml version="1.0" encoding="UTF-8" ?>  
  2. <!DOCTYPE tiles-definitions PUBLIC  
  3.        "-//Apache Software Foundation//DTD Tiles Configuration 3.0//EN"  
  4.        "http://tiles.apache.org/dtds/tiles-config_3_0.dtd">  
  5. <tiles-definitions>  
  6.     <definition name="baselayout" template="/WEB-INF/tiles/baselayout.jsp" preparer="com.cn.ld.framework.web.tiles.CustomerPreparer">  
  7.         <put-attribute name="title" value="title" />  
  8.         <put-attribute name="login_user" value="" />  
  9.         <put-list-attribute name="stylesheets">  
  10.             <add-attribute value="static/style/main" />  
  11.         </put-list-attribute>  
  12.         <put-list-attribute name="scripts">  
  13.             <add-attribute value="static/js/util" />  
  14.         </put-list-attribute>  
  15.     </definition>  
  16.       
  17.     <definition name="sublayout" extends="baselayout">  
  18.         <put-attribute name="login_user" value="/WEB-INF/tiles/loginUser.jsp" />  
  19.     </definition>  
  20.       
  21.     <definition name="title" template="/WEB-INF/tiles/title.jsp">  
  22.         <put-attribute name="title" value="springmvc3.2" />  
  23.     </definition>  
  24.       
  25.     <definition name="user/login/home" extends="baselayout">  
  26.         <put-attribute name="title" value="home page" />  
  27.         <put-attribute name="main" value="/WEB-INF/jsp/user/login/home.jsp" />  
  28.     </definition>  
  29.       
  30.     <definition name="home" extends="baselayout">  
  31.         <put-attribute name="main" value="/WEB-INF/tiles/loginUser.jsp" />  
  32.         <put-list-attribute name="scripts" inherit="true">  
  33.         </put-list-attribute>  
  34.     </definition>  
  35.    
  36. </tiles-definitions>  
  37.   
  38.          

       
      baselayout.jsp 
      
Java代码   收藏代码
  1.         <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>  
  2. <%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles" %>  
  3. <%@ taglib uri="http://tiles.apache.org/tags-tiles-extras" prefix="tilesx" %>  
  4. <%@ page language="java" contentType="text/html; charset=UTF-8"  
  5.     pageEncoding="UTF-8"%>  
  6. <%  
  7. String path = request.getContextPath();  
  8. String basePath = request.getScheme() + "://"  
  9.         + request.getServerName() + ":" + request.getServerPort()  
  10.         + path + "/";  
  11. %>  
  12. <!DOCTYPE html>  
  13. <html>  
  14.     <head>  
  15.         <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
  16.         <!-- tile <put-attribute name="title" value="title" />-->  
  17.         <title><tiles:insertAttribute name="title" /></title>  
  18.         <!-- stylesheets 要和tiles <put-list-attribute name="stylesheets"> name 一致 -->  
  19.         <!-- classname 定义类型 -->  
  20.         <tilesx:useAttribute name="stylesheets" classname="java.util.List" />  
  21.         <c:forEach items="${stylesheets}" var="src">  
  22.           <link rel="stylesheet" type="text/css" href="<%=basePath %><c:url value='${src}.css' />" />  
  23.         </c:forEach>  
  24.         <tilesx:useAttribute id="scripts" name="scripts" classname="java.util.List" />  
  25.         <c:forEach items="${scripts}" var="src">  
  26.             <script type="text/javascript" src="<%=basePath %><c:url value='${src}.js' />"></script>  
  27.         </c:forEach>  
  28.     </head>  
  29.     <body>  
  30.         <div id="head">  
  31.         <div id="banner"></div>  
  32.         <div id="menu"><jsp:include page="/WEB-INF/tiles/menu.jsp"/></div>      
  33.         </div>  
  34.         <!-- 加载 tiles main 指向的页面<put-attribute name="main" value="/WEB-INF/jsp/user/login/home.jsp" /> -->  
  35.         <div id="main"><tiles:insertAttribute name="main" /></div>  
  36.         <div id="footer"><jsp:include page="/WEB-INF/tiles/footer.jsp"/></div>  
  37.     </body>  
  38. </html>  
  39.          


       footer.jsp 
      
Java代码   收藏代码
  1. Copyright 2013 springmvc3.2, developer java 小生  


       loginUser.jsp 
      
Java代码   收藏代码
  1. <h1>Hello, ${user.name}  ${user.age }  ${user.sex}</h1>  

       
         menu.jsp 
      
Java代码   收藏代码
  1. <div>  
  2.     [list]  
  3.        [*]1  
  4.   
  5.        [*]2  
  6.   
  7.        [*]3  
  8.   
  9.        [*]4  
  10.   
  11.     [/list]  
  12. </div>  


       sublayout.jsp 
      
Java代码   收藏代码
  1.         <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>  
  2. <%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles" %>  
  3. <%@ taglib uri="http://tiles.apache.org/tags-tiles-extras" prefix="tilesx" %>  
  4. <%@ page language="java" contentType="text/html; charset=UTF-8"  
  5.     pageEncoding="UTF-8"%>  
  6.  <tiles:insertAttribute name="login_user" />  
  7.          


       title.jsp 
      
Java代码   收藏代码
  1. <%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles" %>  
  2. le>springmvc3.2</title>  



   3:dispatcher-servlet.xml 增加tiles view试图 
    
Java代码   收藏代码
  1. <bean id="tilesViewResolver" class="org.springframework.web.servlet.view.tiles3.TilesViewResolver" p:order="1"/>  
  2.       
  3.     <bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles3.TilesConfigurer">  
  4.         <property name="definitions">  
  5.             <list>  
  6.                 <value>/WEB-INF/tiles.xml</value>  
  7.             </list>  
  8.         </property>  
  9.     </bean>  
  10.       
  11.     <bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:prefix="/WEB-INF/jsp/"  
  12.             p:suffix=".jsp" p:order="2"/>  
  13.   
  14.       

    InternalResourceViewResolver 和 TilesViewResolver 共存,且以TilesViewResolver 为首要匹配,通过 p:order 来控制级别。数字越大,级别越低。 

     启动tomcat ,感受效果吧。

SpringMVC 3 + Tiles 2.2.2 Integration

 
Apache Tiles is a popular and mostly used templating framework for java based web application. 
Tiles became more popular because Struts 1.x uses Tiles as its default templating framework.
SpringMVC which is an MVC framework, like Struts, also supports integration of Tiles as its templating framework.

Let us see how we can integrate SpringMVC and Tiles.

You can download Tiles binaries from http://tiles.apache.org/ .

Step#1: Add the following tiles jars to WEB-INF/lib folder.

tiles-api-2.2.2.jar
tiles-core-2.2.2.jar
tiles-jsp-2.2.2.jar
tiles-servlet-2.2.2.jar
tiles-template-2.2.2.jar


Step#2: Configure tiles integration in WEB-INF/dispatcher-servlet.xml

01 <beans>
02 
03  <bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles2.TilesConfigurer">
04    <property name="definitions">
05      <list>
06        <value>/WEB-INF/tiles.xml</value>
07      </list>
08    </property>
09  </bean>
10 
11  <bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver">
12    <property name="viewClass" value="org.springframework.web.servlet.view.tiles2.TilesView"/>
13  </bean>
14 
15 </beans>


Step#3: Configure tiles definitions in WEB-INF/tiles.xml

01<!--?xml version="1.0" encoding="UTF-8"?-->
02 
03   
04 <tiles-definitions>
05 
06  <definition name="baseLayout" template="/jsp/layout/layout.jsp">
07   <put-attribute name="title" value="SivaLabs" />
08   <put-attribute name="header" value="/jsp/layout/header.jsp" />
09   <put-attribute name="navigation" value="/jsp/layout/navigation.jsp" />
10   <put-attribute name="body" value="" />
11   <put-attribute name="footer" value="/jsp/layout/footer.jsp" />
12  </definition>
13   
14  <definition name="login" extends="baseLayout">
15   <put-attribute name="title" value="SivaLabs : Login" />
16   <put-attribute name="navigation" value="" />
17   <put-attribute name="body" value="/jsp/login.jsp" />
18  </definition>
19    
20  <definition name="welcome" extends="baseLayout">
21   <put-attribute name="title" value="SivaLabs : Welcome" />
22   <put-attribute name="body" value="/jsp/welcome.jsp" />
23  </definition>
24    
25 </tiles-definitions>

Step#4: Code the layout JSPs

layout.jsp

01<%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles"%>
02 <html>
03 <head>
04 <title><tiles:insertAttribute name="title" ignore="true" /></title>
05 <script type="text/javascript" src="js/sivalabs.js"></script>
06 </head>
07 <body>
08 
09 <table border="1" style="border-collapse: collapse;" cellpadding="2" cellspacing="2"align="center" width="800">    <tbody><tr>
10         <td height="30" colspan="2"><tiles:insertAttribute name="header" /></td>
11     </tr>
12     <tr>
13         <td width="150" height="450" valign="top">
14 
15          <tiles:insertAttribute name="navigation" />
16 
17         </td>
18         <td valign="top" width="650">
19 
20          <tiles:insertAttribute name="body" />
21 
22         </td>
23     </tr>
24     <tr>
25         <td height="30" colspan="2">
26 
27          <tiles:insertAttribute name="footer" />
28 
29         </td>
30     </tr>
31 </tbody></table></body>
32 </html>

header.jsp

1 <h2>SivaLabs : My Experiments On Technology</h2>


footer.jsp

1 <center>
2  <b>© 2011 SivaLabs All Rights Reserved</b>
3 </center>

navigation.jsp

1 <p><a href="createUser.do">Create User</a></p><p><a href="listUsers.do">View Users</a></p><p><ahref="logout.do">Logout</a></p>

welcome.jsp

1 <h2>Welcome to SpringMVC+Tiles Sample Application </h2>


Step#5: 

WelcomeController.java

01 package com.sivalabs.web.controllers;
02 
03 import org.springframework.stereotype.Controller;
04 import org.springframework.web.bind.annotation.RequestMapping;
05 
06@Controller
07 public class WelcomeController
08{
09  @RequestMapping("welcome")
10  public String welcome()
11  {
12   return "welcome";
13  }
14}

Here the String "welcome" will be resolved as a tile name and display the UI as per "welcome" tile configuration.
内容概要:本文详细记录了对一个Android ARM64静态ELF文件中字符串加密机制的逆向分析过程。该ELF文件的所有字符串均被加密,无法通过常规strings命令或IDA直接识别。作者通过分析发现,加密字符串存储在.rodata段,其解密所需信息(包括密文地址、长度和16位密钥)保存在.data.rel.ro段的40字节描述符中。核心解密函数sub_10F408采用自反的双pass流密码算法,结合固定密钥KEY_TERM(由.data段24字节数据计算得出),实现字节级非线性、位置与长度相关的加密。文章还复现了完整的Python解密脚本,并揭示了该保护机制的本质为代码混淆而非强加密,最终成功批量解密全部956条字符串,暴露程序真实行为,如shell命令模板、设备标识篡改、网络重置等操作。此外,文中还提及未启用的自定义壳框架及其反dump设计。; 适合人群:具备逆向工程基础的安全研究人员、二进制分析人员及对ELF保护技术感兴趣的开发者。; 使用场景及目标:①学习ELF二进制中字符串加密的典型实现方式与逆向突破口;②掌握从结构识别、函数追踪到算法还原的完整逆向流程;③理解“绑定二进制”的完整性校验设计及其局限性;④实践编写IDAPython脚本自动化提取与解密敏感数据。; 阅读建议:此资源以实战案例驱动,不仅展示技术细节,更强调逆向思维与验证方法,建议读者结合IDA调试环境,逐步跟随文中步骤进行动态分析与算法验证,深入理解每一步的推理依据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值