我正在尝试从JSP中访问我在servlet中创建的bean。
在我的servlet BlogController.java
中,我像这样实例化bean
BlogList bloglist = new BlogList();
if (bloglist.getSize()<1) {
bloglist.addDummies();
//Now the size of the bloglist is 10
}
然后,仍然在这个servlet中我将jsp称为
RequestDispatcher rd = request.getRequestDispatcher("/Blog7.jsp");
rd.forward(request, response);
在JSP内部我试图使用像
这样的bean<jsp:useBean id="bloglist" type="ub7.BlogList" scope="session"/>
但bloglist
的大小为0,为什么?
答案 0 :(得分:2)
您必须将bean添加到servlet本身的会话中:
在servlet中
HttpSession session = request.getSession();
session.setAttribute("bloglist", bloglist);
RequestDispatcher rd = request.getRequestDispatcher("/Blog7.jsp");
rd.forward(request, response);
在jsp中
Blog List count: ${sessionScope.bloglist.size()}
答案 1 :(得分:1)
在servlet中尝试:
RequestDispatcher rd = request.getRequestDispatcher("/Blog7.jsp");
request.setAttribute("bloglist", bloglist); // Will be available as ${bloglist} in JSP
rd.forward(request, response);
并在JSP中:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
....
<table>
<c:forEach items="${bloglist}" var="blog">
<tr>
<td>${blog.name}</td>
</tr>
</c:forEach>
</table>
答案 2 :(得分:0)
由于您的<jsp:useBean>
定义了scope="session"
,您的servlet应该这样做(在调用RequestDispatcher
之前)
request.getSession().setAttribute("bloglist", bloglist);