bubbletea

 

暑期J2EE实训心得

突然想起这个Blog是java类的,那偶就放篇有关J2EE的文章先垫垫底巴,要不然一开始就是C++/C#有点说不过去了,要被管理员k的。
此文在原来的Blog上有:http://bubbletea.blogdriver.com/bubbletea/886045.html  有专门的代码编辑,看起来专业多了。




今天回到寝室在88 military版看了会赵一曼的故事(好惨),会来瞄了下代码就找到错误了,原来是少了这行:
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>

天知道!!!怪不得逻辑上找了半天都没问题!!!

这里再把问题交代一下:

 1        <logic:notEqual value="0" name="reportDefForm" property="defID">    
 2            <html:form action="/reportDefParameters">
 3                <html:hidden property="defID"/>
 4            <table align="center" id="para_table">
 5                <tr>
 6                    <td colspan="5"><bean:message key="reportdefparameters.sql"/></td>
 7                </tr>
 8                <tr>
 9                    <td colspan="5" ><html:textarea property="queryString" cols="100" rows="4" styleId="queryString"/></td>
10                </tr>
11                <tr>
12                    <td colspan="5" align="center"><bean:message key="reportdefparameters.parameterslist"/></td>
13                </tr>        
14                <tr>
15                    <td><bean:message key="reportdefparameters.parameterindex"/></td>
16                    <td><bean:message key="reportdefparameters.parametername"/></td>
17                    <td><bean:message key="reportdefparameters.dataType"/></td>
18                    <td><bean:message key="reportdefparameters.defaultvalue"/></td>
19                    <td><bean:message key="reportdefparameters.description"/></td>    
20                </tr>
21                
22                <logic:notEmpty name="reportDefParametersForm" property="parameters">
23                    <logic:iterate id="parameter" name="reportDefParametersForm" property="parameters" indexId="pid">
24                        <tr>
25                            <td><html:text name="parameter" property="indexID" readonly="true"/></td>            
26                            <td><html:text name="parameter" property="name" styleId="paraName"/></td>
27                            <td>
28                                <html:select name="parameter" property="dataType">
29                                      <html:options collection="DATATYPES" labelProperty="label" property="name"/>
30                                </html:select>
31                            </td>
32                            <td><html:text name="parameter" property="defaultValue"/></td>
33                            <td><html:text name="parameter" property="description"/></td>            
34                        </tr>
35                    </logic:iterate>
36                </logic:notEmpty>
37            </table>
38            </html:form>        
39        </logic:notEqual>    
40


上面代码,初进页面明显reportDefForm的defID为0,自然进不了tag的context,即使进去了,也进不了内层的logic判断。我的错误是错误中的错误,之所以这样说因为明明看到进入了第一个logic判断(看到bean:message输出),却没注意,以为正常。直到进入第二个logic并且代码恰巧在jboss上输出错误信息时仍未发觉,一直以为是第二个逻辑写错了。于是拉来老师帮忙调了半天,把老师害惨了。。。(这几天老师经常被我这种低级错误害-__-)不怪老师看不出来,这种错误只能用ws来形容了.

当问题变态时早就该想到是低级错误惹的,这里就是少了对logic tag的声明。当然这里也有eclipse向导的错,自动生成的jsp文件里只有对html和bean tag的申明。不过归根到底是我的错,要记得eclipse也有傻的时候。。。

这几天我犯的错误很多都是仔细点,有记性点就能避免的。该打!!

有一次hibernate插数据,怎么也插不进去,后来才发现数据库用的是innoDB engineer,老师费了好大劲才查出来的.还有次用hibernate打成的sar包给ejb用查many to many的数据总只查到第一条关联数据(一个学生对应多门课程),后来才发现是eclipse自动生成的equal()方法有问题。。。又是老师的功劳(据说那天对代码对到2点钟,好敬业),另外eclipse又傻了一次。又有一次struts + ejb + dao + hibernate老是出现arpache.org....logging错误,出离愤怒了!!!老师以为是哪俩个包之间冲突了,后来自己发现是又是一个低级错误:enterprise应用里的application.xml文件里的导入包module通通都没写,昏倒。不过这个教训告诉我,问题的原因往往不是服务器之类的工具告诉你的那个方向,很多时候是一个想不到的方向的错误产生的级联的错误,到表现出来已经是面目全非了。

这段时间还遇到很多错误,昨天把hibernate里jboss-services的的多参数分开写成多个MapResources属性了,不了解啊不了解。更低级的错误是sar包忘部署了,这个倒是jboss部署时就明确显示错误。当然偶也看到其他人的一些错误,都是很配置啊(如数据库驱动的版本太老,没放对位置,两个驱动放在一起jboss去找时有冲突。ejb的Util中gethome方法中要修改COMP_NAME为JNDI_NAME,与jboss.xml和ejb-jar.xml中的ejb-name对应。还有好几个竟然ant坏了的。jdk1.5要和j2ee1.4搭配,jdk1.4要和j2ee1.3搭配,不然有问题,后者稳定,我都用的后者)什么的问题。

也许因为是j2ee倡导component architecture的原因,所以components之间的连接很多,大多是些配置文件的问题,多检查几遍才是王道,要是这个错了,容器爆出的错就五花八门了,代码的错反倒是好检查的多,是什么的错就报什么,还是有点针对性的。总之一句话:很多的问题是自己代码和配置本身的问题,不要过多的怀疑环境。(我们老师说的,真是好老师啊)

还有个问题,有些部件的测试是个问题,如hibernate虽然可以用Factory测试,但打成sar包就很难测了(这种情况下只可能是jboss-services有问题),ejb也一样,都要在jndi服务器上才能用,听说过cactus能部署虚拟环境,以后看下好不好,无论如何经过测试的部件拿来用才放心,单元测试是王道!!

我这个人看来这几天要反思反思,低级错误的原因很多是不仔细,可能在机房做没一个人在寝室做容易集中全力,心思一放到别的地方就散了,聚不来了。另外错误还是要总结的,避免以后犯同样的错。另外我hibernate的表连接还不是很熟,struts的tag lib也不是很熟,一定要熟。

想起来今天还犯了一个错(错真多),竟然忘了写ActionForm,但是jsp里已经写了.

1. 所使用的软件之间版本不兼容造成的,如jdbc驱动,jdk1.5,j2ee1.4的版本新旧的影响。
2. 链接不同组件之间的配置文件的问题,如环境变量中%HOME%的位置,xml文件的内容。
3. 软件本身的配置,如数据库中innoDB的数据受保护,不能被改写和插入。
4. 很多的问题是自己代码和配置本身的问题,不要过多的怀疑环境。

posted on 2005-10-20 11:24 Roger的Blog 阅读(4261) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航:
 

导航

统计

常用链接

留言簿(1)

随笔档案(13)

搜索

最新评论

阅读排行榜

评论排行榜