一个struts的问题。高手近来看看。不会的捧个人场up有分。
这个问题是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窗口没有任何出错信息。
到这里我真有点懵了。各位高手如果遇到过类似问题的解决方法或者测试方法请不惜笔墨,详加指点。分数多多的给!