jsp页面中的代码:
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@page import="GeneralClasses.FooClass" %>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<c:forEach var="fromArray" items="${array}">
<p>
${fromArray}
</p>
</c:forEach>
</body>
</html>
以下是存储属性array
package GeneralClasses;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class FooClass {
public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException {
String[] array = {"a","b","java","programming","OS"};
request.setAttribute("array", array);
}
}
当我运行jsp文件时,我得到一个空白页面。如何使用c:foreach
代码?
答案 0 :(得分:1)
当JSTL标记没有运行时,你可能根本没有安装JSTL,或者你正在使用具有不同taglib URI的古老JSTL 1.0版本。验证JSTL是否已运行的最简单方法是在浏览器中打开页面,右键单击查看源。如果你看到JSTL标签仍在那里,那么肯定没有运行。
JSTL默认捆绑在更成熟的应用程序服务器中,但不包含在像Tomcat,Jetty等小而简单的servlet容器中。您需要在webapp的/WEB-INF/lib
中删除必要的JSTL JAR文件文件夹或服务器的/lib
文件夹。
有关更详细的背景信息,请see our JSTL wiki page。
顺便说一句,你的servlet没有扩展HttpServlet
而根本没有转发到JSP,但是我会假设在准备问题的代码时不小心过度简化了。如果您确实没有通过servlet请求JSP页面,那么原因就完全不同了。解决方案很简单:通过URL调用servlet,而不是JSP。在/WEB-INF
中隐藏必要的JSP,以便最终用户永远不会无意中通过URL调用它。另见our servlets wiki page。
整个<%@page import="GeneralClasses.FooClass" %>
行也是不必要的。