2017-08-08 8 views
0

パスワードをハードコードし、ユーザー名をデータベースから取得したログインを行うプロジェクトがあります。私はシンプルなindex.jspを使用して、ユーザー名とパスワードを入力します。info.jspは、資格が正しい場合にアクセスできます.eque.jspは、資格が間違っていて、サーブレットにログインします。データベースの検証によるハードコードされたパスワードとユーザー名

これは私のログインサーブレットです:

package webAccess; 

import java.io.*; 
import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.ResultSet; 
import java.sql.SQLException; 
import java.sql.Statement; 

import javax.servlet.*; 
import javax.servlet.annotation.WebServlet; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 



@WebServlet("/Login") 
public class Login extends HttpServlet { 
    private static final long serialVersionUID = 1L; 

    protected void doPost(HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException { 

     String username = request.getParameter("username"); 
     String password = request.getParameter("password"); 

     try{ 
      Class.forName("oracle.jdbc.driver.OracleDriver"); 
      Connection con = DriverManager.getConnection("","", ""); 
      Statement st = con.createStatement(); 
      ResultSet rs; 
      rs = st.executeQuery("select * from user where USERID=?"); 



      if(username.equals(rs.getString("USERID")) && password.equals("password")){ 


       response.sendRedirect("info.jsp"); 
      } 
      else { 
       response.sendRedirect("index.jsp"); 
      } 


     } 

     catch (ClassNotFoundException | SQLException e) { 
      e.printStackTrace(); 
     } 
    } 
} 

それindex.jspの中に私の入力資格情報はちょうど空白スペースをロードした後。

私はこれに私のコードを変更:ユーザ名とパスワードは、ユーザー名が正しいとパスワードが、それはerror.jspにリダイレクトされますではない場合、それは、info.jspにリダイレクトされます正しい場合

package webAccess; 

import java.io.*; 
import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.PreparedStatement; 
import java.sql.ResultSet; 
import javax.servlet.*; 
import javax.servlet.annotation.WebServlet; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
import javax.servlet.http.HttpSession; 



@WebServlet("/Login") 
public class Login extends HttpServlet { 
    private static final long serialVersionUID = 1L; 

    protected void doPost(HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException { 

     String USERID = request.getParameter("username"); 
     String PWD = request.getParameter("password"); 

     try{ 
      Class.forName("oracle.jdbc.driver.OracleDriver"); 
      Connection con = DriverManager.getConnection("","", ""); 
      PreparedStatement ps =con.prepareStatement 
        ("select USERID from user where USERID=?"); 

      ps.setString(1, USERID);    
      ResultSet rs=ps.executeQuery(); 
      rs.next(); 


       if(USERID.equals(rs.getString("USERID")) && PWD.equals("password")){ 

        response.sendRedirect("info.jsp"); 
      } 
      else { 
       response.sendRedirect("error.jsp"); 
      } 




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

} 
} 

。しかし、ユーザー名が有効でなく、パスワードが正しくあり正しくない場合は、空白が読み込まれます。あなたのコードとクエリ

+0

資格情報が間違っている場合は、 'error.jsp'の代わりに' index.jsp'にリダイレクトします。 –

+2

例外がある場合、ページはどこにリダイレクトされますか?また、パスワードを平文でDBに保存しないでください。 –

+3

ハードコードされたパスワード?おそらく*間違っていますか? :-) – paxdiablo

答えて

0

は、以下のように変更する必要があります。

は、ユーザーからどこUSERIDパスワードを選択しますか=?

while(rs.next()) { 
    if(password.equals(rs.getString("password"))){ 
     response.sendRedirect("info.jsp"); 
    } else { 
     response.sendRedirect("error.jsp"); 
    } 
} 
関連する問題