我使用的编程环境是ideaIU。
错误1:无法在web.xml或使用此应用程序部署的jar文件中解析绝对uri:[http://java.sun.com.jsp/jstl/core]
百度解决办法,搜到如下教程:
1、解决javax.el.PropertyNotFoundException:问题
2、<%@ taglib prefix=“c“ uri=“http://java.sun.com/jsp/jstl/core“ %>报错
emm我用了他们的办法依旧无法解决我的问题,包括下面评论中提到ideaIU用户需要注意的,我根据他提到的步骤操作了以后还是没有解决,回头仔细看代码,原来是我给uri打错了,本来应该是“/jsp”我打成了“.jsp”……正确如下:
<%@ taglib prefix=“c” uri=“http://java.sun.com/jsp/jstl/core” %>
taglib作用如下:
作用:声明用户使用自定义的标签,将标签库描述符文件导入到jsp页面。
用法: <%@ taglib (uri=“tigLibURL” 或 tagDir=“tagDir”) prefix=“tagPrefix” %>
属性:
[1]uri属性:定位标签库描述符的位置。唯一标识和前缀相关的标签库描述符,可以使用绝对或相对URL。
[2]tagDir属性:指示前缀将被用于标识在WEV-INF/tags目录下的标签文件。
[3]prefix属性:标签的前缀,区分多个自定义标签。不可以使用保留前缀和空前缀,遵循XML命名空间的命名约定。
错误2:javax.el.PropertyNotFoundException]
我的代码如下(仅贴出错误部分):
showAllFoods.jsp展示所有事物界面如下:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>展示食物列表</title>
</head>
<body>
<table border="1">
<tr>
<th>食物编号</th>
<th>食物名称</th>
<th>食物价格</th>
<th>食物源产地</th>
</tr>
<c:forEach items="${allFoods }" var="foods">
<tr>
<td>${foods.FoodId}</td>
<td>${foods.FoodName}</td>
<td>${foods.FoodPrice}</td>
<td>${foods.FoodSource}</td>
</tr>
</c:forEach>
</table>
</body>
</html>
Foods.java类如下:
package entity;
public class Foods {
private String FoodName;
private int FoodId;
private double FoodPrice;
private String FoodSource;
public void setFoodName(String FoodName){
this.FoodName=FoodName;
}
public String getFoodName(){
return FoodName;
}
public void setFoodId(int FoodId){
this.FoodId=FoodId;
}
public int getFoodId(){
return FoodId;
}
public void setFoodPrice(double FoodPrice){
this.FoodPrice=FoodPrice;
}
public double getFoodPrice(){
return FoodPrice;
}
public void setFoodSource(String FoodSource){
this.FoodSource=FoodSource;
}
public String getFoodSource(){
return FoodSource;
}
}
不管怎么看我的类属性都没有问题。
问了朋友说可能是因为类名的第一个字母没有小写,于是我做出更改:
.jsp:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>展示食物列表</title>
</head>
<body>
<table border="1">
<tr>
<th>食物编号</th>
<th>食物名称</th>
<th>食物价格</th>
<th>食物源产地</th>
</tr>
<c:forEach items="${allFoods }" var="foods">
<tr>
<td>${foods.foodId}</td>
<td>${foods.foodName}</td>
<td>${foods.foodPrice}</td>
<td>${foods.foodSource}</td>
</tr>
</c:forEach>
</table>
</body>
</html>
.java:
package entity;
public class Foods {
private String foodName;
private int foodId;
private double foodPrice;
private String foodSource;
public void setFoodName(String FoodName){
this.foodName=FoodName;
}
public String getFoodName(){
return foodName;
}
public void setFoodId(int FoodId){
this.foodId=FoodId;
}
public int getFoodId(){
return foodId;
}
public void setFoodPrice(double FoodPrice){
this.foodPrice=FoodPrice;
}
public double getFoodPrice(){
return foodPrice;
}
public void setFoodSource(String FoodSource){
this.foodSource=FoodSource;
}
public String getFoodSource(){
return foodSource;
}
}
运行后成功显示如下
果然还是要养成良好的编程习惯。。我喜欢每个单词的首字母都大写,但是在写类的时候不能这样,!!!!第一个字母一定要小写!!!!!!虽然不知道这是什么BUG,但是还是要注意,要不就会弄一早上弄不出一个简单的程序,我大概就是BUG制造机吧