首页 > 解决方案 > HTTP 状态 500 – 内部服务器错误 jsp-tomcat 数据库

问题描述

我是数据库新手,找不到处理此错误的方法。我正在尝试使用 eclipse 在我的 jsp 文件和 sql server 之间建立连接。我将我的 ms sql 驱动程序复制到 WEB-INF/lib 并配置了“构建路径”,因此它指向该驱动程序,但它给出了错误。我的错误是什么,我该如何纠正?

这里的错误信息:

Message java.lang.NullPointerException

Description The server encountered an unexpected condition that prevented it 
from fulfilling the request.

Exception
org.apache.jasper.JasperException: java.lang.NullPointerException
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrap per.java:572)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:48 

org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:386)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:330)
javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)


Root Cause
java.lang.NullPointerException
org.apache.jsp.Datab_jsp$Actor.getActors(Datab_jsp.java:54)
org.apache.jsp.Datab_jsp._jspService(Datab_jsp.java:193)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:44
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:386)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:330)
javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)


Note The full stack trace of the root cause is available in the server logs.

我在 jsp 文件中的代码:

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import ="java.sql.*" %>
<%@ page import=" javax.sql.DataSource" %>

<% Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); %>


<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>

<body>


<%! 
    public class Actor {

        String URL = "jdbc:sqlserver://localhost:1433/demo"; 

        String username = "root";
        String password = "7170256aziz";

        Connection connection  = null;
        PreparedStatement selectActors = null;
        ResultSet resultSet = null; 


        public Actor(){


            try {

                connection = DriverManager.getConnection(URL, username, password); 

                selectActors = connection.prepareStatement("SELECT name, id, address FROM demo"); 

            } catch(SQLException e){

                e.printStackTrace();
            }

        }

            public ResultSet getActors(){

                try{

                    resultSet = selectActors.executeQuery();


                } catch (SQLException e){

                    e.printStackTrace();
                }


                return resultSet;   
            }

    }
%>
<%
    Actor actor = new Actor();
    ResultSet actors =  actor.getActors();
%>

标签: databasejsp

解决方案


我解决了这个问题。我所做的是:

  1. 将驱动程序 6.4 更改为 4.0

  2. 将 URL 语法更改为“jdbc:sqlserver://localhost;databaseName=demo;integratedSecurity=true;”

  3. 将“SELECT name, id, address FROM demo”更改为“SELECT name, id, address FROM people”,其中 people 是我的表名

  4. 将 sqljdbc_auth.dll 复制到 Windows/system32

此后错误消息消失了。


推荐阅读