У меня есть JSP страница используется для редактирования некоторых пользователей'S Инфо. Когда пользователь входит на сайт, я хранить данные в сессии, потом в Моя страница редактировать мне попробовать следующие:
<%! 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>
но он дает ошибку сказав, сессии не могут быть решены. Что я могу поделать?
В JSP неявные объекты любит сессии
, запрос
и т. д. не доступны внутри ССП декларации в `<%! %> теги.
Вы можете использовать его непосредственно в ваш выражение как
<td>Username: </td>
<td><input type="text" value="<%= session.getAttribute("username") %>" /></td>
На другой ноте, использование скриптлетов в JSP уже давно устарел. Использование Эл (языкового выражения) и тегов JSTL настоятельно рекомендуется. Например, здесь можно использовать как Эл
<td>Username: </td>
<td><input type="text" value="${username}" /></td>
Лучшая часть заключается в том, что области разрешения производится автоматически. Итак, вот имя пользователя могла наступить от стр., или запрос, или сессия, или применение оптические прицелы в таком порядке. Если для конкретного экземпляра вы должны переопределить это из-за совпадения имен можно явно указать область
<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>
Использовать
<% String username = (String)request.getSession().getAttribute(...); %>
Обратите внимание, что использование <%! ... %>
переводится на уровне класса, но запрос доступен только в сервис (метод) о переводе сервлета.
Причина, почему вы получаете ошибки компиляции, вы пытаетесь получить доступ к сессии в декларации блок (в<%! %>
), где оно не доступно. Все неявные объекты JSP не доступны в только способ обслуживания. Код декларационной блоков выходит за пределы метода сервиса.
Я'd не советую вам использовать Эл. Это упрощенный подход.
${sessionScope.имя пользователя}
даст вам желаемый результат.
Предположим, что вы хотите использовать, скажем ID в любой другой веб-страницы, то вы можете сделать это следующим фрагментом кода :
String id=(String)session.getAttribute("uid");
Здесь uid-это атрибут, в котором хранится идентификатор ранее. Вы можете установить его с помощью:
session.setAttribute("uid",id);
<%! String username=(String)session.getAttribute("username"); %>
form action="editinfo" method="post">
<table>
<tr>
<td>Username: </td><td> <input type="text" value="<%=username %>" /> </td>
</tr>
</table>
добавить в <%! Username строка=(строка)сессии.функции getattribute (на"Имя пользователя" - а); %>
в
form action="editinfo" method="post">
<table>
<tr>
<td>Username:</td>
<td>
<input type="text" value="<%if( request.getSession().getAttribute(" parameter_whatever_you_passed ") != null
{
request.getSession().getAttribute("parameter_whatever_you_passed ").toString();
}
%>" />
</td>
</tr>
</table>
</form>
в