Java、JSP、Eclipse—服务器遇到意外情况,无法满足请求
我正在使用Eclipse创建一个“动态Web项目”。并用MVC结构编写了一些简单的代码 我的LoaiBean课程:Java、JSP、Eclipse—服务器遇到意外情况,无法满足请求,java,eclipse,jsp,Java,Eclipse,Jsp,我正在使用Eclipse创建一个“动态Web项目”。并用MVC结构编写了一些简单的代码 我的LoaiBean课程: package bean; public class LoaiBean { private String maLoai; private String tenLoai; public String getMaLoai() { return maLoai; } public void setMaLoai(String maLoa
package bean;
public class LoaiBean {
private String maLoai;
private String tenLoai;
public String getMaLoai() {
return maLoai;
}
public void setMaLoai(String maLoai) {
this.maLoai = maLoai;
}
public String getTenLoai() {
return tenLoai;
}
public void setTenLoai(String tenLoai) {
this.tenLoai = tenLoai;
}
public LoaiBean(String maLoai, String tenLoai) {
super();
this.maLoai = maLoai;
this.tenLoai = tenLoai;
}
}
package dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import bean.LoaiBean;
public class LoaiDao {
private DBConnection dbConnection = null;
public LoaiDao() {
super();
this.dbConnection = new DBConnection("bookdb");
}
public LoaiDao(DBConnection dbConnection) {
super();
this.dbConnection = dbConnection;
}
/**
* get list of categories
* @return {@link ArrayList}
*/
public ArrayList<LoaiBean> getLoai(){
Connection connection = this.dbConnection.getConnection(true);
ArrayList<LoaiBean> loais = new ArrayList<LoaiBean>();
try {
Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery("select * from loai");
while(rs.next()) {
loais.add(new LoaiBean(
rs.getString("maloai"),
rs.getString("tenloai")
));
}
} catch (SQLException e) {
e.printStackTrace();
}
return loais;
}
}
package dao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class DBConnection {
private String server = "localhost";
private String port = "1433";
private String databaseName = null;
private String user = "sa";
private String password = "123";
private Connection connection = null;
public String getServer() {
return server;
}
public void setServer(String server) {
this.server = server;
}
public String getPort() {
return port;
}
public void setPort(String port) {
this.port = port;
}
public String getDatabaseName() {
return databaseName;
}
public void setDatabaseName(String databaseName) {
this.databaseName = databaseName;
}
public String getUser() {
return user;
}
public void setUser(String user) {
this.user = user;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public Connection getConnection(boolean autoConnect) {
if(autoConnect && this.connection == null) {
this.connect();
}
return connection;
}
public void setConnection(Connection connection) {
this.connection = connection;
}
public DBConnection(String databaseName) {
super();
this.databaseName = databaseName;
}
public void connect() {
if(this.databaseName == null) {
return;
}
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
String st = "jdbc:sqlserver://"+this.server+":"+this.port+";databaseName="+this.databaseName+";user="+this.user+";password="+this.password;
try {
this.connection = DriverManager.getConnection(st);
} catch (SQLException e) {
e.printStackTrace();
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
public void reconnect() {
this.disconnect();
this.connect();
}
public void disconnect() {
if(this.connection != null) {
try {
this.connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
package bo;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import bean.LoaiBean;
import dao.LoaiDao;
public class LoaiBo {
private LoaiDao dao = null;
public LoaiDao getDao() {
return dao;
}
public void setDao(LoaiDao dao) {
this.dao = dao;
}
public LoaiBo() {
super();
this.dao = new LoaiDao();
}
public LoaiBo(LoaiDao dao) {
super();
this.dao = dao;
}
public ArrayList<LoaiBean> getLoai(){
return this.dao.getLoai();
}
}
我的LoaiDao课程:
package bean;
public class LoaiBean {
private String maLoai;
private String tenLoai;
public String getMaLoai() {
return maLoai;
}
public void setMaLoai(String maLoai) {
this.maLoai = maLoai;
}
public String getTenLoai() {
return tenLoai;
}
public void setTenLoai(String tenLoai) {
this.tenLoai = tenLoai;
}
public LoaiBean(String maLoai, String tenLoai) {
super();
this.maLoai = maLoai;
this.tenLoai = tenLoai;
}
}
package dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import bean.LoaiBean;
public class LoaiDao {
private DBConnection dbConnection = null;
public LoaiDao() {
super();
this.dbConnection = new DBConnection("bookdb");
}
public LoaiDao(DBConnection dbConnection) {
super();
this.dbConnection = dbConnection;
}
/**
* get list of categories
* @return {@link ArrayList}
*/
public ArrayList<LoaiBean> getLoai(){
Connection connection = this.dbConnection.getConnection(true);
ArrayList<LoaiBean> loais = new ArrayList<LoaiBean>();
try {
Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery("select * from loai");
while(rs.next()) {
loais.add(new LoaiBean(
rs.getString("maloai"),
rs.getString("tenloai")
));
}
} catch (SQLException e) {
e.printStackTrace();
}
return loais;
}
}
package dao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class DBConnection {
private String server = "localhost";
private String port = "1433";
private String databaseName = null;
private String user = "sa";
private String password = "123";
private Connection connection = null;
public String getServer() {
return server;
}
public void setServer(String server) {
this.server = server;
}
public String getPort() {
return port;
}
public void setPort(String port) {
this.port = port;
}
public String getDatabaseName() {
return databaseName;
}
public void setDatabaseName(String databaseName) {
this.databaseName = databaseName;
}
public String getUser() {
return user;
}
public void setUser(String user) {
this.user = user;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public Connection getConnection(boolean autoConnect) {
if(autoConnect && this.connection == null) {
this.connect();
}
return connection;
}
public void setConnection(Connection connection) {
this.connection = connection;
}
public DBConnection(String databaseName) {
super();
this.databaseName = databaseName;
}
public void connect() {
if(this.databaseName == null) {
return;
}
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
String st = "jdbc:sqlserver://"+this.server+":"+this.port+";databaseName="+this.databaseName+";user="+this.user+";password="+this.password;
try {
this.connection = DriverManager.getConnection(st);
} catch (SQLException e) {
e.printStackTrace();
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
public void reconnect() {
this.disconnect();
this.connect();
}
public void disconnect() {
if(this.connection != null) {
try {
this.connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
package bo;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import bean.LoaiBean;
import dao.LoaiDao;
public class LoaiBo {
private LoaiDao dao = null;
public LoaiDao getDao() {
return dao;
}
public void setDao(LoaiDao dao) {
this.dao = dao;
}
public LoaiBo() {
super();
this.dao = new LoaiDao();
}
public LoaiBo(LoaiDao dao) {
super();
this.dao = dao;
}
public ArrayList<LoaiBean> getLoai(){
return this.dao.getLoai();
}
}
我的LoaiBo课程:
package bean;
public class LoaiBean {
private String maLoai;
private String tenLoai;
public String getMaLoai() {
return maLoai;
}
public void setMaLoai(String maLoai) {
this.maLoai = maLoai;
}
public String getTenLoai() {
return tenLoai;
}
public void setTenLoai(String tenLoai) {
this.tenLoai = tenLoai;
}
public LoaiBean(String maLoai, String tenLoai) {
super();
this.maLoai = maLoai;
this.tenLoai = tenLoai;
}
}
package dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import bean.LoaiBean;
public class LoaiDao {
private DBConnection dbConnection = null;
public LoaiDao() {
super();
this.dbConnection = new DBConnection("bookdb");
}
public LoaiDao(DBConnection dbConnection) {
super();
this.dbConnection = dbConnection;
}
/**
* get list of categories
* @return {@link ArrayList}
*/
public ArrayList<LoaiBean> getLoai(){
Connection connection = this.dbConnection.getConnection(true);
ArrayList<LoaiBean> loais = new ArrayList<LoaiBean>();
try {
Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery("select * from loai");
while(rs.next()) {
loais.add(new LoaiBean(
rs.getString("maloai"),
rs.getString("tenloai")
));
}
} catch (SQLException e) {
e.printStackTrace();
}
return loais;
}
}
package dao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class DBConnection {
private String server = "localhost";
private String port = "1433";
private String databaseName = null;
private String user = "sa";
private String password = "123";
private Connection connection = null;
public String getServer() {
return server;
}
public void setServer(String server) {
this.server = server;
}
public String getPort() {
return port;
}
public void setPort(String port) {
this.port = port;
}
public String getDatabaseName() {
return databaseName;
}
public void setDatabaseName(String databaseName) {
this.databaseName = databaseName;
}
public String getUser() {
return user;
}
public void setUser(String user) {
this.user = user;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public Connection getConnection(boolean autoConnect) {
if(autoConnect && this.connection == null) {
this.connect();
}
return connection;
}
public void setConnection(Connection connection) {
this.connection = connection;
}
public DBConnection(String databaseName) {
super();
this.databaseName = databaseName;
}
public void connect() {
if(this.databaseName == null) {
return;
}
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
String st = "jdbc:sqlserver://"+this.server+":"+this.port+";databaseName="+this.databaseName+";user="+this.user+";password="+this.password;
try {
this.connection = DriverManager.getConnection(st);
} catch (SQLException e) {
e.printStackTrace();
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
public void reconnect() {
this.disconnect();
this.connect();
}
public void disconnect() {
if(this.connection != null) {
try {
this.connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
package bo;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import bean.LoaiBean;
import dao.LoaiDao;
public class LoaiBo {
private LoaiDao dao = null;
public LoaiDao getDao() {
return dao;
}
public void setDao(LoaiDao dao) {
this.dao = dao;
}
public LoaiBo() {
super();
this.dao = new LoaiDao();
}
public LoaiBo(LoaiDao dao) {
super();
this.dao = dao;
}
public ArrayList<LoaiBean> getLoai(){
return this.dao.getLoai();
}
}
包bo;
导入java.sql.Connection;
导入java.sql.PreparedStatement;
导入java.sql.ResultSet;
导入java.sql.SQLException;
导入java.util.ArrayList;
导入bean.LoaiBean;
导入dao.LoaiDao;
公共类LoaiBo{
私有LoaiDao-dao=null;
公共贷款{
返回道;
}
公共无效setDao(LoaiDao dao){
this.dao=dao;
}
公共贷款{
超级();
this.dao=新LoaiDao();
}
公共LoaiBo(LoaiDao道){
超级();
this.dao=dao;
}
公共数组列表getLoai(){
返回这个.dao.getLoai();
}
}
和我的JSP文件tc.JSP:
<%@page import="bean.LoaiBean"%>
<%@page import="java.util.ArrayList"%>
<%@page import="bo.LoaiBo"%>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">
</head>
<body>
<%
LoaiBo bo = new LoaiBo();
ArrayList<LoaiBean> loais = bo.getLoai(); // error is showed here
%>
<div class="row justify-content-center">
<div class="col-md-4 col-sm-6 col-xs-12">
<ul class="list-group">
<% for (LoaiBean loaiBean : loais) { %>
<li class="list-group-item"><%= loaiBean.getMaLoai() %></li>
<% } %>
</ul>
</div>
</div>
</body>
</html>
在此处插入标题
当我运行上面的文件tc.jsp时,会出现以下错误:
HTTP状态500–内部服务器错误
类型异常报告
消息在第[17]行处理[/tc.jsp]时发生异常
说明服务器遇到意外情况,无法满足请求。
例外情况
org.apache.jasper.jaspereException:在第[17]行处理[/tc.jsp]时发生异常
14:
15:
19:
20:
堆栈跟踪:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:625)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:514)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:385)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:329)
javaservlet.http.HttpServlet.service(HttpServlet.java:741)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
根本原因
java.lang.NullPointerException
dao.LoaiDao.getLoai(LoaiDao.java:39)
bo.LoaiBo.getLoai(LoaiBo.java:40)
org.apache.jsp.tc_jsp._jsp服务(tc_jsp.java:140)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javaservlet.http.HttpServlet.service(HttpServlet.java:741)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:476)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:385)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:329)
javaservlet.http.HttpServlet.service(HttpServlet.java:741)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
注意:根本原因的完整堆栈跟踪可在服务器日志中找到。
当我使用带有main函数的java核心类进行测试时,这些函数正常运行,但不在jsp文件中运行
我正在使用eclipse、Tomcat9和Java8
我不知道如何解决这个问题。我希望人们能帮助我。谢谢。您可以像下面这样尝试从LoaiDao.class获取列表对象
<%
LoaiDao loaiDao = new LoaiDao();
ArrayList<LoaiBean> loais = loaiDao.getLoai();
%>
在LoaiBo.java中添加一个调试。我认为这个.dao.getLoai()有问题。谢谢你的回答,我试过测试这个函数,它运行正常。欢迎,如果您的问题解决了,请批准jsp文件仍然没有运行,我刚刚测试了正常运行的函数。您好。请删除错误图像并将其粘贴为代码,好吗?如果有人遇到与您相同的错误,他们将无法通过谷歌搜索该问题,因为谷歌不读取图像文本:)感谢您的回复。我试图从LoaiDao获取列表,但仍然是相同的错误。