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();
}
}
}
。しかし、ユーザー名が有効でなく、パスワードが正しくあり正しくない場合は、空白が読み込まれます。あなたのコードとクエリ
資格情報が間違っている場合は、 'error.jsp'の代わりに' index.jsp'にリダイレクトします。 –
例外がある場合、ページはどこにリダイレクトされますか?また、パスワードを平文でDBに保存しないでください。 –
ハードコードされたパスワード?おそらく*間違っていますか? :-) – paxdiablo