¿Cómo utilizar la sesión en las páginas JSP para obtener información?

Tengo una página JSP que se utiliza para editar la información de algunos usuarios. Cuando un usuario se registra en el sitio web, mantengo la información en la sesión, entonces en mi página de edición intento lo siguiente:

<%! 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>

pero da error diciendo que la sesión no se puede resolver. ¿Qué puedo hacer al respecto?

Solución

¡Los objetos implícitos de JSP, como session, request, etc., no están disponibles dentro de la declaración JSP ``.

Puede utilizarlo directamente en su expresión como

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

Por otro lado, el uso de scriptlets en JSP está en desuso desde hace tiempo. El uso de EL (lenguaje de expresión) y etiquetas JSTL es muy recomendable. Por ejemplo, aquí se puede utilizar EL como

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

Lo mejor es que la resolución del ámbito se hace automáticamente. Así, aquí nombre de usuario podría venir de los ámbitos página, o solicitud, o sesión, o aplicación en ese orden. Si para una instancia particular necesitas anular esto debido a una colisión de nombres, puedes especificar explícitamente el ámbito como

<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>
Comentarios (1)

Utilice

¡Tenga en cuenta que el uso de `se traduce a nivel de clase, pero la petición sólo está disponible en el métodoservice()` del servlet traducido.

Ver cómo se traduce el código JSP a un servlet.

Comentarios (2)

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

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

    </table>

¡add ``

Comentarios (0)