2015-12-30 29 views
0

我只是想一个非常简单的web应用程序,从摄氏温度转换为°F和K.Tomcat的错误:资源不可用(HTTP 404)

所有的源代码,XML等,被认为是正确的,因为我从书中拿走它。

Java版本 - 1.7

Tomcat的版本 - 8.0

操作系统:Windows 8.0

错误显示,当我进入http://localhost:8080/lab4/

Tomcat运行正常,我可以部署和使用其他webapps。

另外,我正在使用一个名为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> 

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> 

    <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> 

最后,我有这批编译和构建。 的compile.bat

@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 

I'm working with these directory:

+0

如果使用http:// localhost:8080/lab4 /获得404,则表示无法找到您的欢迎文件。因此标签代码不相关。此外,您可以通过管理器应用查看您的网络应用是否已加载并正在运行。 – rickz

回答

0

事实上,你的项目目录已经下Tomcat的webapps使得这一困难。您可以:

  1. 移到别处项目目录,让你的编译脚本的地方lab4.war文件到webapps目录(推荐),或

  2. 你可以改变你的源文件夹结构(未建议)将网络文件夹中的所有内容移动到lab4文件夹中。

WebApps的文件夹中应包含*的.war文件或包含Web应用程序文件夹和WEB-INF文件夹中。你的结构不符合这些。

另外,将您的war文件移动到webapps文件夹中可能会导致问题,因为它会解压缩到名为lab4的文件夹 - 这是您的项目所在的文件夹。这可能会对你很糟糕。

+0

我试过第一个选项。我删除了lab4文件夹并将lab4.war放入了webapps。我收到了同样的错误。谢谢 – Kelper

0

我找到了解决方案。顶级域名不正确。

正确的是:

<?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> 

我还做了什么杰森建议:放在lab4.war在web应用和删除的文件夹lab4。

相关问题