Подтвердить что ты не робот

Как получить доступ к атрибуту запроса, установленному сервлетом в 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>

Если я передаю параметр через весь процесс (вызывая страницу, сервлеты и целевую страницу), это работает неплохо.

4b9b3361

Ответ 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?