它必须通过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个选择:
- 将该路径的根文件夹添加为服务器配置中的虚拟主机。如何做到这一点取决于服务器的制造商/版本,您对此一无所知。以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" />
创建一个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}" />
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)