Servlet没有转发到另一个JSP

问题描述

| 我有一个JSP文件
Signup.jsp
,它提交给
UserDetails
servlet,该servlet将用户详细信息插入数据库\“ tblusers \”中,并在成功插入数据后转发给
ElecBill.jsp
。不是转发到
ElecBill.jsp
,而是转发到
Signup.jsp
。换句话说,数据插入失败。 这是servlet代码
package com.elecbill;

import java.io.*;
import java.sql.*;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import javax.servlet.Requestdispatcher;
import javax.servlet.servletexception;


public class UserDetails extends HttpServlet
{
public void doPost(HttpServletRequest request,HttpServletResponse response)
throws javax.servlet.servletexception,IOException
{

String userid=request.getParameter(\"uid\");
String firstname=request.getParameter(\"fname\");
String lastname=request.getParameter(\"lname\");
String phonenum=request.getParameter(\"phone\");
String mobilenum=request.getParameter(\"mobile\");
String email=request.getParameter(\"email\");
String login=request.getParameter(\"loginid\");
String pass=request.getParameter(\"pass\");
String pass1=request.getParameter(\"pass1\");
try
{

Class.forName(\"com.MysqL.jdbc.Driver\");
Connection conn = DriverManager.getConnection(\"jdbc:MysqL://localhost:3306/elecbill\",\"root\",\"root\");    
String query=\"insert into tblusers(\'\"+userid+\"\',\'\"+firstname+\"\',\'\"+lastname+\"\',\'\"+phonenum+\"\',\'\"+mobilenum+\"\',\'\"+email+\"\',\'\"+login+\"\',\'\"+pass+\"\',\'\"+pass1+\"\')\";

Statement s=conn.createStatement();
ResultSet rs=s.executeQuery(\"select * from tblusers\");
boolean str=false;
while(rs.next())
{
    if((rs.getString(6).equals(login)))
    {
        str=true;
    }
}
   if(!str)
{
    s.executeUpdate(query);
    HttpSession ses=request.getSession(true);
    ses.setAttribute(\"login\",login);
    Requestdispatcher rq=request.getRequestdispatcher(\"ElecBill.jsp\");
    request.setAttribute(\"msg\",\"Registered Successfully\");
    rq.forward(request,response);
    System.out.println(\"Successfully\");

}
  else
{
 Requestdispatcher rq=request.getRequestdispatcher(\"signup.jsp\");
 request.setAttribute(\"msg\",\"Im Already in use. Choose another Id\");
 rq.forward(request,response);


}

  }
  catch (Exception e)
  {
e.printstacktrace();
  }

 }

}
这个问题是怎么引起的,我该如何解决?     

解决方法

        数据插入没有失败。甚至,根据代码流,它根本没有被执行。根据您的代码流,这仅意味着用户提供的
loginid
参数与表行之一的第6列的值匹配。 尝试提供其他“ 6”值。 与具体问题无关,这段代码对SQL注入攻击很敏感。使用
PreparedStatement
。另外,在这段代码中查找现有的登录ID效率很低,因为您要将整个数据库表复制到Java的内存中,并使用Java而不是SQL进行比较。了解如何使用
WHERE
子句,而仅使用
boolean exist = resultSet.next()
。