JSP/JSTL不工作

JSP/JSTL不工作,jsp,jstl,Jsp,Jstl,我正在尝试实现一个JSP应用程序,我需要帮助。有两个问题: ... <tr> <td></td> <td></td> </tr> <tr> <td></td> <td></td>

我正在尝试实现一个JSP应用程序,我需要帮助。有两个问题:

    ...
        <tr>
            <td></td> 
            <td></td>  
        </tr>           
        <tr>
            <td></td>
            <td></td>    
        </tr>
1 JSTL标记未转换为HTML

    ...
        <tr>
            <td></td> 
            <td></td>  
        </tr>           
        <tr>
            <td></td>
            <td></td>    
        </tr>
2如果我在JSP页面中使用纯java而不是JSTL,它仍然不起作用

    ...
        <tr>
            <td></td> 
            <td></td>  
        </tr>           
        <tr>
            <td></td>
            <td></td>    
        </tr>
我将netbeans 7.3与Tomcat7以及JavaEE6一起使用。我向项目中添加了netbeans 7.3附带的JSTL库,即JSTL 1.1

    ...
        <tr>
            <td></td> 
            <td></td>  
        </tr>           
        <tr>
            <td></td>
            <td></td>    
        </tr>
My web.xml以以下内容开头:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
     version="3.0">
...
</web-app>
    ...
        <tr>
            <td></td> 
            <td></td>  
        </tr>           
        <tr>
            <td></td>
            <td></td>    
        </tr>
下面是一个示例代码:

public class Item {
    private int id;
    private String name;
// setters and getters follow
}


public class Controller {
    public List<Item> getAllItems() {
        // returns a list of items (size of list = 2)
    }
}
    ...
        <tr>
            <td></td> 
            <td></td>  
        </tr>           
        <tr>
            <td></td>
            <td></td>    
        </tr>
index.jsp:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <% 
           Controller controller = new Controller(); 
           List<Item> items = controller.getAllItems();
        %>
        <table>
        <c:forEach items="${items}" var="item">
            <tr>
                <td>${item.id}</td>
                <td>${item.name}</td>
            </tr>
        </c:forEach>
</table>
    </body>
</html>
    ...
        <tr>
            <td></td> 
            <td></td>  
        </tr>           
        <tr>
            <td></td>
            <td></td>    
        </tr>
1 jstl代码未转换为html。页面的来源如下所示:

...
<table>
<c:forEach items="" var="item">
            <tr>
                <td></td>
                <td></td>
            </tr>
  </c:forEach> 
</table>
...
    ...
        <tr>
            <td></td> 
            <td></td>  
        </tr>           
        <tr>
            <td></td>
            <td></td>    
        </tr>
我还尝试使用${item.getId}和${item.getName},但结果相同

    ...
        <tr>
            <td></td> 
            <td></td>  
        </tr>           
        <tr>
            <td></td>
            <td></td>    
        </tr>
2如果我用java替换c:forEach,如下所示:

    <% for (Item item : items) {%>
        <tr>
            <td><%item.getId();%></td>
            <td><%item.getName();%></td>
        </tr>
    <% } %>
    ...
        <tr>
            <td></td> 
            <td></td>  
        </tr>           
        <tr>
            <td></td>
            <td></td>    
        </tr>
我得到以下消息来源:回想一下列表的大小是2:

    ...
        <tr>
            <td></td> 
            <td></td>  
        </tr>           
        <tr>
            <td></td>
            <td></td>    
        </tr>
我做错了什么?我是否正确设置了jstl?请注意,控制器是一个普通的java类,而不是bean。我需要把它做成豆子吗?如果是,如何进行?
提前谢谢

检查web.xml中使用的xsd版本。在我的例子中,版本需要是2.5,而旧版本没有在jsp中显示值。没有抛出错误

    ...
        <tr>
            <td></td> 
            <td></td>  
        </tr>           
        <tr>
            <td></td>
            <td></td>    
        </tr>
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    id="WebApp_ID" version="2.5">

这些症状表明JSTL根本不存在于webapp的运行时类路径中。我不做Netbeans,所以我不知道如何让它正确地完成它的工作,但是您可以通过让它将项目导出为WAR文件,然后使用ZIP工具将其解压缩,然后检查/WEB-INF/lib中是否存在JSTL JAR来验证这一点。如果不是,那么您就已经找到了问题的根本原因。另外,JSP EL无法访问JSP中由scriptlet定义的局部变量。它只访问页面、请求、会话或应用程序属性。控制器应该是一个servlet,在JSP之前调用。不是由JSP创建和调用的。@BalusC我提取了.war文件。jstl.jar和standard.jar都包含在WEB-INF/lib中。@JBNizet您能告诉我更多的细节吗?请参阅。基本上,请求会发送到servlet。servlet将JavaBean存储在请求属性中,然后使用请求调度器转发到JSP。JSP显示存储在请求属性中的数据。这是所有MVC框架背后的基本架构,如SpringMVC、Stripes、Struts等。