[英]Tomcat error: Resource Not Available (HTTP 404)
我正在尝试一个非常简单的Web应用程序,它将温度从摄氏温度转换为°F和K。
所有的源代码,xml等都应该是正确的,因为我是从书中摘下来的。
Java版本-1.7
Tomcat版本-8.0
作业系统:Windows 8.0
输入http:// localhost:8080 / lab4 /时显示错误。
Tomcat运行正常,我可以部署和使用其他Web应用程序。
另外,我正在使用一个名为convert的自定义标签。
Java类处理程序
package net.thinksquared.lab4;
import javax.servlet.jsp.tagext.*;
import javax.servlet.jsp.tagext.BodyTagSupport;
import javax.servlet.jsp.tagext.BodyContent;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.*;
public class Converter extends BodyTagSupport{
private String _to;
public String getTo() {
return _to;
}
public void setTo(String to) {
_to = to;
}
public int doAfterBody(){
try {
BodyContent bc = getBodyContent();
JspWriter out = bc.getEnclosingWriter();
double result = 0.0;
double temp = Double.parseDouble(bc.getString());
if(_to.equals("F")) {
result = toFahrenheit(temp);
} else {
result = toKelvin(temp);
}
bc.getEnclosingWriter().print(result);
} catch(Exception E) {
}
return EVAL_PAGE; //tells servlet container to process rest of JSP page.
}
private double toFahrenheit(double c){
return 32.0 + (c*1.8);
}
private double toKelvin(double c){
return 273.0 + c;
}
}
JSP
<%@ page contentType="text/html language="java";charset=UTF-8" %>
<%@ taglib uri="/tags/lab4-converter" prefix="temp" %>
<temp:convert to="F">100</temp:convert>
顶级域名
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN"
"http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">
<taglib>
<tlibversion>1.2</tlibversion>
<jspversion>1.1</jspversion>
<tag>
<name>convert</name>
<tagClass>net.thinksquared.lab4.Converter</tagClass>
<bodyContent>JSP</bodyContent>
<attribute>
<name>to</name>
<required>no</required>
</attribute>
</tag>
<taglib>
Web.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN"
"http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">
<web-app>
<display-name>Lab4: Custom Tags</display-name>
<welcome-file-list>
<welcome-file>test.jsp</welcome-file>
</welcome-file-list>
<taglib>
<taglib-uri>/tags/lab4-converter</taglib-uri>
<taglib-location>/WEB-INF/lab4-converter.tld</taglib-location>
</taglib>
</web-app>
最后,我有这批要编译和构建。 编译
@echo off
REM ----------------------------------------------------------------------
REM This batch file creates a WAR file for Lab 4, the lab on custom tags.
REM The output is lab4.war.
REM
REM NOTE: To get this batch file on your system, you should change the
REM PATH variable to point to your JDK location.
REM ----------------------------------------------------------------------
set PATH=%PATH%;C:\Program Files\Java\jdk1.7.0_55\bin
set APP_NAME=lab4
echo Cleaning up build directory
rmdir /S/Q build
echo Creating buildnment directory
mkdir build\WEB-INF\classes
echo Installing web.xml and .tld files
copy .\web\WEB-INF\*.* .\build\WEB-INF\*.*
echo Installing web pages
copy .\web\ .\build\
echo Compiling java code
javac -deprecation -d build/WEB-INF/classes -classpath ./lib/jsp-api.jar ./src/*.java
cd build
echo creating WAR file
jar cvf %APP_NAME%.war .
copy %APP_NAME%.war ..
pause
您的项目目录已经在Tomcat中的webapps下的事实使这一点变得很困难。 您可以:
将您的项目目录移动到其他位置,并使您的编译脚本将lab4.war文件放置到webapps文件夹中(推荐),或者
您可以更改源文件夹的结构(不推荐),以将Web文件夹中的所有内容上移到lab4文件夹中。
webapps文件夹应包含* .war文件或包含Web应用程序和WEB-INF文件夹的文件夹。 您的结构都不符合这些条件。
同样,仅将war文件移动到webapps文件夹中也可能会引起问题,因为它将要解压缩到名为lab4的文件夹中-这是项目所在的位置。 这可能对您不利。
我找到了解决方案。 TLD不正确。
正确的是:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN"
"http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">
<taglib>
<tlibversion>1.2</tlibversion>
<jspversion>1.1</jspversion>
<shortname>temp</shortname>
<tag>
<name>convert</name>
<tagclass>net.thinksquared.lab4.Converter</tagclass>
<bodyContent>JSP</bodyContent>
<attribute>
<name>to</name>
<required>no</required>
</attribute>
</tag>
</taglib>
我还按照Jason的建议进行了操作:将lab4.war放在webapps中,然后删除文件夹lab4。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.