In diesem Artikel wird ein Beispiel für eine Servlet-Implementierungsmethode zur Handhabung der Benutzeranmeldung beschrieben. Teilen Sie es als Referenz mit allen. Die spezifische Analyse lautet wie folgt:
Der Login.java-Code lautet wie folgt:
Kopieren Sie den Codecode wie folgt:
Paket com.bai;
import javax.servlet.http.*;
java.io.* importieren;
öffentliche Klasse Login erweitert HttpServlet{
public void doGet(HttpServletRequest req,HttpServletResponse res){
try{req.setCharacterEncoding("gb2312");
res.setContentType("text/html;charset=gb2312");
PrintWriter pw=res.getWriter();
pw.println("<html>");
pw.println("<body>");
pw.println("<h1>Login-Schnittstelle</h1>");
pw.println("<form action=logincl method=post>");
pw.println("Benutzername:<Eingabetyp=Textname=Benutzername><br>");
pw.println("Passwort:<Eingabetyp=Passwortname=passwd><br>");
pw.println("<input type=submit value=login><br>");
pw.println("</form>");
pw.println("</body>");
pw.println("</html>");
}
Catch(Ausnahme e){
e.printStackTrace();
}
}
public void doPost(HttpServletRequest req,HttpServletResponse res){
this.doGet(req,res);
}
}
Der LoginCl.java-Code lautet wie folgt:
Kopieren Sie den Codecode wie folgt:
Paket com.bai;
import javax.servlet.http.*;
java.io.* importieren;
java.sql.* importieren;
Die öffentliche Klasse LoginCl erweitert HttpServlet{
public void doGet(HttpServletRequest req,HttpServletResponse res){
Verbindung conn=null;
Anweisung stmt=null;
ResultSet rs=null;
String sql = "Wählen Sie Benutzername und Passwort von Benutzern aus, bei denen Benutzername = ? und Passwort = ?";
try{//req.setCharacterEncoding("gb2312");
String user=req.getParameter("username");
String passwort=req.getParameter("passwd");
Class.forName("com.mysql.jdbc.Driver");
conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/sqdb","root","root");
// stmt=conn.createStatement();
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, Benutzer);
pstmt.setString(2, Passwort);
rs = pstmt.executeQuery();
// rs=stmt.executeQuery("select top 1 * from user where username='"+user
// +"' and passwd='"+password+"'");
if(rs.next())
{
HttpSession hs=req.getSession(true);
hs.setMaxInactiveInterval(60);
hs.setAttribute("name",user);
res.sendRedirect("welcome?&uname="+user+"&upass="+password);
}
anders{
res.sendRedirect("login"); //url
}
}
Catch(Ausnahme e){
e.printStackTrace();
}Endlich{
versuchen{
if(rs!=null){
rs.close();
}
if(stmt!=null){
stmt.close();
}
if(conn!=null){
conn.close();
}
}catch(Ausnahme e){
e.printStackTrace();
}
}
}
public void doPost(HttpServletRequest req,HttpServletResponse res){
this.doGet(req,res);
}
}
Tatsächlich weist die obige Verarbeitung von Benutzername und Passwort offensichtliche Sicherheitslücken auf. Sie können das Passwort anhand des Benutzernamens aus der Datenbank abrufen und das abgerufene Passwort mit dem vom Benutzer eingegebenen Passwort vergleichen.
Kopieren Sie den Codecode wie folgt:
sql=Passwort von Benutzern auswählen, wobei Benutzername = ?
if(rs.next())
{
String passwd=rs.getString(1);
if(passwd.equals(password))
//Das Passwort ist korrekt
else //Falsches Passwort
}
Der Welcome.java-Code lautet wie folgt:
Kopieren Sie den Codecode wie folgt:
Paket com.bai;
import javax.servlet.http.*;
java.io.* importieren;
öffentliche Klasse Welcome erweitert HttpServlet{
public void doGet(HttpServletRequest req,HttpServletResponse res){
HttpSession hs=req.getSession();
String val=(String)hs.getAttribute("pass");
if(val==null){
versuchen{
System.out.print(1);
res.sendRedirect("login");
}catch(Ausnahme e){
e.printStackTrace();
}
}
String u=req.getParameter("uname");
String p=req.getParameter("upass");
try{//req.setCharacterEncoding("gb2312");
PrintWriter pw=res.getWriter();
pw.println("Willkommen! "+u+"&pass="+p);
}
Catch(Ausnahme e){
e.printStackTrace();
}
}
public void doPost(HttpServletRequest req,HttpServletResponse res){
this.doGet(req,res);
}
}
Ich hoffe, dass dieser Artikel für die Java-Programmierung aller hilfreich sein wird.