`

JSTL和Struts2谁才是真正的王道

阅读更多

      Struts1、struts2的标签都已经用的很久啦,不过最终还是觉得使用Java标准标签库才是真正的王道。

      开源(V)框架越来越多,只不过是对于JSTL的不断的扩展,不断的加快开发的速度,但过了很久以后再回来看你使用这个开源(V)框架写出来的代码还能清晰的记得这些对象都封装了什么吗?我是不能保证还能清晰的记得,一个项目下来使用的对象封装太多啦,那里还记得当时是怎么做的呢?

      用过Struts2的朋友不知你们是否用过从Session里读取一个List结果集出来,反正我用的时候没有办法从里面把自己想要的结果读取出来,最大还是借助C标签才把自己想要的东西读取出来。(如果有朋友知道如果读取请把您的代码贴出来共享一下。)

      以下是我用C标签读取会话中的方法:

<c:forEach var="vitem" items="${session.history}">
	<p>
		<input name="history" type="radio" value="${vitem.id}" />
		<input type="hidden" id="title${vitem.id}" value="${vitem.itemTitle}" />
		<input type="hidden" id="link${vitem.id}" value="${vitem.itemLink}" />
		<a href="${vitem.itemLink}" class="p">${vitem.itemTitle}</a>
	</p>
</c:forEach>

 当然我的后台在session中封装了一个history的结果集。

 

      虽然Struts2的标签很强大,但也有其自身不足的地方,比如你在后台封装了一个List结果集,在页面里使用的话只能是

<s:iterator value="rollList">
	<li>
		<a target="_blank" href="<%=request.getContextPath()%>/ns_fl/${id}.html" title="${itemTitle}"> 
		<s:if test="${fn:length(itemTitle)>15}">
			<c:out value="${fn:substring(itemTitle,0,15)}" />…
      	    	</s:if> <s:else>
			<s:property value="itemTitle" />
		</s:else>
		</a>
		<span class="datetime"> 
			<s:date format="hh:MM" name="itemPudate" /> 
		</span>
	</li>
</s:iterator>

这段代码过了很长一段时间后,再让你看或者别的人再看的时候,还有那么容易看的懂了吗?你还知道这里面封装的是什么对象吗?

       用标准标签库的话就不一样啦,你可以设定你这个List里封装的对象。

<c:forEach var="newsItem" items="${list}" >
	<li>
		<a target="_blank" href="<%=request.getContextPath()%>/ns_fl/${newsItem.id}.html"> 
			<s:if test="${fn:length(newsItem.itemTitle)>24}">
				<c:out value="${fn:substring(newsItem.itemTitle,0,24)}" />…
			</s:if><s:else>
				<c:out value="${newsItem.itemTitle}" />
			</s:else>
		</a>
	</li>
</c:forEach>

 对比一下以上两段代码,你会发布用C标签你可以清晰的知道自己的List里封装的是什么对象,其实就相当于

for(int i=0;i<list.size();i++){
     Object newsItem = (Object)list.get(i);
}

 

这样就相当用对你的List结果集进行了以对象形式的遍历。相比以来这种代码可读性会更高一些。

    当然C标签也有不好的地方,比如它就只有一个<c:if>但却没有对应的<c:else>标签,这让操作的时候就只能用<c:if>去判断,也会带来很多的不便。

   总的来说项目中不应该过份依赖于一种标签,灵活的使用各种标签,才能让你的页面用户体验更好。

自己制作了JSTL标签库的电子书,感兴趣的朋友可以自己下载。

分享到:
评论
5 楼 chamborghini 2009-08-11  
刚把struts标签全都换成了jstl,一个html:options都用得头大
4 楼 liujunsong 2009-03-11  
界面上搞这么多的框架啊,以后维护的人头都大了.
项目用的技术越多,将来维护的人难度越大,
这个项目活的寿命也就越短暂
3 楼 canyon 2009-03-11  
还是jstl强大。大家看看我用过的一个例子:

<c:forEach var="f" items="${flist}" >

<c:forEach var="refF" items="${f.refFList}">

${record[f.ref_map][refF.id]}

</c:forEach>

</c:forEach>
2 楼 yhjhoo 2009-03-10  
我也很喜欢用jstl,面对struts2,有很多的困惑,很多标签都已经改变,到底因该先学struts1里面的标签还是直接学习struts2里面的标签,


到最后干脆全部学习了,方正学习起来很快
1 楼 lirig 2008-12-17  
我也很喜欢用jstl, Struts2也是好东西,不过看了楼主说的,为什么要在session存list啊,如果并发量大的话会吃掉很多内存的。
jstl在获取对象时是很好用的,我原来做一个项目基于spring的mvc中用过。其实web层只要好用,方便能提高开发速度就用。

相关推荐

    jstl和struts标签

    ### JSTL与Struts标签库详解 ...通过使用JSTL和Struts标签,开发者不仅能够提高代码的可读性和可维护性,还能大大减少页面上的脚本代码量,使页面更加整洁和专业。这对于构建高质量的企业级Web应用来说是非常重要的。

    jstl,struts2,spring标签库api

    在Java Web开发中,JSTL(JavaServer Pages Standard Tag Library)、Struts2和Spring都是极为重要的组件,它们各自提供了强大的功能,同时也通过标签库API增强了开发者的工作效率。这三个框架的标签库API使得代码...

    (TAG标签)jstl和struts2标签截取字符串[文].pdf

    jstl和struts2标签截取字符串 从给定的文件信息中,我们可以看到,jstl和struts2标签都是用于截取字符串的。下面我们将对这两个标签进行详细的介绍和分析。 jstl标签 jstl标签是一种基于Java的标签库,它提供了...

    用于dreamweaver的标签提示和格式化.JSTL的c,fmt,x和struts2

    标题提到的"用于dreamweaver的标签提示和格式化.JSTL的c,fmt,x和struts2",意味着这个压缩包是为了增强Dreamweaver对JSTL以及Struts2框架的支持。Struts2是基于MVC(模型-视图-控制器)架构的开源Java Web应用框架,...

    struts+jstl

    Struts和JSTL是两种在Java Web开发中广泛使用的技术。Struts是Apache软件基金会下的一个开源MVC(Model-View-Controller)框架,它主要用于构建基于Java Servlet的Web应用程序,提供了一种组织和控制应用程序流程的...

    从JSTL和STRUTS的TLD文件到自定义EL函数

    ### 从JSTL和STRUTS的TLD文件到自定义EL函数 #### TLD文件简介 在Java Web开发中,特别是在使用JSP技术时,我们经常需要使用到一些预定义好的标签库来简化页面的开发过程。JSTL(JavaServer Pages Standard Tag ...

    JSTL的各种标签文件和struts的标签文件,带strtus.jar包

    JSTL的各种标签文件和struts的标签文件,带strtus.jar包c-1_0.tld,c-1_0-rt.tld,c.tld,fmt-1_0.tld,fmt-1_0-rt.tld,fmt.tld,fn.tld,permittedTaglibs.tldscriptfree.tld,sql-1_0.tld,sql-1_0-rt.tld,sql....

    Struts标签 和jstl标签

    Struts标签和JSTL(JavaServer Pages Standard Tag Library)标签是Java Web开发中的两种重要组件,...深入研究“Struts标签参考.CHM”和“jstl-1_1-mr2-spec.pdf”这两个文档,将有助于你更好地理解和运用这些技术。

    struts1和struts2的区别

    它分为两个版本:Struts1 和 Struts2。虽然两者都基于模型-视图-控制器(MVC)设计模式,但它们之间存在诸多差异。了解这些差异对于选择合适的技术栈、优化开发流程至关重要。 #### Action处理机制 - **Struts1**:...

    数据库jar包文件,jstl,struts包

    数据库jar包文件、jstl和struts包是Java Web开发中的重要组成部分,它们在构建高效、可扩展的Web应用程序中扮演着关键角色。这里我们将深入探讨这些组件以及它们在实际应用中的作用。 首先,MySQL和SQLServer是两种...

    Struts标签库jstl.jar standard.jar

    Struts标签库与JSTL(JavaServer Pages Standard Tag Library)是Java Web开发中的两个重要组件,...在项目中正确导入和使用`jstl.jar`和`standard.jar`,并结合Struts标签库,将使Web应用程序的开发变得更加得心应手。

    struts2、JSTL、Spring、JS、JSP标签大全

    以上知识点涵盖了Web开发的主要方面,从控制层的Struts2和Spring,到视图层的JSP和JSTL,再到客户端交互的JavaScript。了解并熟练掌握这些技术,对于开发高效、稳定的Java Web应用至关重要。不过,由于给定的资源仅...

    struts2+sqlserver2000+jstl+分页

    Struts2、SQL Server 2000、JSTL 和分页是Web开发中的关键技术,它们共同构建了一个高效、动态的数据展示系统。这个小示例项目展示了如何将这些技术结合使用来实现一个具备分页功能的Web应用程序。 首先,Struts2是...

    struts2 Demo

    这是一个struts2框架的处理流程的demo,里面有struts2基本的配置和模拟登录的例子,以及struts2前台后后台的数据交互方式的解释,代码中有完整的注释帮助理解struts2的基本流程,同时对jstl和struts2的标签也有一定...

    Struts1和Struts2的区别和对比

    Struts1和Struts2是两个非常著名的Java Web框架,它们在设计模式、可测试性、输入处理和表现层等方面存在显著的区别。 首先,Action类的设计有所不同。在Struts1中,Action类需要继承一个抽象基类,这限制了Action...

    struts1和struts2区别

    Struts1和Struts2是两个非常著名的Java Web框架,它们在处理MVC(Model-View-Controller)架构方面有着显著的区别。以下是关于这两个框架在关键特性上的对比: 1. **Action类**: - **Struts1**:要求Action类继承...

    留言板留言板struts2留言板struts2

    Struts2是一个强大的Java web应用程序框架,用于构建和部署企业级的MVC(Model-View-Controller)架构的Web应用。这个"留言板留言板struts2"项目,显然是一个基于Struts2实现的简单留言板系统,旨在展示Struts2的...

    struts1和struts2的区别(详细)

    - **Struts2**: Struts2采用了OGNL表达式语言进行数据绑定和类型转换,这使得Struts2能够更加灵活地处理各种数据类型的转换需求。 #### 五、视图层技术的支持不同 - **Struts1**: 主要依赖JSP页面作为视图展示,...

Global site tag (gtag.js) - Google Analytics