【问题标题】:Servlet is not forwarding to another JSPServlet 没有转发到另一个 JSP
【发布时间】:2011-05-30 13:46:21
【问题描述】:

我有一个 JSP 文件 Signup.jsp 提交到 UserDetails 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();
  }

 }

}

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

【问题讨论】:

    标签: jsp servlets jdbc


    【解决方案1】:

    数据的插入没有失败。更重要的是,根据代码流,它根本没有被执行。根据您的代码流程,这仅表示用户提供的loginid 参数与其中一个表行的第 6 列的值匹配。

    尝试提供不同的loginid 值。


    与具体问题无关,这段代码对SQL injectionattacks敏感。使用PreparedStatement。此外,在这段代码中查找现有登录 ID 的效率非常低,因为您将整个 DB 表复制到 Java 的内存中并在 Java 中而不是在 SQL 中进行比较。了解如何使用WHERE clause,只需使用boolean exist = resultSet.next()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-06-25
      • 1970-01-01
      • 1970-01-01
      • 2014-06-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多