database - 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();
%>
解决方案
我解决了这个问题。我所做的是:
将驱动程序 6.4 更改为 4.0
将 URL 语法更改为“jdbc:sqlserver://localhost;databaseName=demo;integratedSecurity=true;”
将“SELECT name, id, address FROM demo”更改为“SELECT name, id, address FROM people”,其中 people 是我的表名
将 sqljdbc_auth.dll 复制到 Windows/system32
此后错误消息消失了。
推荐阅读
- c++ - 如何将各种类型的向量转换为 std::string?
- python - 打印张量时的“args_0:0”
- html - 水平对齐 DIV 元素,同时在较小的屏幕上保持垂直
- amazon-web-services - Route 53 - 创建 A 记录时未显示云端分发
- laravel - 带有计算列的 Laravel Eloquent `have`
- javascript - 用于 EasyAppointments 的 FullCalendar Javascript 日历增加行高
- javascript - Firebase 在尝试 console.log 查询时返回一个空数组。反应原生
- java - Lucene SearcherManager 也许刷新写入索引文件?
- python - 可以使用turtle模块和pygame模块吗?
- javascript - 如何使用 HTML DOM 在数独板上轻松使用输入