Java 为什么我会收到http 500响应?
我正试图通过对路径参数使用“ID”来检索数据库中的值。但是,在尝试检索这些值时,我在URi()中得到HTTP 500响应。下面是我的刀课。如果需要,我还可以提供我的资源类。如有任何反馈,将不胜感激Java 为什么我会收到http 500响应?,java,http,get,localhost,derby,Java,Http,Get,Localhost,Derby,我正试图通过对路径参数使用“ID”来检索数据库中的值。但是,在尝试检索这些值时,我在URi()中得到HTTP 500响应。下面是我的刀课。如果需要,我还可以提供我的资源类。如有任何反馈,将不胜感激 DetailsDAO package dao; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; imp
DetailsDAO
package dao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
public class DetailsDAO {
private Connection con = null;
public DetailsDAO() {
try {
System.out.println("Loading db driver...");
//Class.forName("org.apache.derby.jdbc.ClientDriver");
System.out.println("Driver loaded...");
con = DriverManager.getConnection(
"jdbc:derby://localhost:1527/SOA4_DB",
"sean",
"sean");
} catch (SQLException ex) {
System.out.println("Exception!");
ex.printStackTrace();
}
}
public static void main(String[] args) {
DetailsDAO dao = new DetailsDAO(); // connect to db
List<Details> detailsList = dao.getAllDetails();
for (Details d : detailsList) {
System.out.println(d);
}
}
public List<Details> getAllDetails() {
List<Details> detailsList = new ArrayList<>();
try {
// SQL in here
PreparedStatement ps = con.prepareStatement(
"SELECT * FROM APP.DETAILS"
);
ResultSet rs = ps.executeQuery();
while (rs.next()) {
Details d = new Details
(rs.getInt("ID"),
rs.getString("NAME"),
rs.getInt("AGE"),
rs.getTimestamp("TIMESTAMP"));
detailsList.add(d);
}
} catch (SQLException ex) {
System.err.println("\nSQLException");
ex.printStackTrace();
}
return detailsList;
}
public Details getDetails(int id){
Details details = null;
try{
// SQL in here
PreparedStatement pstmt = con.prepareStatement(
"SELECT ID, NAME, AGE, TIMESTAMP, "
+ "FROM APP.DETAILS "
+ "WHERE (ID = ?)");
pstmt.setInt(1, id);
ResultSet rs = pstmt.executeQuery();
// move the cursor to the start
if(!rs.next()){ // !F == T
return null;
}
// we have at least one record
details = new Details
(rs.getInt("ID"),
rs.getString("NAME"),
rs.getInt("AGE"),
rs.getTimestamp("TIMESTAMP"));
} catch (SQLException ex) {
Logger.getLogger(DetailsDAO.class.getName()).log(Level.SEVERE, null, ex);
System.err.println("\nSQLException");
ex.printStackTrace();
}
return details;
}
}
DetailsDAO
包道;
导入java.sql.Connection;
导入java.sql.DriverManager;
导入java.sql.PreparedStatement;
导入java.sql.ResultSet;
导入java.sql.SQLException;
导入java.util.ArrayList;
导入java.util.List;
导入java.util.logging.Level;
导入java.util.logging.Logger;
公共类详细信息{
私有连接con=null;
公开资料{
试一试{
System.out.println(“加载数据库驱动程序…”);
//forName(“org.apache.derby.jdbc.ClientDriver”);
System.out.println(“驱动程序加载…”);
con=DriverManager.getConnection(
“jdbc:derby://localhost:1527/SOA4_DB",
“肖恩”,
“肖恩”);
}catch(SQLException-ex){
System.out.println(“异常!”);
例如printStackTrace();
}
}
公共静态void main(字符串[]args){
DetailsDAO dao=newdetailsdao();//连接到数据库
List detailsList=dao.getAllDetails();
对于(详细信息d:详细信息列表){
系统输出打印ln(d);
}
}
公共列表getAllDetails(){
List detailsList=new ArrayList();
试一试{
//SQL在这里
准备好的报表ps=con.prepareStatement(
“从应用程序详细信息中选择*”
);
结果集rs=ps.executeQuery();
while(rs.next()){
细节d=新细节
(rs.getInt(“ID”),
rs.getString(“名称”),
rs.getInt(“年龄”),
rs.getTimestamp(“时间戳”);
详细信息列表。添加(d);
}
}catch(SQLException-ex){
System.err.println(“\nsqleexception”);
例如printStackTrace();
}
返回详细信息列表;
}
公共详细信息getDetails(内部id){
Details=null;
试一试{
//SQL在这里
准备好的报表pstmt=con.prepareStatement(
选择ID、名称、年龄、时间戳
+“来自APP.DETAILS”
+“其中(ID=?)”;
pstmt.setInt(1,id);
结果集rs=pstmt.executeQuery();
//将光标移到起点
如果(!rs.next()){/!F==T
返回null;
}
//我们至少有一项记录
详细信息=新的详细信息
(rs.getInt(“ID”),
rs.getString(“名称”),
rs.getInt(“年龄”),
rs.getTimestamp(“时间戳”);
}catch(SQLException-ex){
Logger.getLogger(DetailsDAO.class.getName()).log(Level.SEVERE,null,ex);
System.err.println(“\nsqleexception”);
例如printStackTrace();
}
退货详情;
}
}
在查询中的时间戳之后有额外的逗号
PreparedStatement pstmt = con.prepareStatement(
"SELECT ID, NAME, AGE, TIMESTAMP, "
+ "FROM APP.DETAILS "
+ "WHERE (ID = ?)");
服务器上是否生成了异常和/或堆栈跟踪?@NotaJD exception javax.servlet.ServletException:java.lang.NullPointerException根本原因java.lang.NullPointerException