我做myeclipse和数据库的连接,数据库连接上了,但jsp页面不能访问,并报错
我做myeclipse和数据库的连接,数据库连接上了,但跟数据库有关的那个jsp页面不能访问,我的数据库驱动加了,代码没有问题,并且代码在别人的电脑上可以运行,但是我的就...
我做myeclipse和数据库的连接,数据库连接上了,但跟数据库有关的那个jsp页面不能访问,我的数据库驱动加了,代码没有问题,并且代码在别人的电脑上可以运行,但是我的就不行,这是为什么?其中报错的代码是package servlet;
import java.io.*;
import java.sql.*;
import javax.servlet.*;
import javax.servlet.http.*;
import demo.BookBean;
public class BookQueryServlet extends HttpServlet{
Connection dbConnection=null;
PreparedStatement pstmt= null; //数据库操作
ResultSet rst = null; //结果集处理
public void init() {
String deriver="org.gjt.mm.mysql.Driver";
String dburl="jdbc:mysql://127.0.0.1:3306/bookstore";
String username="root";
String password="root";
try{
Class.forName(deriver);
dbConnection=DriverManager.getConnection(dburl,username,password);
}catch(ClassNotFoundException e1){
}catch(SQLException e2){}
}
public void service(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException{
String bookid=request.getParameter("bookid");
int bookids=Integer.parseInt(bookid);
try{
String sql="SELECT * FROM books WHERE bookid=?";
PreparedStatement pstmt=dbConnection.prepareStatement(sql);
pstmt.setInt(1,bookids);
ResultSet rst=pstmt.executeQuery();
if(rst.next()){
BookBean book=new BookBean();
book.setBookid(rst.getInt("bookid"));
book.setTitle(rst.getString("title"));
book.setAuthor(rst.getString("author"));
book.setPrice(rst.getDouble("price"));
book.setPublisher(rst.getString("publisher"));
request.getSession().setAttribute("book",book);
RequestDispatcher view=request.getRequestDispatcher("showBook.jsp");
view.forward(request,response);
}else{
RequestDispatcher view=request.getRequestDispatcher("error.jsp");
view.forward(request,response);
}
}catch(SQLException e){
e.printStackTrace();
}
}
public void destroy(){
try{
dbConnection.close();
}catch(Exception e){
e.printStackTrace();
}
}
} 展开
import java.io.*;
import java.sql.*;
import javax.servlet.*;
import javax.servlet.http.*;
import demo.BookBean;
public class BookQueryServlet extends HttpServlet{
Connection dbConnection=null;
PreparedStatement pstmt= null; //数据库操作
ResultSet rst = null; //结果集处理
public void init() {
String deriver="org.gjt.mm.mysql.Driver";
String dburl="jdbc:mysql://127.0.0.1:3306/bookstore";
String username="root";
String password="root";
try{
Class.forName(deriver);
dbConnection=DriverManager.getConnection(dburl,username,password);
}catch(ClassNotFoundException e1){
}catch(SQLException e2){}
}
public void service(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException{
String bookid=request.getParameter("bookid");
int bookids=Integer.parseInt(bookid);
try{
String sql="SELECT * FROM books WHERE bookid=?";
PreparedStatement pstmt=dbConnection.prepareStatement(sql);
pstmt.setInt(1,bookids);
ResultSet rst=pstmt.executeQuery();
if(rst.next()){
BookBean book=new BookBean();
book.setBookid(rst.getInt("bookid"));
book.setTitle(rst.getString("title"));
book.setAuthor(rst.getString("author"));
book.setPrice(rst.getDouble("price"));
book.setPublisher(rst.getString("publisher"));
request.getSession().setAttribute("book",book);
RequestDispatcher view=request.getRequestDispatcher("showBook.jsp");
view.forward(request,response);
}else{
RequestDispatcher view=request.getRequestDispatcher("error.jsp");
view.forward(request,response);
}
}catch(SQLException e){
e.printStackTrace();
}
}
public void destroy(){
try{
dbConnection.close();
}catch(Exception e){
e.printStackTrace();
}
}
} 展开
4个回答
展开全部
500错误说穿了还是tomcat的配置有问题,你多个servlet是否修改过tomcat下web.xml(不是项目的),里面有个context标签,自动加载设置为TRUE。<param-value>此处改成ture</param-value>
2、用TOMCAT6.EXE启动WEB服务器.切记不要从控制台启动!!!
2、用TOMCAT6.EXE启动WEB服务器.切记不要从控制台启动!!!
追问
你说的我改了,还是不能运行,再执行时就变成26行有错,即是:PreparedStatement pstmt=dbConnection.prepareStatement(sql);这行有问题,图片中有说明,实在是不知道怎么弄?
追答
String sql="SELECT * FROM books WHERE bookid=?";
PreparedStatement pstmt=dbConnection.prepareStatement(sql);
问题出在这两句,上句和下句都有可能,我觉得可能较大是你的声明
Connection dbConnection=null;
把获得数据库的方法public void getConn()这样写:public Connection getConn()
原因应该是,你父类中修饰符没用protected,而是private,那么当你子类声明Connection dbConnection=null;即使你获得一个数据库,在该类中声明了变量为空,返回值还是空。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
空指针异常,rst.next(),跳到下一行的数据,原因是你的book.setBookid(rst.getInt("bookid"));,取到的是null,null不能放入在int中,所以包错~~别人的说明人家可能有两条或者是多条数据,而你只有一条数据,在用了rst.next(),之后就读取下一行数据,你只有一行数据,没有第二行数据,所以为空 ,可以试试去掉rst.next()
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
33行 空指针异常。
BookBean 这个类编译并且放到tomcat里 webapp的 WEB-INF\classes\demo文件夹下了吗?
BookBean 这个类编译并且放到tomcat里 webapp的 WEB-INF\classes\demo文件夹下了吗?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
关注
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询