Spring mvc系列八之 页面静态化(一)

来源:互联网 发布:js 加密算法 编辑:程序博客网 时间:2024/06/06 00:17

提升网站性能的方式有很多,例如使用缓存技术,页面静态化等.对于一个网站来说,如果数据更新频率不高的话,那就没有必要没次都要从数据库取数据,一来调动数据库,响应速度慢,二来增加服务器对数据响应的负荷,三来不利于优化引擎.随着一个网站的访问量的加大,每次从数据库读取数据是以效率为代价的,特别是一些门户网站,网站访问慢对用户体验很不好.所以页面静态化是一个不错的选择.

页面静态化适合的场景:

  1. 数据更新不高的网站,如新闻型网站
  2. 实时性不是很高的网站,当然跟静态的方式有关,如果做成没增删改都静态化一次那就没这个问题,如果做成每隔一段时间更新一次就不可以了.
  3. 数据量不是很大的网站,如果一个网站有上万条记录,每条都生成一个页面谁受得了.

页面静态化的方法很多,这次我是基于freemarker.freeMarker是一个用Java语言编写的模板引擎,它基于模板来生成文本输出。当然还有比较出名的是Velocity.在使用freeMarker前有必要先讲一下freeMarker标签的用法.

 

freeMarker一些内置函数:

 

内置函数freeMa    sequence?first 返回sequence的第一个值。

 

sequence?last  返回sequence的最后一个值。

 

sequence?reverse 将sequence的现有顺序反转,即倒序排序

 

sequence?size    返回sequence的大小

 

sequence?sort    将sequence中的对象转化为字符串后顺序排序

 

sequence?sort_by(value) 按sequence中对象的属性value进行排序

 

 

 

直接获取Controller传过来的变量.

Html代码  收藏代码
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
  2. <html>  
  3. <head>  
  4. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
  5. <title></title>  
  6. </head>  
  7. <body>  
  8.     ${title}  
  9. </body>  
  10. </html>  

 

 获取Controller传过来的对象.

Html代码  收藏代码
  1. ${user.userPassword}  

 

遍历集合:

Html代码  收藏代码
  1. <#list lists as user>  
  2.         用户名:${user.userName}<br/>  
  3.         密码:${user.userPassword}<br/>  
  4.         住址:${user.userInfo.address}<br/>  
  5.     </#list>  

 

这是关于遍历集合其它一些用法,不多说.看了就懂:

Html代码  收藏代码
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
  2. <html>  
  3. <head>  
  4. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
  5. <title></title>  
  6. </head>  
  7. <body>  
  8.     <#list lists as user>  
  9.         用户名:${user.userName}<br/>  
  10.         密码:${user.userPassword}<br/>  
  11.         住址:${user.userInfo.address}<br/>  
  12.     </#list>  
  13.     <br/>  
  14.     list隐含变量item_index, 当前迭代项在所有迭代项中的位置<br/>  
  15.     <#list lists as user>  
  16.         第${user_index + 1}个用户<br/>  
  17.         用户名:${user.userName}<br/>  
  18.         密码:${user.userPassword}<br/>  
  19.         住址:${user.userInfo.address}<br/>  
  20.         <hr/>  
  21.     </#list>  
  22.       
  23.     list隐含变量item_has_next, 用于判断当前迭代项是否是所有迭代项中的最后一项。<br/>  
  24.     <#list lists as user>  
  25.         用户名:${user.userName}<br/>  
  26.         密码:${user.userPassword}<br/>  
  27.         住址:${user.userInfo.address}<br/>  
  28.         <hr/>  
  29.         <#if !user_has_next>  
  30.             共有${lists?size}最后一个用户名是:${user.userName}  
  31.         </#if>  
  32.     </#list>  
  33.       
  34.     <h4>list隐含变量sort_by有一个参数,该参数用于指定想要排序的子变量,排序是按照变量对应的值进行排序</h4><br/>  
  35.     <#list lists?sort_by("userName") as user>  
  36.         用户名:${user.userName}<br/>  
  37.         密码:${user.userPassword}<br/>  
  38.         住址:${user.userInfo.address}<br/>  
  39.         <hr/>  
  40.     </#list>  
  41.       
  42.       
  43.     <h4>list隐含变量reverse还可以同sort_by一起使用 </h4><br/>  
  44.     <#list lists?sort_by("userName")?reverse as user>  
  45.         用户名:${user.userName}<br/>  
  46.         密码:${user.userPassword}<br/>  
  47.         住址:${user.userInfo.address}<br/>  
  48.         <hr/>  
  49.     </#list>  
  50. </body>  
  51. </html>  

 

 获取Map数据:

Hash的内置函数
    hash?keys 返回hash里的所有key,返回结果为sequence
    hash?values 返回hash里的所有value,返回结果为sequence

Html代码  收藏代码
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
  2. <html>  
  3. <head>  
  4. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
  5. <title></title>  
  6. </head>  
  7. <body>  
  8.     <#list maps?keys as testKey>  
  9.         键${testKey} 值${maps[testKey].userName}  
  10.     </#list>  
  11. </body>  
  12. </html>  

 

直接获取Map的值:

Html代码  收藏代码
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
  2. <html>  
  3. <head>  
  4. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
  5. <title></title>  
  6. </head>  
  7. <body>  
  8.     <#list maps?values as value>  
  9.         值${value}   
  10.     </#list>  
  11. </body>  
  12. </html>  

 讲了freemarker后下一篇就讲一讲如何使用freemarker结合spring mvc实现页面静态化.

0 0
原创粉丝点击