Java 从数据库检索数据时发生NullPointerException
当我试图从数据库中检索数据时,它会显示NullPointerException 以下是我的servlet代码:Java 从数据库检索数据时发生NullPointerException,java,jsp,servlets,Java,Jsp,Servlets,当我试图从数据库中检索数据时,它会显示NullPointerException 以下是我的servlet代码: public class displayData extends HttpServlet { String query; Connection conn; Statement st; ResultSet res; ConnectionManager dbconn; List lst= new ArrayList(); protec
public class displayData extends HttpServlet {
String query;
Connection conn;
Statement st;
ResultSet res;
ConnectionManager dbconn;
List lst= new ArrayList();
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try
{
dbconn= new ConnectionManager();
conn=dbconn.getConnection();
st=conn.createStatement();
query="select * from reg";
res=dbconn.getResultSet(query, conn);
System.out.println(res);
while(res.next())
{
lst.add(res.getString("uname"));
lst.add(res.getString("password"));
}
res.close();
}catch(Exception e)
{
RequestDispatcher rd= request.getRequestDispatcher("/error.jsp");
rd.forward(request, response);
}
finally
{
request.setAttribute("EmpData", lst);
response.sendRedirect("/success.jsp");
RequestDispatcher rd= request.getRequestDispatcher("/success.jsp");
rd.forward(request, response);
lst.clear();
out.close();
}
}
下面是使用上述servlet代码从数据库检索数据的JSP代码:
<body>
<h1>Employee List</h1>
<% Iterator itr;%>
<% List data = (List) request.getAttribute("EmpData");
for(itr=data.iterator(); itr.hasNext();)
{
%>
<tr>
<% String s= (String) itr.next();%>
<td><%=s%></td>
<td><%=itr.next()%></td>
<td><input type="submit" value="Edit" onclick="editRecord(<%=s%>;)"</td>
<td><input type="submit" value="Delete" onclick="deleteRecord(<%=s%>;)"</td>
<%}%>
</tr>
</body>
员工名单
在看到您的Servlet代码后,我发现了多个问题,让我们逐一讨论
我不确定您是否将servlet定义为servlet。
在web.xml中进行映射或添加如下注释
@WebServlet(“/displayData”)公共类displayData扩展
HttpServlet{
在servlet中没有doGet和doPost方法
容器不会调用方法processRequest。或者
放置doGet并调用您的服务方法或重命名您的服务方法
至doGet。参考-
您在try-catch-finally块中执行的灾难。finally将始终被调用,因此在那里编写重定向代码是没有用的,因为它也将在catch之后执行。此外,finally块的前四行会导致严重问题。您不应同时调用sendRedirect和forward,然后再调用另一行。也不要同时调用sendRedirect或do forward,但不能同时执行这两项操作。
您将获得此异常illegalstateexception无法在提交响应后转发
引用-
在这种情况下,您必须执行转发或发送重定向
使用forward作为其服务器端操作。引用-
根据你的jsp路径做转发。如果你的成功和错误
jsp直接位于Webcontent下面,然后这样做
request.getRequestDispatcher(“success.jsp”);
更改这些内容,如果不起作用请再试一次让我知道请共享您的堆栈跟踪,以了解哪行代码可能出现异常?您是否收到此消息??java.lang.IllegalStateException:在提交响应后无法转发对于servlet jsp在org.apache.jsp.success\u jsp.\u jspService(success\u jsp.java:66)抛出的异常java.lang.NullPointerException,我已经在代码中解决了上述问题,但仍然出现错误…..警告:“StandardWrapperValve[jsp]:servlet.service()对于servlet,jsp在org.apache.jsp.success\u jsp.\u jspService(success\u jsp.java:66)抛出异常java.lang.NullPointerException'如果列表为空,只需在jsp中执行空检查谢谢您的响应。……问题解决了。……我试图直接调用jsp文件,而不设置属性。……我必须先调用servlet。……谢谢…………所以您一直在直接点击jsp??耶……它在插入数据时工作……但在显示数据时却不工作工作