此问题已经在这里有了答案:
我是Java的新手,并一直在尝试使用JSTL foreach将数据从数据库输出到JSP。
我一直在关注这个问题的主要答复:Show JDBC ResultSet in HTML in JSP page using MVC and DAO pattern。尽管这对我来说并不成功,因为我的代码不输出数据。
我正在使用VSCode,Maven,JDK和Servlet 2.3
offered.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
///
<c:forEach items="${listings}" var="listing">
<div class="l_tile">
<div class="text">
<div class="title">
<c:out value="${listing.type}" /> -
<c:out value="${listing.category}" />
</div>
<div class="title">
<c:out value="${listing.title}" />
<c:out value="${listing.condition}" />
</div>
<br>
<div class="title">
<c:out value="${listing.description}" />
</div>
</div>
<div class="sector">
<button class="view" id="myBtn">View</button>
</div>
</div>
</c:forEach>
view_listings_servlet.java
@WebServlet("/view_listings_servlet")
public class view_listings_servlet extends HttpServlet {
private static final long serialVersionUID = 1L;
private String url = "jdbc:sqlserver://localhost:1433;databaseName=CommunityRecycle;user=CommunityRecycleAdmin;password=59^7K1Nht#x3";
private ListingDAO listingDAO;
@Override
public void init() {
listingDAO = new ListingDAO(url);
}
@Override
public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
try {
List<Listing> listings = listingDAO.list();
System.out.println(listings);
request.setAttribute("listings", listings); // Will be available as ${listings} in JSP
request.getRequestDispatcher("offered.jsp").forward(request, response);
} catch (Exception e) {
System.out.println();
e.printStackTrace();
}
}
}
ListingsDAO.java
public class ListingDAO {
private String url;
public ListingDAO(String url) {
this.url = url;
}
public List<Listing> list() throws SQLException {
List<Listing> listings = new ArrayList<Listing>();
try (Connection connection = DriverManager.getConnection(url)) {
CallableStatement viewListings_SP = connection.prepareCall("{call viewListings_SP(?)}");
viewListings_SP.setInt("type", 2);
ResultSet rs = viewListings_SP.executeQuery();
while (rs.next()) {
Listing listing = new Listing();
listing.setType(rs.getString(1));
listing.setTitle(rs.getString(2));
listing.setCategory(rs.getString(3));
listing.setDescription(rs.getString(4));
listing.setCondition(rs.getString(5));
listing.setState(rs.getString(6));
listings.add(listing);
}
}
return listings;
}
}
Listing.java
public class Listing {
private String type;
private String title;
private String category;
private String description;
private String condition;
private String state;
public String getType() {
return type;
}
public String getTitle() {
return title;
}
public String getCategory() {
return category;
}
public String getDescription() {
return description;
}
public String getCondition() {
return condition;
}
public String getState() {
return state;
}
public void setType(String type) {
this.type = type;
}
public void setTitle(String title) {
this.title = title;
}
public void setCategory(String category) {
this.category = category;
}
public void setDescription(String description) {
this.description = description;
}
public void setCondition(String condition) {
this.condition = condition;
}
public void setState(String state) {
this.state = state;
}
}
System.out.println(lists)的输出;
[Listing@15a1b7a4, Listing@7b2d8d89, Listing@529e2fd0]
代码输出“ $ {listing.type}”,“ $ {listing.category}”等,而不是实际数据。
对此的任何帮助将不胜感激。
引用另一个answer:
但是,当我在装有Tomcat 5.5的Unix(CentOS)平台上部署war文件时,EL表达式未执行并给出我的输出像:
${prod.id} ${prod.name}
换句话说,EL表达式根本不会得到评估,因此显示为纯文本?可以具有以下一项或多项原因:
- 有问题的应用程序服务器不支持JSP 2.0。
web.xml
未声明为Servlet 2.4或更高版本。- JSP的
<%@page %>
配置为isELIgnored=true
。web.xml
在<el-ignored>true</el-ignored>
中配置为<jsp-config>
。Tomcat 5.5是Servlet 2.4 / JSP 2.0,因此#1可能会被划伤。你没我假设在部署之前更改webapp中的任何内容,因此#3和#4可以可能会被划伤。现在离开#2。也许您将其声明为Servlet 2.5适用于Tomcat 6.0,而Tomcat 5.5仅了解Servlet 2.4。这样,一切都会像Tomcat一样变得一团糟然后退回至最低兼容方式。您需要重新声明
web.xml
作为Servlet 2.4,以便它在Tomcat 5.5中均可使用和6.0。声明应类似于:<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4"> <!-- Here you go. --> </web-app>