获取从servlet传递的属性变量

时间:2013-08-18 12:32:20

标签: jsp servlets

全部,我在servlet中设置了一个属性变量。并希望在jsp中获得它。 但我对此有一些疑问。 说你有代码。

在servlet中。

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setAttribute("BeerSelected", "BlackBeer");
        RequestDispatcher disp=request.getRequestDispatcher("SelectResult.jsp");
        disp.forward(request,response);
    }

在JSP中

此代码有效

<%String name = (String)request.getAttribute("BeerSelected");%>
<%= name%>

但为什么下面的代码不起作用? jsp不呈现值。

<%request.getAttribute("BeerSelected");%>

以下代码也没有。

<%request.getAttribute("BeerSelected").toString();%>

我不知道为什么toString()不起作用。 thannks。

1 个答案:

答案 0 :(得分:4)

因为要向响应编写者发送内容,您必须使用<%= ... %>,或明确写入编写者:

<% out.println(request.getAttribute("BeerSelected")); %>

您的代码等同于以下Java代码:

request.getAttribute("BeerSelected");

所以这会调用方法,但不会对它返回的内容做任何事情。

那就是说,你应该完全忘记那些多年来不应该使用的scriptlet。使用JSP ELJSTL显示(并正确转义)您的值:

<c:out value="${BeerSelected}" />

此外,按照惯例,属性拼写为Java变量:beerSelected而不是BeerSelected