Wie kann man eine Sitzung in JSP-Seiten verwenden, um Informationen zu erhalten?

Ich habe eine JSP-Seite für die Bearbeitung einiger Benutzerinformationen verwendet. Wenn sich ein Benutzer auf der Website anmeldet, behalte ich die Informationen in der Sitzung, dann in meinem bearbeiten Seite versuche ich das folgende:

<%! String username=session.getAttribute("username"); %>
<form action="editinfo" method="post">
    <table>
        <tr>
            <td>Username: </td><td> <input type="text" value="<%=username %>" /> </td>
        </tr>
    </table>
</form>

aber es kommt die Fehlermeldung, dass die Sitzung nicht aufgelöst werden kann. Was kann ich dagegen tun?

Lösung

JSP implizite Objekte wie session, request usw. sind innerhalb der JSP-Deklaration nicht verfügbar `` Tags.

Sie könnten sie direkt in Ihrem Ausdruck verwenden als

<td>Username: </td>
<td><input type="text" value="" /></td>

Außerdem ist die Verwendung von Scriptlets in JSP schon lange veraltet. Die Verwendung von EL (Expression Language) und JSTL-Tags wird dringend empfohlen. Zum Beispiel könnten Sie hier EL verwenden als

<td>Username: </td>
<td><input type="text" value="${username}" /></td>

Das Beste daran ist, dass die Bereichsauflösung automatisch erfolgt. Hier könnte username also aus den Bereichen page, request, session oder application stammen, in dieser Reihenfolge. Wenn Sie dies für eine bestimmte Instanz aufgrund einer Namenskollision außer Kraft setzen müssen, können Sie den Bereich explizit angeben als

<td><input type="text" value="${requestScope.username}" /></td> or,
<td><input type="text" value="${sessionScope.username}" /></td> or,
<td><input type="text" value="${applicationScope.username}" /></td>
Kommentare (1)

Verwenden Sie

Beachten Sie, dass Ihre Verwendung von `auf Klassenebene übersetzt wird, aber die Anfrage nur in der Methodeservice()` des übersetzten Servlets verfügbar ist.

Siehe, wie JSP-Code in ein Servlet übersetzt wird

Kommentare (2)

form action="editinfo" method="post">

    <table>
        <tr>
            <td>Username: </td><td> <input type="text" value="" /> </td>
        </tr>

    </table>

hinzufügen ``

Kommentare (0)