You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

IF条件不成立时Else语句未执行问题及代码修改方案咨询

解决JSP中OTP验证后邮箱匹配提示不执行的问题

问题根源

你写的SQL查询语句select * from empinfo where EEMailID='"+eemail+"'已经限定了只返回邮箱等于eemail的记录,所以ResultSet里的每条记录的EEMailID必然和你从session里取的eemail相等,while循环里的else分支永远不会触发。如果这个邮箱压根没在empinfo表中注册,rs.next()会直接返回false,循环都进不去,自然看不到"Enter Registered Email Id only"的提示。

修改方案

  1. 先判断查询结果是否存在记录,不存在直接输出错误提示
  2. 去掉循环内多余的邮箱相等判断(因为查询条件已经保证了匹配)
  3. 把Statement换成PreparedStatement,避免SQL注入风险

修改后的代码

<%
try 
{
    String enteredOtp = request.getParameter("otps");           
    String actualOtp = (String) session.getAttribute("OTP");
    
    if (enteredOtp.equals(actualOtp)) 
    {
        String eemail = (String)session.getAttribute("eemail"); 
        Connection con;                      
        Class.forName("com.mysql.jdbc.Driver");
        con = DriverManager.getConnection("jdbc:mysql://localhost:3306/mysql","root","12345");                             
                     
        // 用PreparedStatement避免SQL注入
        String sql = "select EUsername from empinfo where EEMailID=?";
        PreparedStatement pstm = con.prepareStatement(sql);
        pstm.setString(1, eemail);
        ResultSet rs = pstm.executeQuery();
        
        if(rs.next()){
            // 有匹配记录,显示修改密码链接
            String uid = rs.getString("EUsername"); %>               
            <a href="ChangePassword.jsp?uid=<%=uid%>">Change Password</a> 
<%               
        } else { 
            // 无匹配记录,输出提示
            out.println("Enter Registered Email Id only");
        }
        // 关闭资源避免连接泄漏
        rs.close();
        pstm.close();
        con.close();
    }           
    else {
       out.println("WRONG OTP ENTERED");
    }
}       
catch(Exception e){
   out.println(e);
}
%>

额外说明

  • 新增了数据库资源关闭操作,避免长期占用连接导致泄漏
  • 使用PreparedStatement不仅能防止SQL注入,还能避免邮箱含特殊字符(如单引号)时的SQL语法错误

内容的提问来源于stack exchange,提问作者Diana

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 21:13:09