`
紫_色
  • 浏览: 142802 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

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

阅读更多

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

页面静态化适合的场景:

  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传过来的变量.

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title></title>
</head>
<body>
	${title}
</body>
</html>

 

 获取Controller传过来的对象.

${user.userPassword}

 

遍历集合:

<#list lists as user>
		用户名:${user.userName}<br/>
		密码:${user.userPassword}<br/>
		住址:${user.userInfo.address}<br/>
	</#list>

 

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

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title></title>
</head>
<body>
	<#list lists as user>
		用户名:${user.userName}<br/>
		密码:${user.userPassword}<br/>
		住址:${user.userInfo.address}<br/>
	</#list>
	<br/>
	list隐含变量item_index, 当前迭代项在所有迭代项中的位置<br/>
	<#list lists as user>
		第${user_index + 1}个用户<br/>
		用户名:${user.userName}<br/>
		密码:${user.userPassword}<br/>
		住址:${user.userInfo.address}<br/>
		<hr/>
	</#list>
	
	list隐含变量item_has_next, 用于判断当前迭代项是否是所有迭代项中的最后一项。<br/>
	<#list lists as user>
		用户名:${user.userName}<br/>
		密码:${user.userPassword}<br/>
		住址:${user.userInfo.address}<br/>
		<hr/>
		<#if !user_has_next>
			共有${lists?size}最后一个用户名是:${user.userName}
		</#if>
	</#list>
	
	<h4>list隐含变量sort_by有一个参数,该参数用于指定想要排序的子变量,排序是按照变量对应的值进行排序</h4><br/>
	<#list lists?sort_by("userName") as user>
		用户名:${user.userName}<br/>
		密码:${user.userPassword}<br/>
		住址:${user.userInfo.address}<br/>
		<hr/>
	</#list>
	
	
	<h4>list隐含变量reverse还可以同sort_by一起使用 </h4><br/>
	<#list lists?sort_by("userName")?reverse as user>
		用户名:${user.userName}<br/>
		密码:${user.userPassword}<br/>
		住址:${user.userInfo.address}<br/>
		<hr/>
	</#list>
</body>
</html>

 

 获取Map数据:

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

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title></title>
</head>
<body>
	<#list maps?keys as testKey>
		键${testKey} 值${maps[testKey].userName}
	</#list>
</body>
</html>

 

直接获取Map的值:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title></title>
</head>
<body>
	<#list maps?values as value>
		值${value} 
	</#list>
</body>
</html>

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

分享到:
评论

相关推荐

    Spring MVC入门教程

    七、spring mvc 如何访问到静态的文件,如jpg,js,css? 八、spring mvc 请求如何映射到具体的Action中的方法? 九、spring mvc 中的拦截器: 十、spring mvc 如何使用拦截器? 十一、spring mvc 如何实现全局的异常...

    Spring MVC 教程 快速入门 深入分析

    七、spring mvc 如何访问到静态的文件,如jpg,js,css? 八、spring mvc 请求如何映射到具体的Action中的方法? 九、spring mvc 中的拦截器: 十、spring mvc 如何使用拦截器? 十一、spring mvc 如何实现全局的异常...

    SpringMVC框架架构介绍

    七、spring mvc 如何访问到静态的文件,如jpg,js,css? 八、spring mvc 请求如何映射到具体的Action中的方法? 九、spring mvc 中的拦截器: 十、spring mvc 如何使用拦截器? 十一、spring mvc 如何实现全局的异常...

    Spring MVC 3.0实战指南.ppt

    本地化:Spring MVC的本地化解析器 本地化:Spring MVC的本地化解析器 LocaleChangeInterceptor:通过URL参数指定 静态资源处理 静态资源处理:使REST风格的URL成为实现 静态资源处理:原理 静态资源处理:如何配置? ...

    spring mvc整合thymeleaf示例

    thymeleaf,我个人认为是个比较好的模板,性能也比一般的,比如freemaker的要高,而且把将美工和程序员能够结合起来,美工能够在浏览器中查看静态效果,程序员可以在应用服务器查看带数据的效果。 thymeleaf是一个...

    Spring MVC和springboot静态资源处理.rar

    Spring MVC和springboot静态资源处理.rar

    Spring3MVC注解教程.ppt

    本地化:Spring MVC的本地化解析器 LocaleChangeInterceptor:通过URL参数指定 静态资源处理 静态资源处理:使REST风格的URL成为实现 静态资源处理:原理 静态资源处理:如何配置? 静态资源处理:如何配置? 物理...

    Spring MVC 3.0实战指南

    支持REST风格的URL 添加更多注解,可完全注解驱动 引入HTTP输入输出转换器...和数据转换、格式化、验证框架无缝集成 对静态资源处理提供特殊支持 更加灵活的控制器方法签名,可完全独立于Servlet API

    spring mvc+spring+mybatis架构实例

    spring mvc+spring+Mybatis架构 Mybatis分页功能 伪静态配置 spring mvc访问静态资源

    ssm(spring+spring mvc+mybatis+maven)高仿bilibili视频网站项目实例

    ssm(spring+spring mvc+mybatis+maven)高仿bilibili视频网站项目实例 里面包含论坛, 购物商城 网页 后台管理的java项目集成 演示地址: http://106.75.216.49/bilibili/ (服务器不太稳定,可以尝试刷新,感谢...

    Spring MVC 3.0实战指南--陈雄华

    Spring MVC 3.0新特性: 1.支持REST风格的URL 2.添加更多注解,可完全注解驱动 3.引入HTTP输入输出转换器(HttpMessageConverter)和数据转换、格式化、验证框架无缝集成 4.对静态资源处理提供特殊支持 5.更加...

    基于spring-MVC的在线测试系统(客观题)

    自己写的模拟在线考试系统,虽然只是个demo(其实就是木有用数据库,用的一个静态集合模拟的,方便快速部署),但是建模和架构都是完整的,包含war和源码,只需把war部署到tomcat服务器中就可以运行

    第四章 Spring MVC Rest风格的url、静态资源标签

    NULL 博文链接:https://1151461406.iteye.com/blog/2390768

    Spring_MVC_教程_快速入门_深入分析

    spring mvc 核心类与接口 spring mvc 核心流程图 ...spring mvc 如何访问到静态的文件,如jpg,js,css? spring mvc 处理ajax请求 spring mvc 转发与重定向 如何给spring3 MVC中的Action做JUnit单元测试?

    SpringMVC入门教程

    七、spring mvc 如何访问到静态的文件,如jpg,js,css 八、spring mvc 请求如何映射到具体的Action中的方法 九、 spring mvc 中的拦截器: 十、 spring mvc 如何使用拦截器 十一、 spring mvc 如何实现全局的异常处理...

    sprjson,spring mvc的json和xml视图,dwr及静态资源等不同种类url整合

    spring mvc的json和xml视图,dwr及静态资源等不同种类url整合,对应博客教程地址: http://blog.csdn.net/qgmzzn1/article/details/8465969

    最新JAVA通用后台管理系统(ExtJS 4.2+Hibernate 4.1.7+Spring MVC 3.2.8)Eclipse版本

    1、采用Spring MVC的静态加载缓存功能,在首页将Javascript文件、CSS文件和图片等静态资源文件加载进来放进内存,极大提高ExtJS的加载速度。 2、三种皮肤主题:经典、灰色和海王星,支持多浏览器和多分辨率。 3、...

Global site tag (gtag.js) - Google Analytics