【发布时间】:2011-11-23 02:38:13
【问题描述】:
所以这个问题建议在执行包含之前使用 servlet 进行文件检查: How can you check if a file exists before including/importing it in JSP?
所以我写了一个 servlet 来做这件事。我用类似的东西来称呼它
<jsp:include page='<%= "/servlet/fileChecker?section=THX&file=1138" &>'></jsp:include>
但是该 servlet 调用的输出包含一个 jsp:include 标记,指向我正在检查的文件。不幸的是,浏览器没有“包含”它。我收到诸如“没有属性 'page'”和“element 'jsp:include' undefined”之类的错误——这表明 servlet 输出没有被呈现为 Java,而是呈现为 HTML。
这是输出:
<p>Text before the servlet call</p>
<p><h4>From THX1138</h4><jsp:include page='thx/results_1138.jsp'></jsp:include></p>
<p>Text after the servlet call</p>
这是我的 servlet 的主要调用:
private String FileChecker(String section, String file) {
String result = ""; // assume file does not exist
String pathToCheck = section + "/results_" + file + ".jsp";
// realPath is defined in the init() method as config.getServletContext().getRealPath("/");
File fileToCheck = new File(realPath + pathToCheck);
if (fileToCheck.exists()) {
result = "<p><h4>" + section + "</h4><jsp:include page='" + pathToCheck + "'></jsp:include></p>";
}
return result;
}
我觉得答案很接近,但我不确定我应该在后面看什么窗帘。有什么帮助吗?
【问题讨论】:
-
jsp:...标签不包含在浏览器中,它们在服务器上被解释。浏览器只理解 HTML。你的fileChecker怎么样? -
这样不行。
filechecker的输出不会再被解释。能否请您出示filechecker或其相关部分的代码? -
离题:停止使用原始 servlet。使用诸如 struts、tile、spring-mvc、jsf 之类的东西。
-
@DwB:嗯——如果没有理由需要一个大框架,不要使用。 Servlet 只要不被滥用就可以,就像其他任何东西一样。无论如何,此功能都可以包含在基于 JSP 的自定义标记中。