Agile
-
jsp tapestry asp.net 处理大量组件/tag的比较
2006-02-27
最近在工作中遇到一个问题,有一个jsp很大,其中包括了有300多个tag,反应是无法编译(在有的服务器上可以编译,但无法加载),打开生成的java文件,发现在jspService中有超过5000行的代码,其生成的class的code属性的长度超过了65535这个限制,jvm加载的时候认为是无效的class文件,抛出异常。必须给它减肥了,再就是把文件的内容分成两个文件来存放,分别编译,解决问题。
今天突然又想起这个问题了,想看看Tapestry是如何应对这种情况的呢,另外今天开始学习asp.net,也想看看它的反应如何,由于写了一个变态的测试程序,生成所需要的测试文件。
下面是python脚本:
#生成taspstry的测试文件, 生成20000个tagestry 标记
f=open("t.html","w")
s0="""<span jwcid="$content$">"""
s1="""<div><span jwcid="@Insert" value="ognl:msg" raw="true"/></div>"""
s2="</span>"
f.write(s0)
i = 0
while i<20000:
f.write(s1+"\n")
i=i+1
f.write(s2)
f.close()#生成jsp的测试文件, 生成2000个jsp tag标记
f=open("t1.jsp","w")
s0="""<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>"""
s1="""<div><c:out value="test"/></div>"""
f.write(s0)
i = 0
while i<2000:
f.write(s1+"\n")
i=i+1
f.close()#生成asp.net的测试文件, 生成20000个Label组件
s0="""<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Untitled Page</title>
</head>
<body>"""s1 = """<asp:Label ID="Label%d" runat="server" Height="32px" Width="72px"/> """
s2="""</body>
</html>"""f=open("t1.aspx","w")
f.write(s0)
i = 0
while i<20000:
f.write(s1%(i)+"\n")
i=i+1
f.write(s2)
f.close()







