关于<>的代码调试问题!

VCzhu 2006-08-14 04:25:37
<<JSP数据库开发实例精粹>>中的第一个实例是一个网上书店.我在调试的时候连接数据库出现了问题:
  当用户登陆时出现下列错误:
  
type Exception report

message

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

exception

org.apache.jasper.JasperException
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:372)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)


root cause

java.lang.NullPointerException
bookshop.run.login.excute(login.java:65)
org.apache.jsp.bookshop.login_jsp._jspService(login_jsp.java:71)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
  
  查找到run.login中第65行为 stmt = db.conn.createStatement ();
  login由DataBase派生而来 DataBase.java 代码如下:
  
package bookshop.util;
/**
* <p>数据库连接专用包 </p>
* <p>Copyright: wxy Copyright (c) 2004</p>
* <p>Company:juanjuan book shop online </p>
* @by :wxy
* @version 1.0
*/
import java.sql.*;
public class DataBase {
public Connection conn;
public Statement stmt;
public ResultSet rs=null;
public String sqlStr="";

public DataBase() {
this.connect();
}
public boolean connect(){
try{
Class.forName("org.gjt.mm.mysql.Driver");
conn=DriverManager.getConnection("jdbc:mysql://localhost/bookstore","root","123");
stmt = conn.createStatement ();
}catch(Exception ee){
System.out.println("connect db error:"+ee.getMessage());
return false;
}
return true;
}
public static void main(String[] args) {
try{
DataBase db = new DataBase();
db.connect();
}catch(Exception e){
e.printStackTrace();
}
}
}

请用过该书的朋友帮忙解答,也请路过的朋友帮忙解答或帮忙顶 谢谢
...全文
210 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
VCzhu 2006-09-03
  • 打赏
  • 举报
回复
谢谢回答问题的各位.这段时间一直都没时间上网.给分晚了点,抱歉!
VCzhu 2006-08-15
  • 打赏
  • 举报
回复
回"天涯"
login.jsp:
<%@ page contentType="text/html;charset=gb2312" %>
<%@ page session="true" %>
<jsp:useBean id="login" scope="page" class="bookshop.run.login" />
<%
String mesg = "";

if( request.getParameter("username")!=null && !request.getParameter("username").equals("")){
String username =request.getParameter("username");
String passwd = request.getParameter("passwd");
username = new String(username.getBytes("ISO8859-1"));
passwd = new String(passwd.getBytes("ISO8859-1"));
login.setUsername(username);
login.setPasswd(passwd);
out.print(username+passwd);
if (login.excute()){
session.setAttribute("username",username);
String userid = Long.toString(login.getUserid());
session.setAttribute("userid",userid);
response.sendRedirect("booklist.jsp");
%>
<%
}else {
mesg = "登录出错!" ;
}
}
%>
<%@include file="/bookshop/inc/head.inc"%>

<script language="javascript">

function checkform() {
if (document.form1.username.value=="" || document.form1.passwd.value==""){
alert("用户名或密码为空!");
return false;
}
return true;

}

</script>
<div align=center>用户登录 </div>
<br>
<% if (!mesg.equals("")){
out.println("<p>" + mesg + "</p>");}%>

<form name="form1" method="post" action="login.jsp">
<table width="400" border="0" cellspacing="1" cellpadding="1" align="center">
<tr>
<td width="147" align="right">用户名:<br>
</td>
<td width="246" valign="top">
<input type="text" name="username" size="16" maxlength="25">
</td>
</tr>
<tr>
<td width="147" align="right">密码:</td>
<td width="246" valign="top">
<input type="password" name="passwd" maxlength="20" size="16">
</td>
</tr>
<tr>
<td width="147" align="right"> </td>
<td width="246" valign="top">
<input type="submit" name="Submit" value="登录" onclick="javascript:return(checkform());">
<input type="reset" name="Submit2" value="取消">
</td>
</tr>
<tr>
<td colspan="2" align="center">
<p> </p>
测试用户:wxy 密码:wxy
</td>
</tr>
<tr>

<td colspan="2" align="center">
<p> </p>
<p>如果你还不是本站用户,请在此<a href="reg.jsp">注册</a></p>
</td>
</tr>
</table>
</form>
<%@include file="/bookshop/inc/tail.inc"%>

login.java:
package bookshop.run;
/**
* <p>管理用户登录的类 </p>
*/
import bookshop.util.*;
public class login extends DataBase {
private String username; //登录用户名
private String passwd; //登录密码
private boolean isadmin; //是否管理员登录
private long userid=0; //用户ID号
public login() throws Exception{
super();
username = "";
passwd = "";
isadmin = false;
}
public String getUsername() {
return username;
}
public void setUsername(String newusername) {
username = newusername;
}
public String getPasswd() {
return passwd;
}
public void setPasswd(String newpasswd) {
passwd = newpasswd;
}
public boolean getIsadmin() {
return isadmin;
}
public void setIsadmin(boolean newIsadmin) {
isadmin = newIsadmin;
}
public long getUserid() {
return userid;
}
public void setUserid (long uid) {
userid = uid;
}
/**
* 获得查询用户信息的sql语句
* @return
*/
public String getSql() {
if (isadmin) {
sqlStr = "select * from BookAdmin where adminuser = '" +
dataFormat.toSql(username) + "' and adminpass = '" +
dataFormat.toSql(passwd) + "'";
}else {
sqlStr = "select * from shop_user where username = '" +
username + "' and password = '" + passwd + "'";
}
return sqlStr;
}
/**
* 执行查询
* @return
* @throws java.lang.Exception
*/
public boolean excute() throws Exception {
boolean flag = false;
DataBase db = new DataBase();
db.connect();
stmt = db.conn.createStatement ();
rs = stmt.executeQuery(getSql());
if (rs.next()){
if (!isadmin)
{
userid = rs.getLong("id");
}
flag = true;
}
rs.close();
return flag;
}
};
SafeSoft 2006-08-15
  • 打赏
  • 举报
回复
up
buffer2005 2006-08-14
  • 打赏
  • 举报
回复
java.lang.NullPointerException
把login.jsp,login.java代码都贴出来.
估计是Mysql的jdbc驱动版本问题.
zhmt 2006-08-14
  • 打赏
  • 举报
回复
努力接分升级中...帮你up!
feigme 2006-08-14
  • 打赏
  • 举报
回复
把驱动文件放到WEB-INF/classes/lib/下面再试
flyingdancing2005 2006-08-14
  • 打赏
  • 举报
回复
是jar文件问题或者就是数据库文件有没有忘拷
OnlyFor_love 2006-08-14
  • 打赏
  • 举报
回复
看看你的main函数中db.connect();返回的是不是true 如果不是就说明你的数据库连接类有问题,而且很有可能的原因是驱动没有加载,也就是驱动包(jar文件)
凋零的老树 2006-08-14
  • 打赏
  • 举报
回复
单独执行 DataBase.java 看看

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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