你们老师怎么这么变态,居然布置这种作业,真是无聊到家……估计是个热衷技术的年轻老师吧?遇到这种老师,也不知道该说你幸或不幸。
http://www.csdn.net/magazine/source/2003/200307.zip,里面的Tapestry目录就是一个最简单的Tapestry应用,也许能帮你糊弄过关。如果嫌这玩意太简单,我还有一个Open Source的项目(未完成),回头给我留条短信,再慢慢讨论。
理工居然还有喜欢搞Tapestry的老师,看来现在的技术风气还算不错。不介意的话,把你的老师介绍给我认识一下,谢谢了。

解决方案 »

  1.   

    这位宿老师好象是搞虚拟现实的吧,怎么也对web framework感兴趣呢?和别的学校比起来,理工9系的实力的确不算强,不过如果遇上肯实干的老师也就凑合了。你老师还挺时髦,算你们运气不错。
      

  2.   

    这是透明的一篇文章附带的示例代码,在这里可以看到这篇文章:http://gigix.cool2u.net/download/Tapestry.pdf
    你只要把这个war部署到应用服务器里,就可以看到效果了。war包里有全部的源代码。我在理工混了四年,当然了解。
      

  3.   

    我通过tomcat访问localhost:8080的index.Administration和Manager中要登录用户,应该是什么,我找了他的源文件中都是转到response.encodeURL("j_security_check"),这个JSP的内部对象的方法是将指定的URL和会话ID一起编码.但是我怎么获得它的会话ID呢?不过我已经通过在server.xml中加入tutorial的路径访问到这里的东西了.SumExample中的东西也看到了,得确很简单.不过我还是不是很明白中间的具体细节,现在在看透明的那篇文章.还没有看完.
        可能还有问题要问你,就先不结贴了.嘿嘿.    原来你是师哥,怪不得对理工这么熟悉.我现在也大四了,还在为工作还是考研迷茫,不知道你是怎么选择的,可以问问吗?讲讲你的历史和现在的想法,给我参考参考.谢谢了!
      

  4.   

    demo中除了tapestry还有别的两个目录,都是干什么的?好像和这个没有关系.
      

  5.   

    那是tomcat的用户身份认证,在%TOMCAT_HOME%/conf/tomcat-user.xml里有设置,大概是这样的:
      <user username="schlemiel" password="123456" roles="admin,manager"/>
    莫非你以前没用过tomcat?那个压缩包是《程序员》杂志的配书源码下载,另外两个目录可能是别的文章的代码吧。你先看看那篇文章,如果还有什么不清楚的,继续问就是。我毕业以后就工作了,因为上学上得很烦。以前一个96级的师兄曾经说,本科毕业找不着工作的就考研,读完研还找不着工作就读博——当然这是句笑话了。只要有本事,现在的软件公司也不太看重学位的。
      

  6.   

    的确以前没有用过tomcat。暑假的时候学JSP才开始用的。今天我在试着用tapestry编点东西。写java程序的时候编译说找不到net.sf.tapestry包,应该怎么办?我用的是jdk1.4,tomcat4.1.18,tapestry我在网上也下载了,tapestry 2.3-rc1和tapestry 3.0我都下载了。我也不想在学校待了,要在软件公司找个工作,你看得做些什么准备呢?现在学点什么东西以后可能会比较好?
      

  7.   

    还有,在.page和.application文件中的那些xml的标记都是什么意思?怎么知道他们的含义?
      

  8.   

    net.sf.tapestry包是2.3里面的,3.0已经改名为org.apache.tapestry了。把lib\net.sf.tapestry-2.3.jar加到你的classpath下面就行了。那些XML标记,常用的在那篇文章中好象有简单介绍,更详细的介绍可以看Tapestry的文档,或者看它们的DTD。.page是一个tapestry page的specification,.application则是整个application的spec。.page中描述的component就是.html模板中可以用jws标记调用的那些。现在的软件公司普遍还是很缺人,自己有本事就不怕没饭吃。你怎么也算是名门闺秀,不用太担心,理工的牌子还是管用的。
      

  9.   

    在tutorial和SumExample中都有这样的超链接:<a href="hello">Hello World</a>这是$home$/webapps/tutorial目录下的index.htm中的句子,而它所指向的hello是在$home$/webapps/tutorial/WEB-INF/classes/hello中的home.htm.我在我的index.htm中同样用<a href="welcome">Welcome</a>去指向相对路径相同的地方的home.htm却不行,为什么?在SumExample中有3个xml写的文件,分别是.classpath、.project、.tomcatplugin。它们有什么作用,好像不是为了上边的问题建立的。因为在tutorial例子中没有这些文件。
      

  10.   

    你的web.xml没有配置好吧?tutorial里,hello这个地址是被指向一个tapestry application的:  <servlet>
        <servlet-name>hello</servlet-name>
        <servlet-class>net.sf.tapestry.ApplicationServlet</servlet-class>
        <init-param>
         <param-name>net.sf.tapestry.application-specification</param-name>
         <param-value>/tutorial/hello/HelloWorld.application</param-value>
        </init-param>
       <load-on-startup>0</load-on-startup>
      </servlet>  <servlet-mapping>
        <servlet-name>hello</servlet-name>
        <url-pattern>/hello</url-pattern>
      </servlet-mapping>检查一下你自己的配置,有没有把welcome的地址指向你的application?那三个文件是Eclipse的项目描述文件,跟程序本身没关系。
      

  11.   

    我现在按照他tutorial中的例子编写了一个hello页面,web.xml也设置了,其他的几乎可以说是拷贝他的原文件。但是还是出现异常,如下:
    net.sf.tapestry.ApplicationRuntimeException 
    Could not locate resource /MyFirstTapestry/hello/Home.page in the classpath. 
    这可能是什么原因?现在,比如说我,想在软件公司找个工作,得具备那些条件,或者掌握些什么东西?
    我们宿舍一个同学现在在方正做测试,是不是一开始去都是做测试?
      

  12.   

    Home.page不在classpath上。默认情况下,WEB-INF/classes目录是classpath的一部分。你的文件放在这里吗?“一开始去都是做测试”?难道测试很低级吗?《人件》里介绍了一个著名的“黑衣团队”——把测试做好也是极其不容易的,并不比做开发容易。这是两条完全不同的技术路线,没有高下之分。具备什么条件……计算机系本科毕业的,基础知识也差不多了,还需要什么条件,恐怕因人、因公司而异。如果我面试人,会希望他交流的能力好一点、为人热心一点、人品好一点、聪明一点、长得帅一点。别的公司会有什么要求,我就不知道了。我估计很少有公司会要求你懂什么什么技术、能完成什么什么任务的。刚毕业出来的都是菜鸟,谁都不会希望新手来拯救世界。
      

  13.   

    我的文件tomcat/webapps/MyFirstTapestry/WEB-INF/classes/MyFirstTapestry/hello/Home.page昨天我还以为测试很低级,因为就连我们上课都没有怎么讲测试(只有《软件工程》中提到了一些)。而且听同学说测试顶没意思,有专门的软件生成代码,他只是往里面填几个东西。今天上《OOAD和UML》老师说的和你说的差不多。他讲了很多现在学校学习的东西和以后工作所用到的东西之间存在地巨大差距,居然和我们平时抱怨的差不多,甚至更深入,因为我们毕竟对以后毕业了工作的事了解的不多。虽然听的人很寒心,但启发的挺大。也许,像你说的一样,有这样的老师是我们的幸运吧。
      

  14.   

    我的tomcat好像出问题了,运行的时候到了出现Apache tomcat/4.1.18后就出现了异常,然后我设置的进我的MyTapestry的路径就进不去了。重装后还是这样。这个可能是怎么回事?
    还有,怎么生成.war文件?
      

  15.   

    问一下Schlemiel(维特根斯坦的扇子),
    tapestry 3.0中为何找不到:
        org.apache.tapestry.engine.SimpleEngine是否改成别的类了?
      

  16.   

    Tapestry 3.0的包名是以org.apache.tapestry开头的,SimpleEngine已经被取消掉了。3.0的默认配置不需要指定Engine的类名,你看看tutorial的配置就知道了。你遇到的问题,可能就是错误地配置了这个类。Tomcat在加载webapp时会调用controller servlet的init方法(具体名字我不记得了),如果找不到controller就会终止加载。用Eclipse可以导出war文件,其他的工具(例如JBuilder)应该也可以。war其实就是zip,只不过加上了manifest而已。按部就班的测试注定会一无所获,因为程序员都是顶聪明的人,他们不会把明显的bug留给测试组。只有天才的头脑和超越常规的测试,才能真正收到效果,并真正地折磨程序员。从这个意义上来说,测试的难度比开发更大,这恐怕也是大多数测试人员只能停留在低级水平的原因。昨天偶然把《人件》拿起来翻一翻,有句话很有感触:尽管高科技的躁狂让我们以为自己与众不同,但我们的工作中仍然有80%是“低科技”的——例如需求分析,例如调试,例如数据库建模,这些东西在过去10年中没有本质性的变化,未来10年中也不会有。而更普遍因此也更容易被忽视的素质,例如团队精神,例如求知的欲望,例如与人交流的能力,更是放之四海而皆准的,软件人才没有任何特殊性可言。所以说,不用担心毕业后的事情,技术只是蛋糕上的那颗樱桃而已。
      

  17.   

    现在tomcat好了。以前是用一个.bat文件来设置环境变量的,现在把中间的命令手动打了一遍就好了,不知道为什么。但是现在又出现这样的异常:
    net.sf.tapestry.ApplicationRuntimeException 
    Could not find template for component Home in locale zh_CN. 
    这又是什么问题?
      

  18.   

    现在好了,原来我的文件名是Home.htm,现在我改成Home.html就可以了。难道这两个有差别吗?对于毕业后,或者说现在,我一直都在徘徊,毕业了是工作,还是考研?这个问题从上个学期放假就一直缠绕着我。本来我是打算考研的,以为读了研究生就能学到更多的东西,以后工作了,可能会更有用,因为本科期间真的觉得没有学到什么东西。但是随着我对我们学校一些研究生的了解,他们能学到的东西也不是很多。有些人整天都是闲着,有些人自己找点活干,或是导师给分点活干。我觉得倒不如出去工作来的实际。所以现在还在犹豫。考研的话,这个学期得为考研做准备,找工作的话,我想用这个学期自己学点东西,因为我们现在出去找工作的话,实在是没有什么可称道的,很有可能面试的人问不了几个问题就卡壳了。
      

  19.   

    Tapestry以.html文件作为page的模板,所以文件的后缀是有区别的。
      

  20.   

    我有些糊涂了,请帮忙看看有什么不同:
    <!--Home.html中的两个输入框-->
      您的姓名:<input jwcid="inputName"><p>
      您的E-mail:<input jwcid="inputEmail"><p> 
    <!--Home.page中相对应的两个配置-->
    <component id="inputName" type="Text">
        <binding name="name" expression="name"/>
    </component>
    <component id="inputEmail" type="Text">
        <binding name="email" expression="email"/>
    </component>结果是第一个输入姓名的通过了,第二个输入Email的却不能通过,显示:
    Could not parse template /MyFirstTapestry/welcome/Home.html.
    Tag <input> on line 20 is a dynamic component, and may not appear inside an ignored block.(输入Email为第20行,输入姓名为16行)我觉得这两个输入框都是一样的,为什么第一个能通过,第二个不能.而且在编写的java代码里它们也都是相似的.
      

  21.   

    另外还有一个问题:<component>中的<binding>属性中的name指代什么意思,expression又指代什么意思?它们是任意指向,还是指向Java中的一个方法?如果是任意指向,那么.page文件又是怎样和Java程序联系起来的呢?
      

  22.   

    第一个问题:你的<input> 标签没有结束,所以Tapestry认为第二个<input>标签被包容在第一个之中了。写惯HTML,往往会忘记给标签打上结束符。应该这样写:
    <input jwcid="inputName" />第二个问题:<binding>中的name属性是将要出现在jws标签里的值,expression属性是JavaBean的bean-property,根据JavaBean命名规则(实际上是OGNL表达式)绑定到JavaBean的方法。譬如expression="email"就会绑定到getEmail()方法。
      

  23.   

    现在好了!我的第一个有交互的page终于做出来了!我们交作业的时间快到了,我这几天都在写文档(我们的作业就是交文档)。虽然Tapestry还有好多地方没有明白,但是还是要先把作业交了。我就先把我现在明白的这些交了吧,其他的地方用翻译的文档填了。谢谢Schlemiel(维特根斯坦的扇子)!我以后还会继续学它的,希望有什么问题可以再问你。
      

  24.   

    恭喜。
    我对tapestry有极大的兴趣,可惜时间太紧,工作中也不得不继续用struts,所以我现在对它的了解也不过如此而已。希望你能研究得更深入,可以来教我。
      

  25.   

    呵呵。你太谦虚了,我现在还什么都不懂呢。只不过,可以用现在地这点东西来唬唬老师(其实他也不懂,呵呵)。我现在还在犹豫是考研还是找工作,考研的话这个学期就没有时间了;找工作的话,就想自己学点东西,这样的话就可以好好学学Tapestry了,也算是学了点东西。:)