Java 单击“提交”时出现空指针异常
我用Java和sql创建了一个用户管理(创建、读取、更新、删除)。 这是我的刀:Java 单击“提交”时出现空指针异常,java,jsp,servlets,input,nullpointerexception,Java,Jsp,Servlets,Input,Nullpointerexception,我用Java和sql创建了一个用户管理(创建、读取、更新、删除)。 这是我的刀: private static final String UPDATE = "UPDATE user set login_user=?, pwd_user=?, id_role=? where id_user=? "; @Override public void update_user(User user) throws DAOException { Connection connexion = null;
private static final String UPDATE = "UPDATE user set login_user=?, pwd_user=?, id_role=? where id_user=? ";
@Override
public void update_user(User user) throws DAOException {
Connection connexion = null;
PreparedStatement preparedStatement = null;
ResultSet resultSet = null;
try {
connexion = (Connection) dao_factory.getConnection();
preparedStatement = connexion.prepareStatement(UPDATE);
preparedStatement.setString(1, user.getLogin());
preparedStatement.setString(2, user.getPwd());
preparedStatement.setInt(3, user.getRole());
preparedStatement.setLong(4, user.getId_user());
preparedStatement.executeUpdate();
} catch (SQLException e) {
throw new DAOException(e);
}
}
更新用户的我的jsp:
<%
if(action.equalsIgnoreCase("edit")){
%>
<form method="get" action="client">
<div class="form-group">
<input type="text" class="form-control" id="login" name="login" placeholder="login">
<a href="client?action=update&id=${ user_edit.id_user }" class="btn btn-primary">Update</a>
</div>
</form>
<% } %>
我的第一个问题是,当我点击“更新”按钮时,它工作了。但如果我按enter键,就会出现空指针异常
第二个问题是,如果我想用stringlogin=request.getParameter(“login”)恢复登录用户
和user.setLogin(登录)代码>登录值在db中为空
非常感谢
编辑:
下面是堆栈跟踪:
Avertissement: StandardWrapperValve[client]: Servlet.service() for servlet `client threw exception`
java.lang.NullPointerException
at egame.servlets.admin.client.processRequest(client.java:53)
at egame.servlets.admin.client.doGet(client.java:94)
- 第53行:
if(action.equalsIgnoreCase(“delete”)
李>
- 第94行是空的
ResultSet ResultSet=null;
调用update user后,它仍然为null
在任何情况下,您都试图访问
servlet将始终调用request.setAttribute(“client”,user_dao.find_all())
如果不希望仅在非更新情况下使用else,请使用else。您的HTML/JSP是错误的。您创建了一个HTML表单,但您所说的“按钮”实际上只是一个独立的链接。这就是你提到这两个问题的原因:
单击链接时,表单未提交
当您按enter键时,表单将被提交,但没有您在URL中输入的数据
你需要把它改成
<%
if(action.equalsIgnoreCase("edit")){
%>
<form method="post" action="client">
<div class="form-group">
<input type="text" class="form-control" id="login" name="login" placeholder="login">
<input type="hidden" id="action" value="update" >
<input type="hidden" id="id" value="${ user_edit.id_user }" >
<button type="submit" class="btn btn-primary">Update</a>
</div>
</form>
<% } %>
更新
侧节点:从不使用HTTP GET向服务器提交任何更改。如果您更改服务器上的数据,它应该是POST(或DELETE,或PUT但不是GET)。堆栈跟踪是什么?你做了什么来调试它?添加了堆栈。谢谢
<%
if(action.equalsIgnoreCase("edit")){
%>
<form method="post" action="client">
<div class="form-group">
<input type="text" class="form-control" id="login" name="login" placeholder="login">
<input type="hidden" id="action" value="update" >
<input type="hidden" id="id" value="${ user_edit.id_user }" >
<button type="submit" class="btn btn-primary">Update</a>
</div>
</form>
<% } %>