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

如何使用JSP include或c:import或symlink加载应用程序上下文之外的HTML页面,第1张

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

它必须通过URL可用。这

D:MySharedHTMLtest.html
绝对不是有效的网址。一个有效的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根本无法使用它。在这种情况下,您基本上有2个选择:

  1. 将该路径的根文件夹添加为服务器配置中的虚拟主机。如何做到这一点取决于服务器的制造商/版本,您对此一无所知。以Tomcat为例,向其添加以下条目即可
    /conf/server.xml
    <Context docbase="D:MySharedHTML" path="/MySharedHTML" />

这样,文件夹的所有内容都可以通过来获得

http://localhost:8080/MySharedHTML/*
,包括
test.html
。这样,您就可以
<c:import>
在上面使用它(注意:
<jsp:include>
不适用,因为它不在同一webapp中)。

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

  1. 创建一个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="" + URLEnprer.enpre(filename, "UTF-8") + """);    Files.copy(file.toPath(), response.getOutputStream());}

    }

(当尚未使用Servlet 3.0 / Java 7时,只需回到明显的

web.xml
注册和
InputStream
/
OutputStream
循环样板即可)

由于Servlet在同一webapp中运行,因此

<jsp:include>
应该可以正常工作:

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


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5000203.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-14
下一篇 2022-11-14

发表评论

登录后才能评论

评论列表(0条)

保存