`
nbnxyuyun
  • 浏览: 5827 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

图书管理系统无法登陆

阅读更多
最近在研究一个图书管理系统,在tomcat 7 webapps下布署后,启动tomcat后进行运行.登陆时报以下错.在附件中包
含了源程序:
type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: java.lang.NullPointerException
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:532)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:455)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:391)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
org.apache.struts.action.ActionServlet.processActionForward(ActionServlet.java:1759)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1596)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:510)
javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)


root cause

java.lang.NullPointerException
com.dao.BorrowDAO.readerBorrowSort(BorrowDAO.java:228)
org.apache.jsp.main_jsp._jspService(main_jsp.java:186)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:417)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:391)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
org.apache.struts.action.ActionServlet.processActionForward(ActionServlet.java:1759)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1596)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:510)
javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)


note The full stack trace of the root cause is available in the Apache Tomcat/7.0.6 logs.

  • 1.rar (6.2 MB)
  • 下载次数: 18
分享到:
评论
4 楼 程序新手 2011-02-22  
javaeyey的大牛们最近手下留情了..哎
3 楼 seanla 2011-02-22  
没有对rs进行非空判断就开始使用,会有潜在的风险的
2 楼 nbnxyuyun 2011-02-22  
我看了代码好像没多大问题
package com.dao;

import com.core.ConnDB;
import java.util.*;
import com.actionForm.BorrowForm;
import java.sql.*;
import com.actionForm.ReaderForm;
import com.actionForm.BookForm;
import java.util.Date;

public class BorrowDAO {
    ConnDB conn = new ConnDB();
    public int insert() {
        String sql = "INSERT INTO tb_borrow (bookid) vlaues(1) ";
        int ret = conn.executeUpdate(sql);
        return ret;
    }
    //*****************************图书借阅******************************
    public int insertBorrow(ReaderForm readerForm,BookForm bookForm,String operator){
        //获取系统日期
        Date dateU=new Date();
        java.sql.Date date=new java.sql.Date(dateU.getTime());
       String sql1="select t.days from tb_bookinfo b left join tb_booktype t on b.typeid=t.id where b.id="+bookForm.getId()+"";
        ResultSet rs=conn.executeQuery(sql1);
        int days=0;
        try {
            if (rs.next()) {
                days = rs.getInt(1);
            }
        } catch (SQLException ex) {
        }
        //计算归还时间
          String date_str=String.valueOf(date);
          String dd = date_str.substring(8,10);
          String DD = date_str.substring(0,8)+String.valueOf(Integer.parseInt(dd) + days);
          java.sql.Date backTime= java.sql.Date.valueOf(DD);

          String sql ="Insert into tb_borrow (readerid,bookid,borrowTime,backTime,operator) values("+readerForm.getId()+","+bookForm.getId()+",'"+date+"','"+backTime+"','"+operator+"')";
           int falg = conn.executeUpdate(sql);
          System.out.println("添加图书借阅信息的SQL:" + sql);
          conn.close();
          return falg;
}
      //*************************************图书继借*********************************
      public int renew(int id){
          String sql0="SELECT bookid FROM tb_borrow WHERE id="+id+"";
          ResultSet rs1=conn.executeQuery(sql0);
          int flag=0;
        try {
            if (rs1.next()) {
                //获取系统日期
                Date dateU = new Date();
                java.sql.Date date = new java.sql.Date(dateU.getTime());
                String sql1 = "select t.days from tb_bookinfo b left join tb_booktype t on b.typeid=t.id where b.id=" +
                              rs1.getInt(1) + "";
                ResultSet rs = conn.executeQuery(sql1);
                int days = 0;
                try {
                    if (rs.next()) {
                        days = rs.getInt(1);
                    }
                } catch (SQLException ex) {
                }
                //计算归还时间
                String date_str = String.valueOf(date);
                String dd = date_str.substring(8, 10);
                String DD = date_str.substring(0, +
                            String.valueOf(Integer.parseInt(dd) + days);
                java.sql.Date backTime = java.sql.Date.valueOf(DD);

                String sql = "UPDATE tb_borrow SET backtime='" + backTime +
                             "' where id=" + id + "";
                flag = conn.executeUpdate(sql);
            }
        } catch (NumberFormatException ex1) {
        } catch (SQLException ex1) {
        }
          conn.close();
          return flag;
      }
      //*************************************图书归还*********************************
      public int back(int id,String operator){
          String sql0="SELECT readerid,bookid FROM tb_borrow WHERE id="+id+"";
          ResultSet rs1=conn.executeQuery(sql0);
          int flag=0;
        try {
            if (rs1.next()) {
                //获取系统日期
                Date dateU = new Date();
                java.sql.Date date = new java.sql.Date(dateU.getTime());
                int readerid=rs1.getInt(1);
                int bookid=rs1.getInt(2);
                String sql1="INSERT INTO tb_giveback (readerid,bookid,backTime,operator) VALUES("+readerid+","+bookid+",'"+date+"','"+operator+"')";
                int ret=conn.executeUpdate(sql1);
                if(ret==1){
                    String sql2 = "UPDATE tb_borrow SET ifback=1 where id=" + id +
                                 "";
                    flag = conn.executeUpdate(sql2);
                }else{
                    flag=0;
                }
            }
        } catch (NumberFormatException ex1) {
        } catch (SQLException ex1) {
        }
          conn.close();
          return flag;
      }
    //*****************************查询图书借阅信息************************
      public Collection borrowinfo(String str){
      String sql="select borr.*,book.bookname,book.price,pub.pubname,bs.name bookcasename,r.barcode from (select * from tb_borrow where ifback=0) as borr left join tb_bookinfo book on borr.bookid=book.id join tb_publishing pub on book.isbn=pub.isbn join tb_bookcase bs on book.bookcase=bs.id join tb_reader r on borr.readerid=r.id where r.barcode='"+str+"'";
      ResultSet rs=conn.executeQuery(sql);
      Collection coll=new ArrayList();
      BorrowForm form=null;
      try {
          while (rs.next()) {
              form = new BorrowForm();
              form.setId(Integer.valueOf(rs.getInt(1)));
              form.setBorrowTime(rs.getString(4));
              form.setBackTime(rs.getString(5));
              form.setBookName(rs.getString(8));
              form.setPrice(Float.valueOf(rs.getFloat(9)));
              form.setPubName(rs.getString(10));
              form.setBookcaseName(rs.getString(11));
              coll.add(form);
          }
      } catch (SQLException ex) {
          System.out.println("借阅信息:"+ex.getMessage());
      }
      conn.close();
      return coll;
      }
      //*************************到期提醒******************************************
    public Collection bremind(){
    Date dateU = new Date();
    java.sql.Date date = new java.sql.Date(dateU.getTime());
    String sql="select borr.borrowTime,borr.backTime,book.barcode,book.bookname,r.name readername,r.barcode readerbarcode from tb_borrow borr join tb_bookinfo book on book.id=borr.bookid join tb_reader r on r.id=borr.readerid where borr.backTime <='"+date+"'";
    ResultSet rs=conn.executeQuery(sql);
    System.out.println("到时提醒的SQL:"+sql);
    Collection coll=new ArrayList();
    BorrowForm form=null;
    try {
        while (rs.next()) {
            form = new BorrowForm();
            form.setBorrowTime(rs.getString(1));
            form.setBackTime(rs.getString(2));
            form.setBookBarcode(rs.getString(3));
            form.setBookName(rs.getString(4));
            form.setReaderName(rs.getString(5));
            form.setReaderBarcode(rs.getString(6));
            coll.add(form);
            System.out.println("图书条形码:"+rs.getString(3));
        }
    } catch (SQLException ex) {
        System.out.println(ex.getMessage());
    }
    conn.close();
    return coll;
}
//*************************图书借阅查询******************************************
public Collection borrowQuery(String strif){
    String sql="";
    if(strif!="all" && strif!=null && strif!=""){
        sql="select * from (select borr.borrowTime,borr.backTime,book.barcode,book.bookname,r.name readername,r.barcode readerbarcode,borr.ifback from tb_borrow borr join tb_bookinfo book on book.id=borr.bookid join tb_reader r on r.id=borr.readerid) as borr where borr."+strif+"";
    }else{
        sql="select * from (select borr.borrowTime,borr.backTime,book.barcode,book.bookname,r.name readername,r.barcode readerbarcode,borr.ifback from tb_borrow borr join tb_bookinfo book on book.id=borr.bookid join tb_reader r on r.id=borr.readerid) as borr";
}
ResultSet rs=conn.executeQuery(sql);
System.out.println("图书借阅查询的SQL:"+sql);
Collection coll=new ArrayList();
BorrowForm form=null;
try {
    while (rs.next()) {
        form = new BorrowForm();
        form.setBorrowTime(rs.getString(1));
        form.setBackTime(rs.getString(2));
        form.setBookBarcode(rs.getString(3));
        form.setBookName(rs.getString(4));
        form.setReaderName(rs.getString(5));
        form.setReaderBarcode(rs.getString(6));
        form.setIfBack(rs.getInt(7));
        coll.add(form);
    }
} catch (SQLException ex) {
    System.out.println(ex.getMessage());
}
conn.close();
return coll;
    }
      //*************************图书借阅排行******************************************
    public Collection bookBorrowSort() {
       String sql = "select * from (SELECT bookid,count(bookid) as degree FROM tb_borrow group by bookid) as borr join (select b.*,c.name as bookcaseName,p.pubname,t.typename from tb_bookinfo b left join tb_bookcase c on b.bookcase=c.id join tb_publishing p on b.ISBN=p.ISBN join tb_booktype t on b.typeid=t.id where b.del=0) as book on borr.bookid=book.id order by borr.degree desc limit 10 ";
        System.out.println("图书借阅排行:"+sql);
        Collection coll = new ArrayList();
        BorrowForm form = null;
        ResultSet rs = conn.executeQuery(sql);


        try {
            while (rs.next()) {
                form = new BorrowForm();
                form.setBookId(rs.getInt(1));
                form.setDegree(rs.getInt(2));
                form.setBookBarcode(rs.getString(3));
                form.setBookName(rs.getString(4));
                form.setAuthor(rs.getString(6));
                form.setPrice(Float.valueOf(rs.getString(9)));
                form.setStorage(rs.getInt(12));
                form.setBookcaseName(rs.getString(17));
                form.setPubName(rs.getString(18));
                form.setBookType(rs.getString(19));
                coll.add(form);
                System.out.print("RS:"+rs.getString(4));
            }
        } catch (SQLException ex) {
            System.out.println(ex.getMessage());
        }
        conn.close();
        return coll;
    }
    //***********************读者借阅排行*************************************
    public Collection readerBorrowSort() {
        String sql = "select * from (SELECT readerid,count(readerid) as degree FROM tb_borrow group by readerid) as borr join (select r.*,t.name as typename,t.number from tb_reader r left join tb_readerType t on r.typeid=t.id) as reader on borr.readerid=reader.id order by borr.degree desc limit 10";
        Collection coll = new ArrayList();
        BorrowForm form = null;
        ResultSet rs = conn.executeQuery(sql);
        try {
     228       while (rs.next()) {               
                form = new BorrowForm();
                form.setReaderId(rs.getInt(1));
                form.setDegree(rs.getInt(2));
                form.setReaderName(rs.getString(4));
                form.setSex(rs.getString(5));
                form.setReaderBarcode(rs.getString(6));
                form.setBirthday(rs.getString(8));
                form.setPaperType(rs.getString(9));
                form.setPaperNo(rs.getString(10));
                form.setTel(rs.getString(11));
                form.setReaderType(rs.getString(17));
                coll.add(form);
            }
        } catch (SQLException ex) {
            System.out.println(ex.getMessage());
        }
        conn.close();
        return coll;
    }
}
1 楼 ericyanzhe 2011-02-22  
没有下你的附件,从你贴出来的异常信息里面找到的com.dao.BorrowDAO.readerBorrowSort(BorrowDAO.java:228) 。你看看这个文件的228行吧。

相关推荐

    图书管理系统登陆界面

    图书管理系统登陆界面是系统与用户交互的第一步,它在IT领域中扮演着至关重要的角色,因为它是用户访问系统资源的入口。在这个特定的场景中,我们关注的是一个用于管理图书数据的应用程序,其核心功能可能包括书籍的...

    图书管理系统类图分析

    图书管理系统是一种用于管理和跟踪图书馆内图书资源、读者信息以及借阅流程的应用程序。在系统设计中,类图是一种重要的建模工具,它描述了系统中各个类及其之间的关系。以下是对图书管理系统类图分析的详细解释: ...

    图书管理系统设计说明书

    在实际开发中,通常会使用如Visual Studio 2005等工具开发Web应用程序,创建用户友好的界面,如图书管理系统主界面、登陆界面、读者管理及图书管理界面,以及查询系统界面。这些界面将提供直观的操作,方便用户进行...

    图书管理系统源代码

    《图书管理系统源代码》 图书管理系统是用于管理图书馆日常运营的一种软件工具,它涵盖了书籍的借阅、归还、查询、库存管理等多个功能模块。在这个系统中,C#被用作主要的编程语言,它是一种面向对象的编程语言,...

    图书管理系统\图书管理系统\最终图书管理系统(论文).

    ### 图书管理系统相关知识点 #### 一、图书管理系统的重要性及背景 **1.1 问题的提出** 在信息时代背景下,图书作为一种重要的知识载体,在知识传播方面扮演着至关重要的角色。传统的图书管理模式主要依赖手工...

    图书管理系统需求分析文档

    图书管理系统需求分析文档是开发一个高效、用户友好的图书管理平台的关键步骤,它详细阐述了系统应具备的功能、约束、运行环境以及预期的性能需求。以下是对这些关键知识点的详细说明: 1. **功能需求**: - **...

    图书管理系统需求分析

    为了提高管理效率和图书服务的质量,构建一个现代化的图书管理系统显得尤为重要。本文将从系统需求分析的角度,深入探讨图书管理系统的核心功能和性能要求,以及用户交互的细节,旨在构建一个高效、安全、易用且适应...

    图书管理系统包含 代码和e-r图

    ### 图书管理系统关键技术知识点 #### 一、系统开发背景与必要性 - **传统管理模式的局限性**:随着图书馆藏书量的增加,人工管理图书变得越来越困难且效率低下。传统方式不仅耗时费力,而且容易出错,无法满足...

    图书馆管理系统

    在这个高速发展的信息化时代,图书馆管理信息系统的重要性日益凸显,因为传统的图书管理方式已无法满足日益增长的图书需求和信息处理的复杂性。 在系统分析阶段,首先进行的是可行性分析,这包括技术、经济和社会三...

    图书馆管理系统软件需求规格说明书

    ### 图书馆管理系统软件需求...通过这些详尽的规定和描述,开发团队可以更加明确地了解系统所需实现的具体目标,从而制定出合理的开发计划和技术方案,最终完成一个既符合实际需求又具有良好用户体验的图书管理系统。

    图书馆管理系统Web程序设计课程设计报告.doc

    传统的图书馆管理模式已经无法适应日益增长的图书数量和复杂的读者需求,因此,图书馆管理系统的设计和实现成为了当今时代的重要课题。在这样的背景下,洛阳理工学院计算机科学与技术专业的学生们在2014年6月开展了...

    asp.net图书管理系统答辩.ppt

    传统的单机版或局域网管理系统无法完全适应网络化的时代,因此,设计这样一个线上系统,不仅可以保留传统系统的优点,还能弥补网络服务的不足,提高用户体验,使图书借阅更加灵活,更贴近读者。 在系统业务流程和...

    图书管理系统报告及其源代码

    传统的手工管理图书的方式已经无法满足当前快速变化的信息需求,因此开发一款高效的图书管理系统成为必要。本系统旨在为中小图书馆和个人用户提供一种简便且有效的图书管理方式。 - **定义** - LMS(Library ...

    图书管理信息系统分析与设计.doc

    在使用图书管理系统前图书利用率与图书外借数量统计是使用手工方式进行简单统计,出现统计数字错误后,无法对数字错误来源查找,没法确定图书信息的正确性。使用图书管理系统后,图书统计数据可以根据实际情况实时...

    Java图书管理系统实验报告

    5)Main类,主函数启动运行图书管理系统界面。 (二)设计一个frame package里面包含多个类 1)AddBookInterface类,设计一个添加图书的界面,包含图书编号、名字、作者、出版社、状态等。 2)AdminMainInterface类,...

    需求分析(图书管理系统)

    在“需求分析(图书管理系统)”这个项目中,我们将深入探讨该图书销售管理系统的具体需求。 一、产品概述 图书管理系统是一款针对图书经营商设计的自动化工具,旨在提高其工作效率,简化管理工作。系统涵盖了出版...

    图书管理系统体系结构图和数据流程图分享.pdf

    图书管理系统体系结构图和数据流程图分享 本文主要介绍了图书管理系统的体系结构图和数据流程图,旨在帮助读者了解图书管理系统的整体架构和工作流程。 一、项目开发背景 随着科学技术的不断提高,计算机科学日渐...

    Java应用课程设计小型图书管理系统

    **描述**:“Java应用课程设计小型图书管理系统实现图书的管理和登陆”进一步解释了项目的核心功能——图书管理(包括入库、查询、删除和概览)以及用户登录机制,确保只有授权用户才能访问和操作图书资源。...

    图书管理系统(内附源代码)[1].doc

    "图书管理系统的设计与实现" 图书管理系统是一个基本的软件应用系统,旨在实现图书馆中图书的借阅、管理和查询等功能。该系统的设计和实现对初学者来说是一个很好的实践机会,可以帮助他们熟悉编程语言、数据库操作...

Global site tag (gtag.js) - Google Analytics