我需要使用jsp include tag将其他应用程序动态创建的一些html页面加载到我的应用程序jsp页面中<jsp:include page="${Htmlpath}" /> OR <jsp:include page="D:\MySharedHTML\test.html" />。我的想法是在服务器上有一个共享文件夹,例如“ MySharedHTML”,然后让其他应用程序在那里创建html文件,我的应用程序将通过提供完整路径进行访问。但是jsp include表示“请求的资源D:\ MySharedHTML \ test.html不可用”。任何输入该怎么做。提前致谢。
<jsp:include page="${Htmlpath}" /> OR <jsp:include page="D:\MySharedHTML\test.html" />
它必须通过URL可用。这D:\MySharedHTML\test.html绝对不是有效的网址。一个有效的URL如下所示http://localhost:8080/MySharedHTML/test.html。
D:\MySharedHTML\test.html
http://localhost:8080/MySharedHTML/test.html
是使用<jsp:include>还是<c:import>取决于URL是内部URL还是外部URL。在<jsp:include>只对内部URL作品(因此,资源在同一个Web应用程序,还私自隐藏在那些/WEB- INF)。该<c:import>作品还可以在外部URL上使用(因此,资源完全在一个不同的Web应用程序中,但是这些资源必须可以公开访问;即,在将URL复制到浏览器的地址栏中时,您必须已经看到所需的包含内容)。
<jsp:include>
<c:import>
/WEB- INF
在您的特定情况下,您似乎在服务器的本地磁盘文件系统中的其他位置拥有了该文件,但真正的URL根本无法使用它。在这种情况下,您基本上有2个选择:
/conf/server.xml
<Context docBase="D:\MySharedHTML" path="/MySharedHTML" />
这样,文件夹的所有内容都可以通过来获得http://localhost:8080/MySharedHTML/*,包括test.html。这样,您就可以<c:import>在上面使用它(注意:<jsp:include>不适用,因为它不在同一webapp中)。
http://localhost:8080/MySharedHTML/*
test.html
<c:import url="/MySharedHTML/test.html" />
创建一个Servlet,它充当本地磁盘文件系统的代理。假设您使用的是Servlet 3.0 / Java 7,并且您可以${Htmlpath}以仅返回的方式更改变量test.html,则应该这样做:
${Htmlpath}
@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循环样板即可)
web.xml
InputStream
OutputStream
由于Servlet在同一webapp中运行,因此<jsp:include>应该可以正常工作:
<jsp:include page="/MySharedHTML/${HtmlFilename}" />