`
nbnxyuyun
  • 浏览: 5616 次
  • 性别: 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行吧。

相关推荐

    图书管理系统数据库实验报告

    (1)图书管理系统:查询、添加、删除、修改图书资料,可选择是否显示图书。 (2)图书分类管理系统:图书分类添加、修改、删除管理。 3. 教务管理 (1)学生班级管理系统:学生班级添加、修改、删除管理。 (2...

    图书管理系统源代码

    用c#编写——学校图书馆管理系统。 1.登陆界面 主要代码: public partial class LoginForm : Form{ public static string uacc; public static string upsw; public static string uname; public static ...

    数据库课程设计图书馆管理系统.doc

    下面介绍的是通用图书馆管理系统所必备的功能,如图1所示,包括基本信息维护、 读者管理、图书管理、期刊管理、图书流通管理、期刊流通管理、统计分析管理和系统 管理功能模块,其中每个功能都由若干相关联的子功能...

    图书管理系统的设计与实现

    图书管理系统有来自两方面的需求:即图书馆管理者和图书馆系统管理者。 图书馆人员可以对读者的借阅和还书需要进行操作,并同时形成了借阅或还书记录和阅读确认;馆内人员拥有检索图书信息、阅读用户信息内容、使用...

    Java图书管理系统实验报告

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

    图书管理系统数据库实验报告及程序.doc

    图书管理 (1)图书管理系统:查询、添加、删除、修改图书资料,可选择是否显示图书。 (2)图书分类管理系统:图书分类添加、修改、删除管理。 3. 教务管理 (1)学生班级管理系统:学生班级添加、修改、删除管理...

    毕业设计:ASP+SQL图书管理系统设计(源代码)

    (1)用户方便进行图书查询,图书浏览和图书分类浏览,进行图书借阅并了解自己的借书情况和个人情况。 (2)用户在借书超期的情况下得到来自管理...图书管理系统是一项复杂系统工程,要从实际出发,对实际情况进行客观

    ASP+SQL图书管理系统设计(源代码+毕设文档+中期检查表+答辩).zip

    用户管理包括用户信息的添加,删除,修改和锁定(限制用户的正常使用功能,使其无法登陆)。管理员管理包括管理员信息的添加,删除,修改等。 (4)用户和管理员可以修改自己的密码,修改前需先核实自己的原始密码。...

    servlet图书馆管理系统.zip

    最后用tomcat容器部署运行,如果遇到无法登陆、登陆报空指针,百分之八十都是数据库相关的问题,请检查你的数据库配置、服务运行情况、版本(不能是mysql8) 初始可用账号 管理员 admin 123 读者 8888 123

    java servlet+mysql开发的学务系统+图书馆系统

    java servlet时开发的一个大型项目,功能完善,分页,增删改查,邮箱验证等应有尽有。 运行环境 jdk7+tomcat7+mysql+eclipse 项目技术(必填) ...超级管理员可冻结普通管理员账号,被冻结账号无法登陆

    数据库课程设计-图书馆管理信息系统.doc

    数据库课程设计报告 -------图书馆管理信息系统 目 录 一、系统...更新/删除某图书管理员的信息 i.删除给定图书的信息 j.删除给定图书的某个副本的信息 k.更新/删除给定读者的信息 m.更新/删除某读者借阅某本图书

    数据库课程设计-图书馆管理信息系统(1).doc

    数据库课程设计报告 -——-—-—图书馆管理信息系统 目 录 一、...更新/删除某图书管理员的信息 i.删除给定图书的信息 j.删除给定图书的某个副本的信息 k.更新/删除给定读者的信息 m.更新/删除某读者借阅某本图书

    2数据库实习-学生信息管理系统.doc

    2.2.2 功能模块图 图2.1图书管理系统主要功能图 图2.2 用户登陆图 图2.3 教师管理功能图 图2.4 学生管理功能图 图2.5 E-R图 2.3.1 硬件环境 本次课程设计即开发图书管理系统,它的服务器端的配置如下: 处理器:...

    毕业设计-JAVA学校官网教务图书馆源码.zip

    有详细得部署文档 运行环境:jdk7+tomcat7+mysql+eclipse 使用技术:java servlet+mysql+jquery+jsp 教务管理系统,学生登陆页面下点击忘记密码操作可以进入...超级管理员可冻结普通管理员账号,被冻结账号无法登陆

    【JAVAEE】网上书城系统(内含项目报告和相关ppt)此项目需要使用沙箱实现支付功能

    网上书城系统分为两个模块,分别为前台网站模块和后台管理模块。 前台网站模块又分为用户操作和图书浏览。 用户可以进行用户登录,用户登录界面还包括记住账号和自动登录两个功能 密码错误或用户未激活时不允许登录...

    噢易机房BOSS系统介绍PPT

    以与其他图书管理系统等连接,系统还拥有跨院系/校区统一上机管理功能,满足学校统一管理的各种需 求。 上机服务系统 · 上下机验证 学生通过刷卡进入机房,通过帐号登陆验证完相关信息才可使用机器,使用结帐...

    基于JAVA的电子商务系统分析与设计(共27页).docx

    操作系统Windows XP/2000接口能力强,数据库管理系统的功能(gōngnéng)足够。(2).Java语言是一种优秀的编程语言。(3).此外Java还提供了一些有用的新特性,使得(shǐ de)使用Java语言比C++语言更容易写出"无错...

Global site tag (gtag.js) - Google Analytics