【问题标题】:servlet result display in jsp pageservlet结果显示在jsp页面
【发布时间】:2009-12-01 06:45:46
【问题描述】:

如何将servlet输出转发到jsp页面?

这意味着结果将显示在 JSP 页面中。

【问题讨论】:

    标签: jsp servlets


    【解决方案1】:

    您通常不使用 servlet 来生成 HTML 输出。您通常为此使用 JSP/EL。使用 out.write 和 consorts 流式传输 HTML 内容被认为是不好的做法。更好地利用请求属性。

    例如:

    protected void doGet(HttpServletRequest request, HttpServletResponse response) {
        Object data = "Some data, can be a String or a Javabean";
        request.setAttribute("data", data);
        request.getRequestDispatcher("/WEB-INF/page.jsp").forward(request, response);
    }
    

    在 web.xml 中将其映射到 <url-pattern> 上,例如 /page。将 JSP 放在/WEB-INF 中以防止直接访问。然后在 JSP 中你可以使用 EL (Expression Language) 来访问作用域属性:

    <p>The data from servlet: ${data}</p>
    

    通过http://example.com/context/page 调用servlet。就那么简单。通过这种方式,您可以在一个地方控制输出和呈现,即 JSP。

    【讨论】:

      【解决方案2】:
      getServletConfig().getServletContext()
          .getRequestDispatcher("/jsp/myfile.jsp").forward(request,response);
      

      VOID类型,不能返回RequestDispatcherrd。

      【讨论】:

      • 你在回答其他问题吗?
      • @SiKing 这是回答上面stackoverflow.com/a/1824967/188107 的评论。 FWIW,尽管编辑会更合适,但它甚至是一个有用的评论。我试图报告它,但它有争议......
      【解决方案3】:

      要将请求/响应从 servlet 转发到其他东西(例如 JSP),您需要查看 RequestDispatcher 类。 ServletContext 类有一个获取调度程序的方法,可以在 servlet 中调用。

      例如(在 servlet 的 doPost/doGet 方法中):

      RequestDispatcher rd = getServletConfig().getServletContext()
          .getRequestDispatcher("/jsp/myfile.jsp").forward(request,response);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-11-25
        • 1970-01-01
        • 1970-01-01
        • 2011-07-27
        • 2018-05-14
        • 2012-11-04
        相关资源
        最近更新 更多