全部,我在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。
答案 0 :(得分:4)
因为要向响应编写者发送内容,您必须使用<%= ... %>
,或明确写入编写者:
<% out.println(request.getAttribute("BeerSelected")); %>
您的代码等同于以下Java代码:
request.getAttribute("BeerSelected");
所以这会调用方法,但不会对它返回的内容做任何事情。
那就是说,你应该完全忘记那些多年来不应该使用的scriptlet。使用JSP EL和JSTL显示(并正确转义)您的值:
<c:out value="${BeerSelected}" />
此外,按照惯例,属性拼写为Java变量:beerSelected
而不是BeerSelected
。