Index.jsp:
<form action="stu_app_serv" method="post">
<table class="table">
<%
try {
String sql = "SELECT * FROM students WHERE approved = ?";
Connection conn = DBConnect.connect();
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, 0);
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
%>
<tbody>
<tr>
<td><input disabled name="id" value="<%=rs.getInt("st_id")%>"></td>
<td><%=rs.getString("name")%></td>
<td><%=rs.getString("university")%></td>
<td><%=rs.getString("index_no")%></td>
<td><%=rs.getString("email")%></td>
<td>
<button class="btn btn-success" type="submit" name="approve">Approve </button>
<button class="btn btn-danger" type="submit" name="decline">Decline</button>
</td>
</tr>
</tbody>
<%}
rs.close();
pstmt.close();
conn.close();
} catch (SQLException e) {
System.out.println("Error " + e.getMessage());
}
%>
</table>
</form>
Servlet文件是stu_app_serv.java:
String id = request.getParameter("id");
int x = Integer.parseInt(id);
st_id是学生id号。显示以下运行时错误:
java.lang.NumberFormatException:空
servlet行中的
int x=Integer.parseInt(id);
如何修复此错误?
您应该处理Null值并将其放入try-catch块中。有一件事是不要在表示层做业务逻辑。正如您在这里用jsp编写代码,而不是在服务类或servlet中编写代码。
String id = request.getParameter("id");
int x = 0;
if(id!=null){
try{
x = Integer.parseInt(id);
}catch(Exception e){
}
}
首先检查id是否为空,并且必须是有效的数字。您可以使用Regex来检查或捕获该异常。。
创建这个简单程序时:
public static void main(String[] args)
{
String id = null;
int x = Integer.parseInt(id);
}
你可以看到你会得到一个NPE。
因此可以假设您发送的id
为空。