【问题标题】:How to insert a block of html into a java servlet [duplicate]如何将一段html插入java servlet [重复]
【发布时间】:2011-07-21 03:21:39
【问题描述】:

我正在为现有的 appengine 站点在 eclipse 中使用一些 java 源代码。我想让现有页面之一显示一个谷歌地球插件小程序。

我有这个在 html 文件中工作的小 sn-p,但我不知道如何让 servlet 将它放入它生成的 html 中。

我并不是真正的编码员,所以我需要一些非常简洁的说明来了解如何让 java 完成这项工作。

<script src="http://www.gmodules.com/ig/ifr?url=http://code.google.com/apis/kml/embed/tourgadget.xml&amp;up_kml_url=https%3A%2F%2Fwebfiles.colorado.edu%2Fwww%2FLSF%2520DB%2520Placemarks5.kmz&amp;up_tour_index=1&amp;up_tour_autoplay=1&amp;up_show_navcontrols=1&amp;up_show_buildings=1&amp;up_show_terrain=1&amp;up_show_roads=0&amp;up_show_borders=1&amp;up_sphere=earth&amp;synd=open&amp;w=700&amp;h=600&amp;title=Embedded+Tour+Player&amp;border=http%3A%2F%2Fwww.gmodules.com%2Fig%2Fimages%2F&amp;output=js"></script>

===

protected void beginBasicHtmlResponse(String pageName, String headContent, HttpServletResponse resp,
      HttpServletRequest req, boolean displayLinks) throws IOException {
resp.addHeader(HOST_HEADER, getServerURL(req));
resp.setContentType(ServletConsts.RESP_TYPE_HTML);
resp.setCharacterEncoding(ServletConsts.ENCODE_SCHEME);
PrintWriter out = resp.getWriter();
out.write(HtmlConsts.HTML_OPEN);
out.write("<link rel=\"icon\" type=\"image/png\" href=\"/odk_color.png\">");
out.write(HtmlUtil.wrapWithHtmlTags(HtmlConsts.HEAD, headContent + HtmlUtil.wrapWithHtmlTags(
    HtmlConsts.TITLE, BasicConsts.APPLICATION_NAME)));
out.write(HtmlConsts.BODY_OPEN);
out.write(HtmlUtil.wrapWithHtmlTags(HtmlConsts.H2, "<FONT COLOR=330066 size=0><img src='/odk_color.png'/>" + HtmlConsts.SPACE + BasicConsts.APPLICATION_NAME) + "</FONT>");
if (displayLinks) {
  UserService userService = UserServiceFactory.getUserService();
  out.write(generateNavigationInfo());
  out.write(HtmlConsts.TAB + HtmlConsts.TAB);
  out.write(HtmlUtil.createHref(userService.createLogoutURL("/"), "Log Out from "
      + userService.getCurrentUser().getNickname()));
  out.write(HtmlConsts.TAB + "<FONT SIZE=1>" + ServletConsts.VERSION + "</FONT>");
}
out.write(HtmlConsts.LINE_BREAK + HtmlConsts.LINE_BREAK);
out.write(HtmlUtil.wrapWithHtmlTags(HtmlConsts.H1, pageName));

}

【问题讨论】:

  • 您是否确定了输出现有 HTML 的代码位?如果可以,可以在这里发布吗?

标签: java html jsp servlets jakarta-ee


【解决方案1】:

另一种方法是使用 Request Dispatcher

    response.setContentType("text/html");
    PrintWriter out = response.getWriter();
    out.println("Included HTML block:");
    request.getRequestDispatcher("/pathToFile/block.html").include(request, response); 
    out.close();

【讨论】:

    【解决方案2】:

    我不确定这是否是您要找的。我在 java EE doPost 块中使用它。 或者您可以将其用作与您要查找的等效语法的参考。

        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
    
        out.print("<html>");
        out.print("<head>");
        out.print("<title>");
        out.print("</title>");
        out.print("<h1>view accounts</h1>");
        out.print("</head>");
    

    【讨论】:

      【解决方案3】:

      如果你有一个 servlet,那么我想到的最简单的事情是:

      public void doGet(HttpServletRequest request,
                        HttpServletResponse response)
             throws ServletException, IOException {
          PrintWriter out = response.getWriter();
          out.println("put your snippet here");
      }
      

      基本上:

      • 在您的 servlet 中,您需要从 response 对象中获取一个 PrintWriter,该对象作为 doGet() 方法中的参数接收

      • 您在PrintWriter 上打印的所有内容都会发送到浏览器

      警告:小心不要弄乱您的 servlet 已经发送到浏览器的内容。


      看到你添加到问题中的代码后,我认为你可以在该行之后添加你的 sn-p

      out.write(HtmlConsts.BODY_OPEN);
      

      通过添加

      out.write("<script src="http://www.gmodules.com/ig/ifr?url=http://code.google.com/apis/kml/embed/tourgadget.xml&amp;up_kml_url=https%3A%2F%2Fwebfiles.colorado.edu%2Fwww%2FLSF%2520DB%2520Placemarks5.kmz&amp;up_tour_index=1&amp;up_tour_autoplay=1&amp;up_show_navcontrols=1&amp;up_show_buildings=1&amp;up_show_terrain=1&amp;up_show_roads=0&amp;up_show_borders=1&amp;up_sphere=earth&amp;synd=open&amp;w=700&amp;h=600&amp;title=Embedded+Tour+Player&amp;border=http%3A%2F%2Fwww.gmodules.com%2Fig%2Fimages%2F&amp;output=js"></script>")
      

      【讨论】:

      • 然后我在代码中过去了,在 servletexception 下出现了一条红线,当我尝试运行它时,没有什么不同。此外,在 servlet 代码中有一个“受保护的 void”部分,它似乎包含我希望 google earth aplet 去的块。我如何将您的 sn-p 插入其中?
      • OK:protected void ... 可能是您的 servlet 类的方法。如果您认为这就是您需要添加 sn-p 的地方,那么如果您在问题中复制 protected void ... 方法可能会很有用:这将使我们能够更好地为您提供帮助。
      • 谢谢marco,我发了,你觉得呢?
      【解决方案4】:

      我建议您使用 jsp 进行查看。将 servlet 用作控制器

      另见

      【讨论】:

      • 这是个好主意。但是,恐怕我们的朋友 m13124 目前对模型-视图-控制器的清晰分离不感兴趣(他说他不是编码员)。看起来他只是想修改现有的 servlet 以快速完成他需要的工作。
      【解决方案5】:

      关闭脚本代码...用 %> 然后你可以用纯html写任何你想要的东西

      然后再次打开脚本标签

      应该是这样的

      【讨论】:

      • 你到底是什么意思?我应该把那些 %> 放在哪里?
      • 如果你有一个jsp就可以了
      猜你喜欢
      • 2016-09-03
      • 1970-01-01
      • 1970-01-01
      • 2021-07-24
      • 2023-03-30
      • 2014-01-19
      • 2021-05-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多