在我的项目中,用户通过提供他/她emailid和password. 如果两者都匹配,则可以成功登录。如果不是,他将被重定向到UserHome.jsp页面。这是我的代码:
import getset.Getset;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import accessdb.Dao;
public class LoginAuthentication extends HttpServlet {
    private static final long serialVersionUID = 1L;
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // Authentication and Logging in The Registered User
        Getset g=new Getset();
        Dao dao=new Dao();
        String userid="";
        String fname="";
        //    PrintWriter pw=response.getWriter();
        String loginemail=request.getParameter("loginemail");
        String loginpassword=request.getParameter("loginpassword");
        if (loginemail.equals("") || 
            loginemail.equals(" ") || 
            loginpassword.equals("") || 
            loginpassword.equals(" "))
            response.sendRedirect("WelcomePage.jsp");
        g.setloginemail(loginemail);
        g.setloginpassword(loginpassword);
        try {
            ResultSet rs=dao.loginauthentication(g);
            while(rs.next())
            {
                String regemail=rs.getString("regemail");
                String regpassword=rs.getString("regpassword");
                if(loginemail.equals(regemail) && 
                   (loginpassword.equals(regpassword))==true)
                {
                    ResultSet rs1=dao.getnameid(g);
                    while(rs1.next())
                    {
                         userid=rs1.getString("USERID");
                         fname=rs1.getString("FNAME");
                    }
                    HttpSession session = request.getSession(true);
                    session.setAttribute("USERID", userid);
                    session.setAttribute("FNAME", fname);
                    response.sendRedirect("UserHome.jsp");
                    break;
                }
                else if(loginemail.equals(regemail) && (loginpassword.equals(regpassword))==false)
                {
                    response.sendRedirect("WelcomePage.jsp");
                    return;
                }
            }
        } 
        catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } 
        catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}
我试图涵盖登录过程中可能出现的所有情况。如果用户无法访问
- 两个字段都为空。
- email已填充(使用正确或不正确的数据),但未- password填充。
- password已填充(使用正确或不正确的数据),但未- emailid填充。
我试图覆盖但没有发生的区域是,如果任何字段填充了不正确的数据,则不要让用户访问。对于这一部分,我已经在代码中编写了:
 if(loginemail.equals(regemail) && (loginpassword.equals(regpassword))==true)
     //user accesses
 else 
     if(loginemail.equals(regemail) && (loginpassword.equals(regpassword))==false)
         //user cannot access
但我不知道为什么它没有显示预期的行为,并且当两个字段都填充了不正确的数据时,用户被重定向到一个空白页面!
补充:我也试过
if(loginemail.equals(regemail) && (loginpassword.equals(regpassword)))
   //User accesses
 else if(!loginemail.equals(regemail) || (!loginpassword.equals(regpassword)))
  //User cannot access
但这也无济于事!