当前位置: 首页 > 知识库问答 >
问题:

如何使用JSP包含或c加载应用程序上下文之外的Html页面:导入或符号链接

权玉泽
2023-03-14

我需要将一些其他应用程序动态创建的html页面加载到我的应用程序jsp页面中,使用jsp include tag


共有3个答案

袁康裕
2023-03-14

或者,我们可以借助符号链接、短链接或软链接来实现,这样就不会有太多的编码。在我的例子中,我为MySharedHTML创建了一个软链接,它位于我的应用程序web内容下,指向D驱动器中的某个路径。

由于默认情况下禁用符号链接以在Tomcat服务器中启用它们,您需要将以下配置添加到context.xml,该配置位于tomcat服务器的conf文件夹下。

<Context allowLinking="true">
邓才
2023-03-14

您不按完整路径包含。文件夹MySharedHTML需要位于您的应用程序文件夹下,并且您按相对路径包含。

假设你的网络应用程序

 c:\Program Files\Apache Software Foundation\Tomcat\webapps\myapp\

你会把你的MySharedHTML放在那里

 c:\Program Files\Apache Software Foundation\Tomcat\webapps\myapp\MySharedHTML

然后按相对路径包括:

 <jsp:include page="./MySharedHTML/test.html" />
翟光赫
2023-03-14
匿名用户

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

是否使用<代码>

在您的特定情况下,它似乎位于服务器的本地磁盘文件系统的其他位置,而真正的URL根本不可用。在这种情况下,基本上有两种选择:

>

  • 将该路径的根文件夹作为虚拟主机添加到服务器配置中。如何做到这一点取决于您没有告诉任何内容的服务器make/version。以Tomcat为例,这需要将以下条目添加到其/conf/server.xml中:

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

    这样,所有文件夹的内容都可以通过http://localhost:8080/MySharedHTML/*,包括测试。html。这样您就可以使用<代码>

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

    创建一个servlet,作为本地磁盘文件系统的代理。假设您使用的是Servlet 3.0/Java 7,您可以更改变量,使其仅返回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循环样板)

    由于servlet在同一个webapp中运行,

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

  •  类似资料:
    • 问题内容: 关于这两个上下文的内容,已经有很多文章了。但是我仍然不太正确。 到目前为止,据我了解:每个实例都是其类的一个实例,这意味着某些程序员建议您尽可能频繁地使用它,以免“泄漏”任何内存。这是因为另一个this(获取Activity实例上下文)指向的Activity是每次用户倾斜手机或离开应用程序等时都将销毁的一个。显然,垃圾收集器(GC)无法捕获,因此使用了过多的内存。 .. 但是任何人都可

    • 问题内容: 另一个Docker符号链接问题。我有一堆文件要复制到我的所有Docker构建中。我的目录结构是: 在上面的示例中,当我在dir1中进行docker构建时,我希望将file.txt复制过来。但是我不想维护file.txt的多个副本。每此链接,作为搬运工版本0.10,码头工人的作品必须 按照容器根目录内的符号链接获取ADD构建说明。 但是当我在Dockerfile中使用以下任一行进行构建时

    • 位置:类org.apache.jsp.web_002dinf.jsp.test_jsp 我也在用Maven。我已经重新配置了我的项目,使默认输出文件夹为WEB-INF/classes,但我仍然收到这个错误。

    • 问题内容: 我正在使用ROS开发用于多机器人系统的GUI,但是我在界面中的最后一件事就是冻结:将RVIZ,GMAPPING或其他屏幕嵌入到我的应用程序中。我已经在界面中放置了一个终端,但是无法绕开如何向我的应用程序添加外部应用程序窗口的问题。我知道PyQt5具有createWindowContainer,它使用窗口ID来停靠外部应用程序,但是我没有找到任何示例来帮助我。 如果可能的话,我想在应用程

    • 我在我的Android应用程序中使用滑翔进行图像加载,以避免任何崩溃,我正在加载带有应用程序上下文的图像。这会对应用程序和内存的性能产生什么影响?

    • 路径必须在生成的上下文中;您不能添加../something/something,因为docker构建的第一步是将上下文目录(和子目录)发送到docker守护进程。 我不想重组我的整个项目只是为了在这件事上容纳Docker。我想把我所有的Docker文件都保存在同一个子目录中。 此外,Docker似乎还不支持(可能永远也不支持)符号链接:Dockerfile ADD命令不跟随主机#1676上的符号