 <p>You've in the preprocessing servlet <strong>already</strong> set the <code>queryResult</code> in the request scope. </p> <pre><code>request.setAttribute("queryResult",result); </code></pre> <p>So you do <strong>not</strong> need to use <code>&lt;jsp:useBean&gt;</code> at all. Remove the following line altogether:</p> <pre><code>&lt;jsp:useBean id="queryResult" class="uges.servlets.MyQuery" scope="request"/&gt; </code></pre> <p>Because your servlet has set it as a request attribute, the object is <strong>already</strong> in EL available by <code>${queryResult}</code>. But due to the strange design of the class itself, it's hard to properly access it in EL, so you'll ineed need to resort to old school <em>scriptlets</em>. You only need to obtain it first by <code>request.getAttribute("queryResult")</code>.</p> <p>For a better design approach, check the <a href="http://stackoverflow.com/tags/servlets/info">servlets tag wiki page</a> and <a href="http://stackoverflow.com/questions/5003142/jsp-using-mvc-and-jdbc/5003701#5003701">JSP using MVC and JDBC</a>.</p>