HTTP Status 500 - Внутренняя ошибка сервера базы данных jsp-tomcat - PullRequest
0 голосов
/ 24 июня 2018

Я новичок в базе данных и не могу найти способ справиться с этой ошибкой. Я пытаюсь установить соединение между моим JSP-файлом и SQL-сервером, используя eclipse. Я скопировал свой драйвер ms sql в WEB-INF / lib и настроил «Build path», чтобы он указывал на этот драйвер, но выдает ошибку. В чем моя ошибка, и как я могу ее исправить?

Вот сообщение об ошибке:

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();
%>

Ответы [ 2 ]

0 голосов
/ 25 июня 2018

Я решил это. То, что я сделал, было:

  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

После этого сообщения об ошибках пропали.

0 голосов
/ 24 июня 2018

Попробуйте добавить Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); в Actor()

public Actor(){
      try {
         Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
         connection = DriverManager.getConnection(URL, username, password); 
         selectActors = connection.prepareStatement("SELECT name, id, address FROM demo"); 
         } catch(SQLException e){
            e.printStackTrace();
         }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...