对于我的jsp文件,代码编辑器没有显示错误,但是项目窗口显示错误。我再次构建了我的项目,清理了项目,重启了两次eclipse并召唤了cthulhu。但我的项目仍然显示错误。我如何找到原因并解决问题?
Eclipse项目 -
JSP文件 -
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ taglib prefix="mine" uri="DiceFunctions"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
</head>
<body>
${mine:rollIt()}
</body>
</html>
TLD文件 -
<?xml version="1.0" encoding="ISO-8859-1" ?>
<taglib 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/web-jsptaglibrary_2_0.xsd" version="2.0">
<tlib-version>1.2</tlib-version>
<uri>DiceFunctions</uri>
<function>
<name>rollIt</name>
<function-class>foo.DiceRoller</function-class>
<function-signature>
int rollDice()
</function-signature>
</function>
</taglib>
注意 - 看看我的项目结构。在web-inf / classes下创建一个文件夹foo,并将dice类文件放在foo中。否则项目将无效。
答案 0 :(得分:1)
首先在 web.xml 中定义了taglib
,如下所示?
<jsp-config>
<taglib>
<taglib-uri>DiceFunctions</taglib-uri>
<taglib-location>/WEB-INF/diceRoller.tld</taglib-location>
</taglib>
</jsp-config>
其次,项目快照中的lib文件夹为空,表示您尚未在项目中添加jstl.jar
。
应该看起来像
public class DiceRoller {
public int rollDice() {
return 1;
}
}
在JSP custom tag function example
上查找示例代码当我在tomcat上运行html文件时,出现错误 - HTTP状态404 - /MyJSP/html/MyHtml.html
Web归档(WAR)文件是一个打包的Web应用程序,可以导出以测试,发布和部署Web项目中开发的资源。
要从Web项目导出WAR文件,请执行以下操作:
答案 1 :(得分:-1)
我如何解决问题 - 我很幸运,我的侥幸工作。首先,从书中正确复制所有代码。不要在web-inf内为项目创建任何类文件夹。在eclipse jee中,创建一个新的动态Web项目。将旧项目中的jsp,html,java代码等所有文件夹复制到新项目中。删除旧项目。建立你的新项目(尝试关闭 - 打开eclipse是安全的)。您的项目现在应该没有错误。我没有解释为什么这有效。
或者,如果您的目标是快速学习J2ee JSP等,那么我建议您最初避免使用Eclipse并手动创建Web应用程序文件夹。
使用所有必需的文件创建以下目录结构:
C:\APACHE-TOMCAT-7.0.00\WEBAPPS\SAMPLEAPP
¦ MyHtml.html
¦ MyJsp.jsp
¦
+---WEB-INF
¦ DiceRoller.tld
¦ web.xml
¦
+---classes
+---foo
Dice.class
现在为这些文件放入所有必要的代码,它肯定会起作用。这个故事的寓意是Eclipse不适合学习J2EE / Jsp / Servlets的基础知识。做你的 手动的web应用程序文件我在尝试制作eclipse版本时浪费了2-3个小时但仍然失败了。我遵循非日食方法,代码在5分钟内运行。 并且......没有必要导入任何罐子或扩展任何类等。