4 Stimmen

Erstellen Sie eine Beispiel-Anmeldeseite mit Servlet und JSP?

Ich habe eine Beispiel-Login-Seite zur Überprüfung von Benutzername und Passwort entwickelt. Wenn der Benutzer korrekte Anmeldedaten angibt, wird die Seite zu einer anderen Seite navigieren, andernfalls wird eine Nachricht von der servlet auf dieselbe Anmeldeseite.

Ich habe das Muster beigefügt code hier:

ErsteJSP.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>`
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org   /TR/html4/loose.dtd">`
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
        <title>Insert title here</title>`
    </head>
    <body>
        <form action="Login" method="post">
            <input type="text" name="Name"/><br>
            <input type="password" name=Pass><br><br><br>
            <input type="submit" value="submit"/><br>
            <%if(request.getAttribute("message")!=(""))
            out.println(request.getAttribute("message"));
            else
            out.println("");%>
            <h1>Hi This is JSP sample code </h1>
            <font color="blue" size="25">
            <marquee>Please login to Work with JSP</marquee></font>
            <%java.text.DateFormat df = new java.text.SimpleDateFormat("MM/dd/yyyy"); %>
            <h1>Current Date: <%= df.format(new java.util.Date()) %> </h1>
        </form>
    </body>
</html>

Und servlet Code, Login.java:

package com.controller;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Login extends HttpServlet {
    private static final long serialVersionUID = 1L;

    public Login() {
        super();
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String username = request.getParameter("Name");
        String password = request.getParameter("Pass");
        response.setContentType("text/html");
        if(username.equals("sugan") && password.equals("raj")) {
            response.getWriter().println("<html><body><Marquee>Welcome to JSP!!!</marquee></body></html>");                
        } 
        else {                
            String message = "OOps!!! Invalid Username/Password";
            request.setAttribute("message", message);
            request.getRequestDispatcher("/FirstJSP.jsp").forward(request, response);                
        }
    }
}

Es funktioniert gut, aber beim Laden der Anmeldeseite wird automatisch Folgendes angezeigt Null . Wenn der Benutzer dann die falschen Anmeldedaten eingibt, wird die eigentliche Meldung angezeigt. Wie deaktiviere ich die Null Meldung während der Laufzeit?

4voto

JB Nizet Punkte 654813

Sie vergleichen die Nachricht mit der leeren Zeichenkette mit == .

Erstens ist Ihr Vergleich falsch, weil die Nachricht null (und nicht die leere Zeichenkette) sein wird.

Zweitens ist es falsch, weil die Objekte mit den Objekten verglichen werden müssen. equals() und nicht mit == .

Drittens ist es falsch, denn Sie sollten Scriptlets in JSP vermeiden und stattdessen die JSP EL, die JSTL und andere benutzerdefinierte Tags verwenden:

<c:id test="${!empty message}">
    <c:out value="${message}"/>
</c:if>

0voto

Sie verwenden nicht wirklich die doGet()-Methode. Wenn Sie die Seite öffnen, wird eine GET-Anfrage gestellt, keine POST-Anfrage.

Versuchen Sie, doPost() in service() zu ändern... dann verwenden Sie dieselbe Methode, um GET- und POST-Anfragen zu bearbeiten.

...

0voto

Nikhil Pahariya Punkte 31

Wie ich sehe, vergleichen Sie die Nachricht mit der leeren Zeichenkette mit ==.

Es ist sehr schwer, den vollständigen Code zu schreiben, aber ich kann den Codefluss erkennen - erstens, erstellen db Klasse & Methode innerhalb, die die Verbindung zurückgeben wird. Zweitens, erstellen Sie ein Servlet (ex-login.java) und importieren Sie die Datenbankklasse in dieses Servlet. Drittens, erstellen Sie eine Instanz der importierten Datenbankklasse mit Hilfe des new-Operators und rufen Sie die Verbindungsmethode dieser Datenbankklasse auf. Viertens: Erstellen Sie eine vorbereitete Anweisung und eine Ausführungsanweisung und fügen Sie diesen Code in einen Try-Catch-Block für die Behandlung von Ausnahmen ein. Verwenden Sie eine if-else-Bedingung im Try-Block, um Ihre Anmeldeseite bei Erfolg oder Misserfolg zu navigieren.

Ich hoffe, es wird Ihnen helfen. Wenn Sie ein Problem haben, wenden Sie sich bitte an mich.

Nikhil Pahariya

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X