论坛首页 Java企业应用论坛

FreeMarker和Jsp的应用范围

浏览 29769 次
精华帖 (4) :: 良好帖 (2) :: 新手帖 (1) :: 隐藏帖 (2)
作者 正文
   发表时间:2009-11-25  
http://key232323.iteye.com/blog/526338


感兴趣的去看看
0 请登录后投票
   发表时间:2009-11-26  
key232323 写道
4.还是macro,jsp的include static / dyn实现方式,可重用性不如macro高。

一般情况下重用性只和设计有关,和技术无关。

这句话我觉得还是推荐老兄去用用macro为好,同是nested,

原始的include(page层面)和taglib(控件层面)的nested,不如tm的nested来的直接和明了

而且fm的配置相对简单,不需要<%@page 等,再者,做单元测试,不需要web容器,
还有就上有个老兄说的,错误提示更细,一看便知


tiles比这个强得多
0 请登录后投票
   发表时间:2009-11-26  
还有个就是不必要把需要的Class import过来。。。

这个算scripty ??

无所谓了,萝卜白菜各有所爱,讨论讨论而已

最近用个groovy + freemarker做**还是挺不错的,jsp忘记了不少,尤其是taglib,jstl标准的都不会用了,555
=以后用到了再拾起来。

lz莫非要结贴?
0 请登录后投票
   发表时间:2009-11-26  
  1,我感觉服务器批量生成静态文件挺方便的,不知道是不是个优点
  2,Data可以缓存
 
0 请登录后投票
   发表时间:2010-02-02  
看了这么多 受教了~~
0 请登录后投票
   发表时间:2010-02-02  
struts2的freemarker调试页面的时候不方便啊,freemarker一个小改动,就要重启tomcat,很麻烦啊,如果jsp就不用了,直接刷新项目,就可以看到改动的效果,你们怎么解决呢?
0 请登录后投票
   发表时间:2010-03-05  
无意中看到这个贴,freemarker我倒是没用过,但也看过书和教程什么的,我的态度是对任何技术都不轻易进入,因为java领域这种噱头太多了。个人认为jsp作为视图模板是很不错的选择,其他模板技术没有好用到能替代他的程度。如果你用一种统一的风格就可以把事情做好,那就不要引入更多的技术。另外,由于ajax的出现,htm+js则可能是更好,更纯粹的选择。再有,就是BC/S结构,RIA会是主流,那么就会有客户端编程和服务器端编程的分工问题,已经不仅仅是技术和美工的分离了。 其实还有其他选择,比如flex,javafx,可以解决部分美工问题,不过就有点扯远了。
0 请登录后投票
   发表时间:2010-03-06  
holan 写道
case0079 写道
那么页面嵌入代码的好处是什么?

保持controller的纯洁。
我不相信有谁能完全把页面剥得没有逻辑。
比如假如我要输出一个客户列表,假如这个客户是90后,需要输出非主流
你把逻辑写在controller里?从hibernate拿到客户List,你再遍历这个List,遇到90后,在客户的某个域里写上非主流?
那你这个客户的Model是不是不纯粹了?多了一个字段叫 是否非主流?还多遍历了一次List
这种逻辑是不是只能在视图层面上做?
这个例子很简单,但是以此类推,肯定会有逻辑在视图上做。
不是所有的逻辑都放在controller里才是好的

为什么不用jstl标签库呢,非要用<%%>?
jstl一样可以做判断。只不过不让java在前台美工的眼里出现。
我感觉JSTL比在页面上写java代码好看的多。而且也方便,如果不会java的看到你写的页面会头疼的```

0 请登录后投票
   发表时间:2010-07-25  
关于marco和taglib的争论
<#--
 | 画面共用头部部分
 | 创建者:杨涛 
 | 创建时间:2009-05-05 
 | 版本:1.0 
 -->
<#macro head>
<head>
	<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">
	<script type="text/javascript" src="${path}/js/jquery-1.4.2.min.gzjs"></script>
	<script type="text/javascript" src="${path}/js/jquery-easyui/easyloader.js"></script>
	<script type="text/javascript" src="${path}/js/My97DatePicker/WdatePicker.js"></script>
	<script type="text/javascript" src="${path}/js/util.js"></script>
	<link rel="stylesheet" type="text/css" href="${path}/js/jquery-easyui/themes/icon.css" />
	<link rel="stylesheet" type="text/css" href="${path}/js/jquery-easyui/themes/default/pagination.css" />
	<link rel="stylesheet" type="text/css" href="${path}/css/yangtao.css" />
	<title>运输管理系统</title>
</head>
<script type="text/javascript">
using('linkbutton');
$(document).ready(function(){
	$.ajaxSetup({
	  cache:false,
	  dateType:'json'
	});
	$(document).bind('contextmenu',function(){return false;})
})

</script>
</#macro>

<#--
 | 通用的HTML模板宏,加入常用的js引用和公用的部分
 | 作者: 杨涛
 | 日期: 2010-06-09
 -->
<#macro html>
<html>
	<@head/>
	<body>
		<#nested>
	</body>
	<@footer/>
</html>
</#macro>
 
<#macro footer>
<P id=copyRight align=center>
	<TABLE>
		<TBODY>
			<TR align=middle>
				<TD>版权所有</TD>
			</TR>
			<TR align=middle>
				<TD><A target=_blank>联系我们</A></TD>
			</TR>
		</TBODY>
	</TABLE>
</#macro>

关于页面
<#include "/common/common.html"> <@html>
<TABLE cellSpacing=0 cellPadding=0 width="100%" align=center border=0>
	<tr>
		<td width="15%" valign="top">
			<table width="100%" class=queryTable>
				<tr>
					<th>
						常量列表
					</th>
				</tr>
				<tr>
					<td>
						<@select id="constantList" list=constantList size="30"
						style="width:220px;" onclick="changeSelection()"/>
					</td>
				</tr>
			</table>
		</td>
		<td width="85%" valign="top">
			<TABLE cellSpacing=0 cellPadding=0 height="100%" width="100%"
				align=center border=0>
				<tr>
					<td>
						<div id="context"></div>
					</td>
				</tr>
				<tr>
					<td align="right">
						<a class="easyui-linkbutton" icon="icon-add" id="btnAdd"
							onclick="addNew()">新增</a>
					</td>
				</tr>
				<tr>
					<td height="200" width="100%">
						<iframe id="updateifm" frameborder="0" width="100%" height="100%">
						</iframe>
					</td>
				</tr>
			</TABLE>
		</td>
	</tr>
</TABLE>
</@html>
<script language="javascript" type="text/javascript">
	function changeSelection() {
		var selectedValue = $("#constantList").val();
		$.ajax( {
			url :'constant.selectByType.do',
			data : {
				"type" :selectedValue
			},
			dataType :'html',
			success : function(html) {
				$('#context').html(html);
			}
		})
	}
	function addNew() {
		var i = document.getElementById('constantList').selectedIndex;
		var type = "", typeName = "";
		if (i >= 0) {
			type = document.getElementById('constantList').options[i].value;
			typeName = document.getElementById('constantList').options[i].text;
		}
		$('#updateifm').attr(
				'src',
				'constant.execute.do?target=ConstantAdd&type='
						+ encodeURI(type) + '&typeName=' + encodeURI(typeName));
	}
	function update(id) {
		$('#updateifm').attr('src',
				'constant.execute.do?target=ConstantUpdate&id=' + id);
	}
	function deleteRow(id, version) {
		$.post('constant.delete.do?id=' + id + "&version=" + version, showMsg,
				'json')
	}
</script>

去掉CSS,几乎可以让美工直接view
还有freemarker的function
<#--
 | 取得时间的function,省去了各种判断
 -->
<#function getTime time="">
<#if time?is_date>
<#return time?string("yyyy-MM-dd HH:mm:ss")>
<#else>
<#return time>
</#if>
</#function>

<#--
 | 取得日期的function,省去了各种判断
 -->
<#function getDate time="">
<#if time?is_date>
<#return time?string("yyyy-MM-dd")>
<#else>
<#return time>
</#if>
</#function>
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics