Как заставить мой первый сервлет работать? - PullRequest
1 голос
/ 22 ноября 2010

Я пытаюсь заставить свой первый сервлет работать в затмении для j2ee с tomcat 7.0, но я не могу понять, что я делаю неправильно.Я запускаю весь проект следующим образом: щелкните правой кнопкой мыши мой проект-> Выполнить как-> Выполнить на сервере, файл index.html отобразится мне в браузере, но когда я нажимаю «Продолжить», он показывает мне это сообщение:

Статус HTTP 404 - / PDPJ_L5 / hello - Запрошенный ресурс (/ PDPJ_L5 / hello) недоступен.

Я подозреваю, что проблема в атрибуте действияиз тега формы или в файле веб-дескриптора.Пожалуйста, объясните мне, что я делаю неправильно и как исправить мой проект.Спасибо.

Вот структура каталогов моего проекта (PDPJ_L5):

PDPJ_L5

  • Веб-сервисы JAX-WS
  • Дескриптор развертывания: PDPJ_L5
  • Ресурсы Java: src, содержащий пакет сервлетов с моим сервлетом Hello.java
  • Ресурс JavaScript
  • сборка
  • META-INF
  • WEB-INF с папкой lib, my index.html и web.xml

Содержимое index.html:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Some title</title>
</head>
<body>
<H1 ALIGN="CENTER">Choose your option:</H1>
<form action="http://localhost:8080/PDPJ_L5/hello" method="GET">
    <center>
        <INPUT TYPE="RADIO" NAME="group" VALUE="one">ONE<BR>
        <INPUT TYPE="RADIO" NAME="group" VALUE="two">TWO<BR><BR>
        <INPUT TYPE="SUBMIT" VALUE="Continue">
    </center>
</form>
</body>
</html>

Вот привет!сервлет .java:

package servlets;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class Hello
 */
public class Hello extends HttpServlet
{
    private static final long   serialVersionUID    = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public Hello()
    {
        super();
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
    {
        response.setContentType("text/html");

        PrintWriter out = response.getWriter();
        out.println("<HEAD><TITLE>Success</HEAD><BODY>");
        out.println("<h1> It works </h1>");
        out.println("</BODY>");
        out.close();
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
    {
        doGet(request, response);
    }

}

и файл web.xml:

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-application_2_3.dtd">

<web-app>
   <servlet>
      <servlet-name>Hello</servlet-name>
      <servlet-class>servlets.Hello</servlet-class>
   </servlet>

   <servlet-mapping>
      <servlet-name>Hello</servlet-name>
      <url-pattern>/hello</url-pattern>
   </servlet-mapping>
</web-app>    

Ответы [ 4 ]

0 голосов
/ 24 ноября 2010

Я нашел решение для моей проблемы.

Я создал военный архив с помощью команды jar и поместил его в папку webapps на tomcat, и он работает таким образом.

Осталась только одна проблема - он не работает при затмениис запуском на сервере, но таким образом он работает.

Спасибо за вашу помощь.

0 голосов
/ 22 ноября 2010

Что говорят файлы журнала Tomcat (или если вы запускаете экземпляр Tomcat из консоли Eclipse)? Обычно это происходит, когда возникает какое-то исключение при инициализации сервлета или при обработке запроса.

0 голосов
/ 22 ноября 2010

Предполагая, что вы щелкнули правой кнопкой мыши> Построили проект.

В рабочем пространстве Eclipse (в проводнике Windows) вы можете найти фактический файл класса - PDPJ_L5/build/classes/servlets/Hello.class?оно существует?

0 голосов
/ 22 ноября 2010

Когда ваша страница индекса загружается, какой порт на самом деле используется? Ваша гиперссылка идет на 8080, но я думаю, что «Запуск на сервере» запускает временный сервер, который будет привязан к случайному порту.

...