1

emailid私のプロジェクトでは、ユーザーは自分とを入力してログインしpasswordます。両方が一致する場合、1つは正常にログインできます。そうでない場合、彼はページにリダイレクトされ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();
        }
    }
}

私はログイン中に発生する可能性のあるすべてのケースをカバーしようとしました。次の場合、ユーザーはアクセスできません

  1. 両方のフィールドは空のままです。
  2. email(正しいデータまたは誤ったデータで)password入力されますが、入力されません。
  3. 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

しかし、それも仕方がありませんでした!

4

3 に答える 3

0

シンプルな

else

それ以外の

else if(loginemail.equals(regemail) && (loginpassword.equals(regpassword))==false)

また、Java演算子の優先順位情報を確認してください。

として、あなたは持っています、それは次loginemail.equals(regemail) && (loginpassword.equals(regpassword))==falseのように扱われるようです:false && false == false-これはfalseを返します。

于 2012-07-27T12:07:51.280 に答える
0

空白のページが表示されます。これはif、ページにリダイレクトするためにコード内のどの条件も実行されていないことを意味します。

私はあなたが達成しようとしていることを理解できませんでした。理想的には、次の2つの条件のみが必要です。

  1. 正しいメールアドレスとパスワードの両方でUsersHomeにリダイレクトします。

  2. どちらかが正しくない場合は、ウェルカムページにリダイレクトしてください。

コードスニペット:

// Servlet instance variable
String redirectPage = "WelcomePage.jsp";

変化する

if(loginemail.equals("")||loginemail.equals(" ")||loginpassword.equals("")||loginpassword.equals(" "))
        response.sendRedirect("WelcomePage.jsp");

    if(loginemail.equals("")||loginemail.equals(" ")||loginpassword.equals("")||loginpassword.equals(" "))
         redirectMyPage(response);
    // There should be only one record. So, If should be used.
    if(rs.next()) {
        //In my opinion there is no need of this. But you haven't mentioned your DAO part.
        // You should write DAO in such manner that if both email and password are correct, then
        // only return a record from the database.
        if(loginemail.equals(regemail) && (loginpassword.equals(regpassword))==true)
        {
            //Your other code ...
            HttpSession session = request.getSession(true);
            session.setAttribute("USERID", userid);
            session.setAttribute("FNAME", fname);
            redirectPage = UserHome.jsp";
        }
        // No need of else
    }
    redirectMyPage(response);
    //.. Other code
}

private void redirectMyPage(HttpResponse response){
    response.sendRedirect(redirectPage);
    return;
}
于 2012-07-27T12:09:26.370 に答える
-1

長い間試した後、私はついに動作するコードを手に入れました。そしてここにあります:

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");
    }
    else{
    g.setloginemail(loginemail);
    g.setloginpassword(loginpassword);
    try {
        ResultSet rs=dao.loginauthentication(g);
        while(rs.next())   //Fetching all emails and passwords from user table
        {
            String regemail=rs.getString("regemail");
            String regpassword=rs.getString("regpassword");
            System.out.println(""+regemail);
            if(loginemail.equals(regemail) && (loginpassword.equals(regpassword)))
            {   
                System.out.println("55555");
                ResultSet rs1=dao.getnameid(g);
                while(rs1.next())   //GET USERID and name FROM NEWUSER TO USE AS PRIMARY KEY
                {
                     userid=rs1.getString("USERID");
                     fname=rs1.getString("FNAME");
                    System.out.println(""+userid);

                }

                HttpSession session = request.getSession(true);
                  session.setAttribute("USERID", userid);
                  session.setAttribute("FNAME", fname);
                response.sendRedirect("UserHome.jsp");
                break;
            }

        }

    } catch (ClassNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }       
}
}
}

私を助けてくれたみんなに感謝します!!

于 2012-07-27T13:28:38.390 に答える