【问题标题】:Getting exception while invoking jsp from a servlet?从 servlet 调用 jsp 时出现异常?
【发布时间】:2012-05-03 12:45:50
【问题描述】:

我有一个jsp。它在 jsp 加载时调用一个 servlet,并在与下面相同的 jsp 中显示结果。

一些.jsp

<html>

    <jsp:include page="/HelloWorld"/>

    <%Iterator itr;%>
<% List data= (List)request.getAttribute("results");
for (itr=data.iterator(); itr.hasNext(); )
{
%>


<TABLE align="center" cellpadding="15" border="1" style="background-color: #ffffcc;">
                    <TR>
                        <TD align="center"><%=itr.next()%></TD>
                    </TR>

            </TABLE>

<%}%>


    </body>
</html>

在 servlet 中,我将结果存储在 request 中,并使用 requestdispatcher 调用 jsp,如下所示。

public class SomeServlet extends HttpServlet {

    public void doGet(HttpServletRequest request, 
              HttpServletResponse response)
              throws ServletException,IOException{

        List<String> list = new ArrayList<String>();

        //some logic to populate list

        request.setAttribute("results", list);
        request.getRequestDispatcher("/WEB-INF/Some.jsp").forward(request, response);


              }

}

但我在 jsp 中显示结果时遇到异常:

java.io.IOException: Stream closed
    at org.apache.jasper.runtime.JspWriterImpl.ensureOpen(JspWriterImpl.java:202)
    at org.apache.jasper.runtime.JspWriterImpl.clearBuffer(JspWriterImpl.java:157)

请帮帮我..

【问题讨论】:

  • 你应该在转发请求到JSP之后写return

标签: java jsp servlets


【解决方案1】:

JSP包含servlet,转发给JSP,包含servlet,转发给JSP,包含servlet,转发给JSP,包含servlet,转发给JSP,包含servlet,转发给JSP,包含servlet,转发给JSP,包含servlet,转发给JSP...

您在这里遇到了严重的设计问题。采用 MVC 原则:所有请求都转到一个 servlet(控制器),它加载模型,并分派到适当的 JSP(视图)。视图不应该包含一个 servlet,当然也不应该以这样的递归方式。

【讨论】:

  • 您好尼泽,感谢您的回复。在 getRequestDispatcher 方法中,我可以使用另一个 jsp 来显示结果吗?谢谢!
  • 测试一下。但是你真的想继续使用蹩脚的设计吗?为什么不以干净的方式来做呢?
  • 感谢您的回复 Nizet。我可以直接调用 servlet 并在 jsp 中显示结果,而不是在 jsp 页面加载时调用 servlet?请给我建议..
  • 这正是我在回答中所建议的。当然你可以直接调用你的servlet,而不需要先通过JSP。
  • 感谢您的回复 Nizet。直接调用 servlet 是一种好习惯吗?请给我建议..
【解决方案2】:

你不能在 jsp:iclude 标记中给出 servlet url 模式。原因是,它不知道调用get方法还是ost方法。你应该只给出jsp路径。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-07
    • 1970-01-01
    • 1970-01-01
    • 2021-09-02
    • 1970-01-01
    • 2017-03-20
    相关资源
    最近更新 更多