login strona użyciu sesji w JSP

głosy
2

I utworzeniu środowiska logowania za pomocą JSP. index.jsp, login.jsp, Biorę nazwę użytkownika i hasło z bazy danych. Jeśli nazwa użytkownika i hasło mecze z bazy danych czyni proces logowania doskonale. Kiedy użytkownik dać złą nazwę i hasło to pokazuje się komunikat o błędzie invalid name or passwordi przekierowanie do strony logowania. Nic w tym złego, ale ja w obliczu problemu, kiedy się najpierw zalogować. W miejscu, gdzie komunikat o błędzie jest wyświetlany po przesłaniu niewłaściwej nazwy lub hasła, które miejsce jest wyświetlana wartość null .

Dlaczego zerowy pokazuje?

Poniżej jest kod

index.jsp

<%@page contentType=text/html pageEncoding=UTF-8%>
<!DOCTYPE html>
<html>
    <head>
    <meta http-equiv=Content-Type content=text/html; charset=UTF-8>
    <title>JSP Example</title>
</head>
<body>
   <form  action=login.jsp method=post>
        <center>
        <table border=1 width=30% cellpadding=3>
            <thead>
                <tr>
                    <th colspan=2 align =left>Login Here</th>  <h5><%=request.getAttribute(errorMessage)%> </h5>
                </tr>
            </thead>
            <tbody>
                <tr>
                    <td>User Name</td>
                    <td><input type=text name=uname value= /></td>
                </tr>
                <tr>
                    <td>Password</td>
                    <td><input type=password name=pass value= /></td>
                </tr>
                <tr>
                    <td><input type=submit value=Login /></td>
                    <td><input type=reset value=Reset /></td>
                </tr>

            </tbody>
        </table>
        </center>
    </form>
    </body>
</html>

login.jsp

<%@ page import =java.sql.* %>
<%
 String userid = request.getParameter(uname);    
 String pwd = request.getParameter(pass);
 Class.forName(org.postgresql.Driver);
 Connection con = DriverManager.getConnection(jdbc:postgresql://localhost:5432/test, postgres, root);
Statement st = con.createStatement();
ResultSet rs;
rs = st.executeQuery(select * from member where uname=' + userid + ' and pass=' + pwd + ');
if (rs.next()) {
    session.setAttribute(userid, userid);
    response.sendRedirect(success.jsp);
} else {

    request.setAttribute(errorMessage, Invalid user or password);
    request.getRequestDispatcher(/index.jsp).forward(request, response);


 }
%>
Utwórz 29/07/2015 o 09:31
źródło użytkownik
W innych językach...                            


5 odpowiedzi

głosy
1

errorMessageAtrybut nie będzie dostępny na zamówienie po raz pierwszy. Uprzejmie sprawdzić null, a następnie wyświetla komunikat.

<%=request.getAttribute("errorMessage")%>

Poniższy kawałek kodu mogłyby pomóc.

<tr>
    <th colspan="2" align ="left">Login Here</th>
    <h5>
        <%
        String errorMsg = request.getAttribute("errorMessage");
        if (errorMsg != null) {
        %>
            <%=errorMsg%> 
        <%
        }
        %>
    </h5>
</tr>
Odpowiedział 29/07/2015 o 09:37
źródło użytkownik

głosy
1

proszę sprawdzić stan przed pokazaniem błędu, jeśli żądanie parametr jest null to nie powinno zostać wydane jeszcze byłoby renderowane, modyfikować Ci kod według poniżej urywek

 <thead>
    <tr>
        <th colspan="2" align ="left">Login Here</th>  
        <h5>
          <%if(request.getParameter("errorMessage")!=null){%>
          <%=request.getParameter("errorMessage")%><%}%>
        </h5>
   </tr>
</thead>
Odpowiedział 29/07/2015 o 09:41
źródło użytkownik

głosy
1

Jako atrybut ErrorMessage jest null we wniosku podczas ładowania go po raz pierwszy, dzięki czemu stają się puste. Trzeba dodać pustego czek dla niego. Można to zrobić w ten sposób

<th colspan="2" align ="left">Login Here</th>
<% if (request.getAttribute("errorMessage") != null) {
        out.println("<h5>" + request.getAttribute("errorMessage") + "</h5>");
}%>
Odpowiedział 29/07/2015 o 09:42
źródło użytkownik

głosy
2

Można to wykorzystać w swojej index.jsp

<% if ((String) request.getAttribute("errorMessage") != null) {%>
            <h3 style="color: red;"><%=(String) request.getAttribute("errorMessage")%></h3>
            <%
                }
            %>

Zamiast tego

<%=request.getAttribute("errorMessage")%>
Odpowiedział 29/07/2015 o 09:43
źródło użytkownik

głosy
1

Popraw swój kod w login.jsp

Napisać session.setAttribute ( "errorMessage", "Nieprawidłowy użytkownika lub hasło");

zamiast request.setAttribute ( „errorMessage”, „Nieprawidłowy użytkownika lub hasło”);

..

zerowy wiadomość pokaż z tego powodu.

Odpowiedział 29/07/2015 o 10:42
źródło użytkownik

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more