哪们好心人能帮我调试一个JSP网站源程序代码呀,能运行出来看到界面就行,急急急!本人接触JSP没多久,目前遇到一个访问数据库的问题,提示什么“空指针”,查了很多资料都没搞定,由于这两天就行做出来,所以时间很紧...哪位好心人如有时间就帮个忙吧...先谢了!!!!  平台与环境:xp+tomcat6+struts+jsp源代码在以下网址:http://access911.net/csdn/FileDescription.asp?mdb=2009-4-30&id=57请调试好后压缩发到我邮箱:[email protected]     万分感谢!!! 如果今天晚上12点前做好的,另加分奖励了!

解决方案 »

  1.   

    用到的是access数据库吗?我没有装这个,把安装文件发过来吧
      

  2.   

    D:\tomcat5.5.17\webapps\bookstore1\WEB-INF\lib\
    少了一个jar包,commons-dbcp-1.2.1.jar,加上这个jar包之后还是有错误,
    我正在帮你调试
    咱们共同努力吧,你自己也再调试一下看看,比比谁先调试成功
      

  3.   

    5楼朋友,我这里不欢迎你!拿了分还想拿钱,不厚道!况且这里是技术专区,而不是市场专区!8楼的朋友,首先谢谢你!本人肯定正在看代码或者网上找原因。您说的包我已经加了:commons-dbcp-1.2.2.jar和commons-pool-1.3.jar 
    我用的是tomcat6.18,tomcat提示如下:org.apache.struts.action.RequestProcessor processException
    警告:Unhandled Exception thrown:class java.lang.NullPointerException 
    (本人觉得警告信息应该没问题!)
    浏览器错误代码如下:
    javax.servlet.ServletException: java.lang.NullPointerException
    org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:535)
    org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:433)
    org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
    org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
    org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
    root cause java.lang.NullPointerException
    BookStore.DB.<init>(DB.java:16)
    BookStore.BookSearchAction.execute(BookSearchAction.java:40)
    org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
    org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
    org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
    org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
    note The full stack trace of the root cause is available in the Apache Tomcat/6.0.18 logs.
      

  4.   

    本人觉得是:DB.java里的ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY
    出问题了。如下红色标示因为这是oracle的游标控制方式,sql Server2000 不清楚怎么改正。毕竟两家公司有兼容问题。public ResultSet OpenSql(String sql) {
    try {
    Statement stmt = connect.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
    rs = stmt.executeQuery(sql);
    System.out.println("sql:        "+sql);

    catch(SQLException ex) { 
    System.out.println("sql:        "+sql);
    ex.printStackTrace();
    }
    return rs;
    }
      

  5.   

    ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY没有错误,
    是你的数据库里面的表是costomer,而程序里面不一致,表是storeuser,你把程序里面的storeuser全部换成costomer就对了,就不出现空指针异常了,
      

  6.   

    现在又发现一个错误:警告:Unhandled Exception thrown:class java.lang.NullPointerException 
    这个问题刚刚解决:
    解决法:捕获异常,以下面这个类为例,其他的类也都要加上同样的捕获异常的代码:
    package BookStore;import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import org.apache.struts.action.Action;
    import org.apache.struts.action.ActionForm;
    import org.apache.struts.action.ActionForward;
    import org.apache.struts.action.ActionMapping;
    import org.apache.struts.action.ActionErrors; import javax.servlet.ServletContext;
    import javax.sql.DataSource;
    import java.sql.Connection;
    import java.sql.Statement;
    import java.sql.ResultSet;
    import java.sql.SQLException;import java.util.*;
    import javax.servlet.http.*;
    import org.apache.struts.action.DynaActionForm;
    import org.apache.struts.action.ActionMessage;
    import org.apache.struts.action.ActionMessages;public final class BookBuyAction extends Action{  
    public ActionForward execute(
    ActionMapping mapping,
    ActionForm form,
    HttpServletRequest request,  
    HttpServletResponse response) throws Exception {

        DynaActionForm bookIdForm = (DynaActionForm) form;         
    Integer bookId = (Integer)bookIdForm.get("bookId");

            HttpSession session = request.getSession();
        ServletContext context = servlet.getServletContext();
    DataSource dataSource = 
    (DataSource)context.getAttribute(Constants.DATASOURCE_KEY);

            DB db = new DB(dataSource);
    String PageForward;
            
    ShopCart compareShopCart = new ShopCart();
        Vector shopCartList=(Vector)session.getAttribute(Constants.BOOK_SHOPCART_KEY);
    if (shopCartList==null) {
    shopCartList = new Vector();
    }
    ActionMessages errors = new ActionMessages();
    boolean bBought=false;
         if(shopCartList != null ){
            for(int i = 0;i < shopCartList.size();i++){
            compareShopCart = (ShopCart)shopCartList.get(i);
          if (compareShopCart.getId()==bookId.intValue()){
          bBought=true;
          }
          }
          }
    try{
    if (!bBought){
    Book book = new Book();
    book = Book.GetDetail(db,bookId.intValue());

    ShopCart shopCart = new ShopCart();

    shopCart.setId(bookId.intValue());
    shopCart.setName(book.getName());
    shopCart.setSalePrice(book.getSalePrice());
    shopCart.setCount(1);
    shopCartList.addElement(shopCart);
    session.setAttribute(Constants.BOOK_SHOPCART_KEY,shopCartList);
      PageForward="toBookShopCart"; 
       
    }
    else{
                errors.add(ActionMessages.GLOBAL_MESSAGE,
                               new ActionMessage("errors.alreadyBought"));
    if (!errors.isEmpty()) {
    saveErrors(request, (ActionErrors) errors);

      PageForward="toWrong";  
    }
    }catch (ClassCastException e) {            return null;        }
    db.close();
        return (mapping.findForward(PageForward));
      }
    }
      

  7.   

    你的数据库里面book表和orderdetail等等表里面的big5类型都需要改为numeric类型,因为big5类型会报错,程序不能识别big5
      

  8.   


    多谢了!我正在更正当中...不该犯“表换了没把程序中表名更新的低级错误”呀...至于big5数据类型的问题,真的要好好查下资料理解下...顺便问句:tyuiouio,你能够运行出来没有?我正在改!回复哦!
      

  9.   


    多谢!记得把程序里面的storeuser全部换成costomer就是了。tyuiouio,搞定了记得传一份给我,万分感谢!
      

  10.   

    现在整个界面我已经调试出来了,但是还有一些小问题:
    bookShow.jsp里面取得的值是null<%
    Book book = (Book)session.getAttribute(Constants.BOOK_DETAIL_KEY);
    %>
    上面这句需要处理,取出的都是null
      

  11.   

    我感觉是你的数据库中的类型和你代码中的不一致造成的对于NULL指针的错误,楼主可以断点测试一下
      

  12.   

    数据库以前是orecle的,我改成sql server了,数据类型肯定变了。以下是原数据库脚本和更改后的数据库脚本:http://access911.net/csdn/FileDescription.asp?mdb=2009-5-2&id=1tyuiouio,,能先传一份过来看看,好吗?万分感谢!
      

  13.   

    我发现越调问题越多了,
    你的order.java也有问题,你的sql语句错了,用了Oracle里面的东西,
    sysdate是Oracle里面的,而Microsoft sql server里面是getdate();取当前日期在MSSQL中是“SELECT GETDATE()”,在MYSQL中是“SELECT NOW()”,在Oracle中是“SELECT SYSDATE FROM DUAL
      

  14.   

    [color=#FF0000]tyuiouio,我这怎么就运行出不来呢?茫然呀...[/color]还有就是bookShopCartAction.java 那个Book构造方法肯定有问题,不应该在这出现,要出现也是其它方式.order.java里的count要改成counts哦(算总价格相乘的时候),
    因为数据库里与Ms sql有关键字有冲突,所以改成counts了。