Как получить доступ к атрибуту запроса, установленному сервлетом в JSP?
Я пытаюсь получить значения атрибутов, установленные сервлетом на странице JSP, но мне только повезло с параметрами ${param}
. Я не уверен, что я могу сделать по-другому. Возможно, это просто, но я еще не мог справиться.
public void execute(HttpServletRequest request, HttpServletResponse response) {
//there no "setParameter" method for the "request" object
request.setAttribute("attrib", "attribValue");
RequestDispatcher rd = request.getRequestDispatcher("/Test.jsp");
rd.forward(request,response);
}
В JSP я пытаюсь получить атрибут "attribValue", но безуспешно:
<body>
<!-- Is there another tag instead of "param"??? -->
<p>Test attribute value: ${param.attrib}
</body>
Если я передаю параметр через весь процесс (вызывая страницу, сервлеты и целевую страницу), это работает неплохо.
Ответы
Ответ 1
Он уже доступен в области EL по умолчанию, поэтому просто
${attrib}
должен делать.
Если вы хотите явно указать область действия (EL будет именно поиск областей страницы, запроса, сеанса и приложений в последовательности для первого значения, отличного от нулевого атрибута, соответствующего имени атрибута), тогда вам нужно передать его по области map, а ${requestScope}
для области запроса
${requestScope.attrib}
Это полезно только в том случае, если у вас есть атрибут с точно таким же именем в области страниц, который в противном случае имел бы приоритет (но в этом случае обычно указывается на плохой дизайн).
См. также:
Ответ 2
Возможно, сравнение синтаксиса EL
и синтаксиса scriptlet
поможет вам понять концепцию.
-
param
похож на request.getParameter()
-
requestScope
похож на request.getAttribute()
Вам нужно сообщить request attribute
из request parameter
.
Ответ 3
Вы пытались использовать тег выражения?
<%= request.getAttribute("attrib") %>
Ответ 4
Если область имеет тип запроса, мы устанавливаем атрибут, используя request.setAttribute (ключ, значение) в запросе, и извлекаем, используя $ {requestScope.key} в jsp.
Ответ 5
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String firstName = request.getParameter("firstName");
String lastName = request.getParameter("lastName");
String fullName = firstName + " " + lastName;
request.setAttribute("name", fullName);
request.getRequestDispatcher("index.jsp").forward(request, response);
}'''
In index.jsp
<body>
<c:out value="${name}" /> // It doesn't work. It prints ${name}
<%=request.getAttribute("name") %> // It works. It prints the value.
</body>
How can I solve this?