gpt4 book ai didi

jquery - 如何使用 JSP include 或 c :import or symlink 加载应用程序上下文之外的 Html 页面

转载 作者:行者123 更新时间:2023-12-01 02:56:53 25 4
gpt4 key购买 nike

我需要使用 jsp include 标记 <jsp:include page="${Htmlpath}" /> OR <jsp:include page="D:\MySharedHTML\test.html" /> 将其他应用程序动态创建的一些 html 页面加载到我的应用程序 jsp 页面中。我的想法是在服务器上有一个共享文件夹,如“MySharedHTML”,并让其他应用程序在那里创建 html 文件,我的应用程序将通过提供完整路径进行访问。但 jsp include 说“请求的资源 D:\MySharedHTML\test.html 不可用”。任何输入如何做。提前致谢。

最佳答案

它必须可以通过 URL 访问。 D:\MySharedHTML\test.html绝对不是有效的 URL。有效的 URL 如下所示 http://localhost:8080/MySharedHTML/test.html

是否使用<jsp:include><c:import>取决于 URL 是内部 URL 还是外部 URL。 <jsp:include>仅适用于内部 URL(因此,同一 Web 应用程序中的资源,也是隐藏在 /WEB-INF 中的资源)。 <c:import>另外还适用于外部 URL(因此,完全不同的 Web 应用程序中的资源,但这些资源必须可公开访问;即,在浏览器地址栏中复制粘贴 URL 时,您必须已经看到所需的包含内容)。

在您的特定情况下,您似乎将其保存在服务器本地磁盘文件系统的其他位置,而真正的 URL 根本无法提供该文件。在这种情况下,你基本上有两个选择:

  1. 将该路径的根文件夹作为虚拟主机添加到服务器配置中。如何做到这一点取决于您没有透露的服务器品牌/版本。以 Tomcat 为例,只需将以下条目添加到其 /conf/server.xml 中即可。 :

    <Context docBase="D:\MySharedHTML" path="/MySharedHTML" />

    这样,http://localhost:8080/MySharedHTML/* 就可以访问该文件夹的所有内容。 ,包括 test.html 。这样你就可以使用<c:import>就可以了(注意: <jsp:include> 不适用,因为它不在同一个 web 应用程序中)。

    <c:import url="/MySharedHTML/test.html" />

  2. 创建一个 Servlet,充当本地磁盘文件系统的代理。假设您使用的是 Servlet 3.0/Java 7 并且您可以更改 ${Htmlpath}变量的方式仅返回 test.html ,那么应该这样做:

    @WebServlet("/MySharedHTML/*")
    public class PdfServlet extends HttpServlet {

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    String filename = request.getPathInfo().substring(1);
    File file = new File("D:\\MySharedHTML", filename);
    response.setHeader("Content-Type", getServletContext().getMimeType(filename));
    response.setHeader("Content-Length", String.valueOf(file.length()));
    response.setHeader("Content-Disposition", "inline; filename=\"" + URLEncoder.encode(filename, "UTF-8") + "\"");
    Files.copy(file.toPath(), response.getOutputStream());
    }

    }

    (当尚未使用 Servlet 3.0/Java 7 时,只需回退到明显的 web.xml 注册和 InputStream/OutputStream 循环样板)

    由于 servlet 在同一个 Web 应用程序中运行,<jsp:include>应该可以正常工作:

    <jsp:include page="/MySharedHTML/${HtmlFilename}" />

关于jquery - 如何使用 JSP include 或 c :import or symlink 加载应用程序上下文之外的 Html 页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19162111/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com