当前位置:编程学习 > JS >>

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 ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,