一个struts的问题。高手近来看看。不会的捧个人场up有分。

fightplane 2004-01-17 05:21:46
这个问题是wrox出版的jsp web 编程指南的最后的那个关于旅游网站的例子。
我大体说一下现象,希望大家帮我分析一下。
系统环境:win2k,tomcat5.0.16,mysql,struts1.0。
当我访问http://localhost:8080/begjsp-ch13/home.do的时候,网页没有任何显示。白板一块,什么都没显示,而且tomcat窗口没有任何出错信息。
-------------------------------------------------------------
struts-config.xml中关于这部分的设置是:
-------------------------------------------------------------
<action path="/home"
type="com.wrox.tourism.actions.HomeAction"
unknown="true">
<forward name="success" path="/home.jsp" />
</action>
------------------------------------------------------------
HomeAction.java的文件内容如下:
------------------------------------------------------------
package com.wrox.tourism.actions;

/**
* Created by IntelliJ IDEA.
* User: Administrator
* Date: 2004-1-9
* Time: 9:17:45
* To change this template use Options | File Templates.
*/
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionError;
import org.apache.struts.action.ActionServlet;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletException;

import java.io.IOException;

import java.sql.Connection;
import java.sql.SQLException;

import java.util.Collection;

import com.wrox.tourism.db.util.ConnectionPool;
import com.wrox.tourism.db.AttractionDAO;

public class HomeAction extends Action{

private ConnectionPool pool;

public HomeAction(){
pool = ConnectionPool.getInstance();
System.out.println("Hello world");
}

public ActionForward preform(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception,ServletException, SQLException{

Connection con = null;

try{
con = pool.getConnection();
AttractionDAO attractionDAO = new AttractionDAO(con);
Collection col = attractionDAO.findAll();
request.setAttribute(BeanNames.ATTRACTION_LIST,col);
return mapping.findForward("success");
}catch(SQLException e){
e.printStackTrace();
throw new RuntimeException("Unable to get connection.");
}finally{
try{
if(con != null)
con.close();
}catch (SQLException e){
throw new RuntimeException(e.getMessage());
}
}

}
}
-------------------------------------------------------------------
当然这部分程序要调用好多其他的类。我在这里就无法一一贴出了。请大家注意,我为了测试最终是否找到了这个类。我在这部分程序中加入了 System.out.println("Hello world");
结果在tomcat窗口依然没有显示Hello world而且没有任何出错信息。
当时我以为是home.jsp文件的问题。可是我直接访问http://localhost:8080/begjsp-ch13/home.jsp可惜显示出正常页面。当然变量显示部分没有任何信息。
我觉得问题出在HomeAction这里,于是我屏蔽了部分信息。
try{
con = pool.getConnection();
// AttractionDAO attractionDAO = new AttractionDAO(con);
// Collection col = attractionDAO.findAll();
// request.setAttribute(BeanNames.ATTRACTION_LIST,col);
return mapping.findForward("success");
}catch(SQLException e){
e.printStackTrace();
throw new RuntimeException("Unable to get connection.");
}finally{
try{..........................
只保留了return mapping.findForward("success");部分。这样程序运行的时候,不做什么操作就直接寻找success对应的页面了。可是访问:http://localhost:8080/begjsp-ch13/home.do的时候,网页还是没有任何显示,白板一块,什么都没显示,而且tomcat窗口没有任何出错信息。
到这里我真有点懵了。各位高手如果遇到过类似问题的解决方法或者测试方法请不惜笔墨,详加指点。分数多多的给!
...全文
31 33 打赏 收藏 转发到动态 举报
写回复
用AI写文章
33 条回复
切换为时间正序
请发表友善的回复…
发表回复
Leemaasn 2004-01-18
  • 打赏
  • 举报
回复
楼主,我吃饭回来了。
嘿嘿
:)


我刚刚看了一下你所描述的。
估计了以下几种情况,你自己看看:

1、你的Struts版本不对。比方,你写的程序是1.1的,但你的库是1.0的。会有这种情况;

2、你的程序没有正常返回,所谓没有正常返回,
就是指没有执行return mapping.findForward("success");
如果没有执行return mapping.findForward("success");它就不会返回你的home.jsp,

3、你的Struts-config。xml文件定义重复。有多个返回出口
(这点应该不大可能,我只是尽可能列出所有情况)

另外,楼主描述问题时,尽可能提前说明意图,
你这样贴了这么多的说明文字,中间又插了步骤,
很容易让别人一片茫然。。。
(我就看了糊涂。。。)

如果楼主有可能,
请回帖,重新描述一下步骤和现象,
源程序,如果有大改动就贴吧。。。


祝楼主和楼上各位,猴年爬爬高
yupingping 2004-01-18
  • 打赏
  • 举报
回复
up
gong1 2004-01-18
  • 打赏
  • 举报
回复
解决了吗?
^_^
judyhui7612 2004-01-18
  • 打赏
  • 举报
回复
把你的jsp貼出來看一下,說不定是jsp的問題
darthin 2004-01-18
  • 打赏
  • 举报
回复
up
sandyen 2004-01-18
  • 打赏
  • 举报
回复
我昨天就知道了,你把perform写成preform了
zeusguitar 2004-01-18
  • 打赏
  • 举报
回复
up
whxhn 2004-01-18
  • 打赏
  • 举报
回复
学习
icebound1 2004-01-18
  • 打赏
  • 举报
回复
up
icebound1 2004-01-18
  • 打赏
  • 举报
回复
up
lu8088 2004-01-18
  • 打赏
  • 举报
回复
up
LYNLYN 2004-01-18
  • 打赏
  • 举报
回复
UP
luckybeggar 2004-01-18
  • 打赏
  • 举报
回复
up
fightplane 2004-01-18
  • 打赏
  • 举报
回复
stonecsdn(东东)?
你真的是一个优雅的胖子么?
哈哈!开个玩笑:)
我喜欢你的网站!多谢过来捧场。
fightplane 2004-01-18
  • 打赏
  • 举报
回复
sandyen(杉叶)一语道破天机。
我昨天就知道了,你把perform写成preform了
-------------------------------------------
靠!intellij IDEA竟然没有发现这个低能错误。而且还竟然能编译通过。
我晕!
谢谢各位的关心和捧场。
同时祝贺各位2004年工作顺利,身体健康!
Leemaasn
多谢你的关注和支持!
希望有机会和你多多接触:)
我的MSN:fightplane@hotmail.com
我愿意和所有喜欢java的朋友交往,让我们共同进步!
tangyongtgyg 2004-01-17
  • 打赏
  • 举报
回复
up
Leemaasn 2004-01-17
  • 打赏
  • 举报
回复
to:u25(天堂放逐)
你的JBuilder自带的Struts可能版本比较老,
可能是1.0的。
u25 2004-01-17
  • 打赏
  • 举报
回复
对不起我拼写错误,应该是execute,
不过不知楼上的朋友看没看struts的源代码,execute方法中就是执行的perform方法.只不过execute是throws Exception,而perform是throws IOException,ServletException,
我在JBuilder中用的struts中没有execute方法.
u25 2004-01-17
  • 打赏
  • 举报
回复
我找到了问题的所在,你必须在你的Action中抛出IOException,不要直接throws Exception,我还是用了perform,用excute没有通过,不知是不是struts版本的缘故,我感觉struts还是有bug
改为
public ActionForward perform(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws IOEception,ServletException, SQLException{

//....
return mapping.findForward("your_perform");
}
bbshero 2004-01-17
  • 打赏
  • 举报
回复
up
加载更多回复(13)

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧