2015-12-30 3 views
0

Я просто пытаюсь очень простой веб-приложение, которое преобразует температуру от Цельсия до ° F и К.Tomcat Ошибка: Resource Not Available (HTTP 404)

Все исходный код, XML, и т.д., как предполагается, правильно, потому что я взял его из книги.

Java версия - 1,7

Tomcat версии - 8,0

ОС: Windows 8.0

ошибка появляется, когда я вхожу http://localhost:8080/lab4/.

Tomcat работает правильно, и я могу развернуть и использовать другие webapps.

Кроме того, я использую специальный тег под названием convert.

Java Class Handler

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

Если вы получаете 404, используя http: // localhost: 8080/lab4 /, то это означает, что ваш файл приветствия не найден. Поэтому код тега не имеет значения. Кроме того, вы можете настроить приложение-менеджер, чтобы узнать, было ли загружено и запущено ваше веб-приложение. – rickz

ответ

0

Тот факт, что ваш каталог проекта уже находится под WebApps в Tomcat делает это трудно. Вы можете:

  1. переместить директорию проекта в другом месте и сделать сценарий компиляции место файл lab4.war в папку WebApps (рекомендуется), или

  2. вы можете изменить свою структуру папок источника (не рекомендуется) переместить все содержимое папки в папку lab4.

Папка webapps должна содержать файлы * .war или папки, содержащие веб-приложение и папку WEB-INF. Ваша структура не отвечает ни тем, ни другим.

Кроме того, просто перемещение файла войны в папку webapps может вызвать проблемы, потому что оно захочет распаковаться в папку lab4, где находится ваш проект. Это, вероятно, плохо закончится для вас.

+0

Я попробовал 1-й вариант. Я удалил папку 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 в WebApps и удалила lab4 папки.

Смежные вопросы