试图通过JSP访问在servlet中创建的bean

时间:2014-06-19 10:08:33

标签: java jsp servlets

我正在尝试从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,为什么?

3 个答案:

答案 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);