Сервлет не пересылается на другую JSP - PullRequest
0 голосов
/ 30 мая 2011

У меня есть файл JSP Signup.jsp, который отправляет сервлету UserDetails, который вставляет данные пользователя в базу данных "tblusers" и пересылает в ElecBill.jsp после успешной вставки данных. Вместо пересылки на ElecBill.jsp он пересылается на Signup.jsp. Другими словами, вставка данных не удалась.

Вот код сервлета:

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();
  }

 }

}

Как возникает эта проблема и как я могу ее решить?

1 Ответ

2 голосов
/ 30 мая 2011

Вставка данных не удалась.Более того, в соответствии с потоком кода он вообще не выполняется.В соответствии с вашим потоком кода это просто означает, что предоставленный пользователем параметр loginid соответствует значению шестого столбца одной из строк таблицы.

Попробуйте указать другое значение loginid.


Не связанный с конкретной проблемой, этот фрагмент кода чувствителен к SQL-инъекциям атак .Используйте PreparedStatement.Кроме того, поиск существующего идентификатора входа в систему в этом фрагменте кода очень неэффективен, поскольку вы копируете всю таблицу БД в память Java и выполняете сравнение в Java, а не в SQL.Узнайте, как использовать WHERE предложение и просто используйте boolean exist = resultSet.next().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...