FreeMarker与Struts2结合使用
MVC是多年以来一直较为优秀的框架。对于java来说,Mode经常是由JavaBean担当的,Controller是由Servlet担当,View是由JSP担当的。JSP确实很优秀,功能强大,甚至可以直接在里面写java代码(scriptlet),他的自定义标签功能更是强大无比。然而在JSP可以被直接访问,所以不是完全符合MVC的标准,直接写java代码导致后期维护和可扩展性大大的降低了,其实个人觉得这个完全可以从人为上去改变,大不了不在JSP中写java代码。每次都让客户端访问Servlet后再跳转到JSP,这都是完全可以由编程人员解决的事情。在JSP推出后,有两款比较出名的模板引擎可以完全代替JSP,那就是Velocity和FreeMarker。由于FreeMarker是在Velocity之后出来的所以其综合功能要比Velocity强大。这两天自己试着写了个Freemarker和Struts2结合的Demo,其中模板是随便写了个jQuery的图标工具--highcharts。一、模板文件 highcharts1.ftl
[java]
<PRE class=html name="code"><html></PRE><PRE class=html name="code"> <head>
<title>jqGrid&FreeMarker Test</title>
<script src="js/jquery-1.8.3.js" type="text/javascript"></script>
<script src="js/highcharts.js" type="text/javascript"></script>
<script type="text/javascript" >
$(function () {
var chart;
$(document).ready(function() {
chart = new Highcharts.Chart({
chart: {
renderTo: 'container',
type: 'column', //spline曲线line直线pie饼状bar横向条状scatter 散状等
marginRight: 100,
marginBottom: 25
},
title: {
text: '2012年气温变化表',
x: 0 //center
},
subtitle: {
text: '合肥气象台提供',
x: 0
},
xAxis: {
categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
},
yAxis: {
title: {
text: '温度 (°C)'
},
plotLines: [{
value: 0,
width: 1,
color: '#808080'
}]
},
tooltip: {
formatter: function() {
return '<b>'+ this.series.name +'</b><br/>'+
this.x +': '+ this.y +'°C';
}
},
legend: {
layout: 'vertical',
align: 'right',
verticalAlign: 'top',
x: 0,
y: 0,
borderWidth: 0
},
series: [{name: '马鞍山',data: [<#list mas as temp>${temp},</#list>]}, { name: '芜湖',data: [<#list wh as temp>${temp},</#list>]},{name: '合肥',data: [<#list hf as temp>${temp},</#list>]}] //这里是用了FreeMarker的遍历,其他地方都是highcharts的固定用法,不用管它
});
});
});
</script>
<style type="text/css">
#container{
width:70%;
height 300px;
}
</style>
</head>
<body>
<div id="container"></div>
</body>
</html></PRE><BR>
二、模板解析java类中的方法<PRE class=java name="code">public void highchartsResolution(String templateFileName, String htmlName) {
List<Integer> list = null;
Writer out = null;
Configuration cfg = new Configuration();
cfg.setServletContextForTemplateLoading(
ServletActionContext.getServletContext(), "TemplateFiles");
cfg.setDefaultEncoding("UTF-8");
补充:Web开发 , Jsp ,
- 更多JS疑问解答:
- 几个验证11位手机号码格式的js代码
- js把图片转换成 base64代码
- js把base代码转换成图片
- JS 将 base64编码的图片转化为图片文件
- js中的定时器
- js如何获得FCKeditor控件的值
- 用js限制投票的cookie .目前设置的为:<input type="" class="" onclick="'window.location...
- JS验证,这块“牛皮”反复修改都不能实现
- 在JS中使用DOM模型
- 如何用JS 获取本地文件夹的文件列表
- js中new 了两个Object数组。怎么样将数组内容合并,重复的内容?
- 求实现自动生成图片缩略图的JS代码
- JS脚本网页问题
- js,代码中"object"和"Object"区别?
- js+flash实现网页图片切换效果,出现边框,单击激活此控件。