Oracle9i+Win2000初装调试Jdon2.5总结(详述)

04-03-02 yironz

我也是Jive的初学者,在windows2000上面安装调试了jdon2.5,研究解决了一些安装初用时遇到的问题,拿出来和广大志同道合者一起研究一下,希望能给其他初学者一些帮助,更希望高手指点。

运行环境. Oracle9i+Tomcat3.2+Win2000Server+J2se1.4
下载地址:http://freedomworks.vicp.net/projects/studyjive/download/others/jivejdon-2.5.rar
遇到问题:

一,在论坛设置界面的中文乱码问题
没有解决,浏览器对这些页面默认会是“西文”手动改成 "GB2312" 可以显示中文。

二,post.jsp无法发贴的问题
问题发现:
解决:<jsp:useBean id="myEnv" scope="application" class="com.jdon.web.UserEnvFront"/>
研究:myEnv需要初始化,但在这一页没有,不知道这样改有没有问题

三,中文问题
问题发现:源代码的编码方式是ISO8859_1,系统为GBK中文,Oracle输出也为中文GBK
所以当在如上说明的环境中运行论坛的时候,在写入数据库重时会是乱码,数据库中正确中文输出到页面时也是乱码。原因是
<%@ page contentType="text/html;charset=ISO8859_1" %>与输出的GBK编码不匹配。当把ISO8859_1改为GBK时页面中的时间等信息又变成了乱码,因为它们是ISO8859_1的
解决:
方案I:
1, 获取表单信息写入数据库之前转换为GBK或gb2312编码。(因为getParameter得到的是“ISO8859_1的编码”)
String body = ParamUtils.getParameter(request,"body");
if(body!=null)
body = new String(body.getBytes("ISO8859_1"),"GBK");
2, <%@ page contentType="text/html;charset=GBK" %>
3, 页面上再出现乱码的地方也进行 ISO8859_1向GBK的转换。
方案II:
1,2,同上,
3,将论坛源代码在jbuilder中进行encoding设置成GBK或default,重新编译,代码中的中文就将变成GBK,然后论坛上的时间显示等地方的乱码就ok了。
研究:在论坛中还有写入文件比如 jive_config.xml 时会出现问题,也是GBK和ISO8859_1的问题,弄清中文实际编码,和页面显示的编码做相应转换就行。
以上方法显得拙笨,本人初学愿与大家一起探讨。

四,post.jsp匿名发贴问题

问题发现:对于可以匿名发贴的论坛匿名用户发贴时出现空指针错误
解决:修改为如下:
防止pegeUser为空的情况,
<a href="#" onclick="MM_openBrWindow('upload.jsp?<%if(pageUser!=null){ %>pic=<%out.print(pageUser.getUsername());}%>','width=450,height=400,scrollbars=yes')"
><img src="images/image.gif" width="38" height="22" alt="插入图片" border="0" ></a>
</td>
<td><img src="images/blank.gif" width="5" height="1" border="0"></td>
<td>
<a href="#" onclick="MM_openBrWindow('uploadfile.jsp?<%if(pageUser!=null){ %>pic=<%out.print(pageUser.getUsername());}%>','width=450,height=250,scrollbars=yes')"
><img src="images/file.gif" width="46" height="22" alt="插入附件" border="0" ></a>
</td>
研究:这样改正以后匿名用户可以发贴,但没有上传的功能。

五,上传问题
问题发现:在发贴个人设置页面里面的上传图片和文件功能启动时会在弹出页面中报错:
javax.servlet.ServletException: MultipartRequest()Not a directory: /home/bqlr/jive/upload/
解决: 这是个路径设置问题,在jiveHome/jive_config.xml中修改参数设置:
<upload>
<dir>/home/bqlr/jive/upload/</dir>
<relurl>upload/</relurl>
</upload>
改为:
<upload>
<dir>你的jive目录/upload/</dir>
<relurl>upload/</relurl>
</upload>
这个目录用来存放上传的文件或图片.
研究:论坛管理中应该有进行设置的地方,可能jdon2.5中没有,或我没找到。

六,发贴统计问题
问题发现:/jive/usermessages.jsp?user=1页面中遇到的问题,java.sql.SQLException: 对只转发结果集的无效操作: absolute
解决:是JDBC-ResultSet-cursor的问题,我回溯到一个类:com.jivesoftware.forum.database.DbUserManager.java
在大约360行的地方修改:
原 pstmt = con.prepareStatement(ALL_USER_MESSAGES);
改为: pstmt = con.prepareStatement(ALL_USER_MESSAGES,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
重新编译使用新的class问题就解决了。
研究:好像:jdbc的某个版本直接可以解决这个问题具体内容不详。经测试说在mysql下面是不发生这个问题的。

yironz
2004-03-02 10:12


二,post.jsp无法发贴的问题
问题发现:
解决:[jsp:useBean id="myEnv" scope="application" class="com.jdon.web.UserEnvFront"/]
研究:myEnv需要初始化,但在这一页没有,不知道这样改有没有问题

三,中文问题
问题发现:源代码的编码方式是ISO8859_1,系统为GBK中文,Oracle输出也为中文GBK
所以当在如上说明的环境中运行论坛的时候,在写入数据库重时会是乱码,数据库中正确中文输出到页面时也是乱码。原因是
[%@ page contentType="text/html;charset=ISO8859_1" %]与输出的GBK编码不匹配。当把ISO8859_1改为GBK时页面中的时间等信息又变成了乱码,因为它们是ISO8859_1的
解决:
方案I:
1, 获取表单信息写入数据库之前转换为GBK或gb2312编码。(因为getParameter得到的是“ISO8859_1的编码”)
String body = ParamUtils.getParameter(request,"body");
if(body!=null)
body = new String(body.getBytes("ISO8859_1"),"GBK");
2, [%@ page contentType="text/html;charset=GBK" %]
3, 页面上再出现乱码的地方也进行 ISO8859_1向GBK的转换。
方案II:
1,2,同上,
3,将论坛源代码在jbuilder中进行encoding设置成GBK或default,重新编译,代码中的中文就将变成GBK,然后论坛上的时间显示等地方的乱码就ok了。
研究:在论坛中还有写入文件比如 jive_config.xml 时会出现问题,也是GBK和ISO8859_1的问题,弄清中文实际编码,和页面显示的编码做相应转换就行。
以上方法显得拙笨,本人初学愿与大家一起探讨。

四,post.jsp匿名发贴问题

问题发现:对于可以匿名发贴的论坛匿名用户发贴时出现空指针错误
解决:修改为如下:
防止pegeUser为空的情况,
[a href="#" onclick="MM_openBrWindow('upload.jsp?[%if(pageUser!=null){ %]pic=[%out.print(pageUser.getUsername());}%]','width=450,height=400,scrollbars=yes')"
][img src="images/image.gif" width="38" height="22" alt="插入图片" border="0" ][/a]
[/td]
[td][img src="images/blank.gif" width="5" height="1" border="0"][/td]
[td]
[a href="#" onclick="MM_openBrWindow('uploadfile.jsp?[%if(pageUser!=null){ %]pic=[%out.print(pageUser.getUsername());}%]','width=450,height=250,scrollbars=yes')"
][img src="images/file.gif" width="46" height="22" alt="插入附件" border="0" ][/a]
[/td]
研究:这样改正以后匿名用户可以发贴,但没有上传的功能。

五,上传问题
问题发现:在发贴个人设置页面里面的上传图片和文件功能启动时会在弹出页面中报错:
javax.servlet.ServletException: MultipartRequest()Not a directory: /home/bqlr/jive/upload/
解决: 这是个路径设置问题,在jiveHome/jive_config.xml中修改参数设置:
[upload]
[dir]/home/bqlr/jive/upload/[/dir]
[relurl]upload/[/relurl]
[/upload]
改为:
[upload]
[dir]你的jive目录/upload/[/dir]
[relurl]upload/[/relurl]
[/upload]
这个目录用来存放上传的文件或图片.
研究:论坛管理中应该有进行设置的地方,可能jdon2.5中没有,或我没找到。



banq
2004-03-03 09:59

不错,如果在有代码的部分,发贴时使用Code就更好,顶。

yironz
2004-03-03 15:57

在jdon2.5的下载说明:
本软件在linux+jdk1.4+tomcat 4以上环境运行正常,中文显示正常
那我现在遇到的问题都是因为windows2000,及oracla带来的吗
可以推测中文问题是这个原因产生的,那么post.jsp页面的问题也是吗?
请jdon高手指点。