it-swarm.com.ru

запрошенный ресурс Tomcat () недоступен

я знаю, что это очень распространенный вопрос, так как я нахожу много вопросов, касающихся этого, на нескольких форумах, включая SO. но я еще не нашел решениеmy web.xml (находится в WEB-INF)

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://Java.Sun.com/xml/ns/javaee" xmlns:web="http://Java.Sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://Java.Sun.com/xml/ns/javaee http://Java.Sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>SMSProjectNew</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
  </welcome-file-list>
  <servlet>
    <description></description>
    <display-name>ReceiveMessagesServlet</display-name>
    <servlet-name>ReceiveMessagesServlet</servlet-name>
    <servlet-class>com.sendreceive.ReceiveMessagesServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>ReceiveMessagesServlet</servlet-name>
    <url-pattern>/ReceiveMessagesServlet</url-pattern>
  </servlet-mapping>
</web-app>

hTML-страница index.html, расположенная в папке WebContent 

<!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>Insert title here</title>
</head>
<body>
The application started successfully version 1:27
<form action="/ReceiveMessagesServlet" method="post">
<input type="text" name="number"/>
<input type="text" name="message"/>
<input type="submit" name="submit"/>
</form> 
</body>
</html>

наконец, сервлет ReceiveMessagesServlet, расположенный в src\com.sendreceive package com.sendreceive;

import Java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

   public class ReceiveMessagesServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    public ReceiveMessagesServlet() {
        super();
        // TODO Auto-generated constructor stub
    }


    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        processRequest(request,response);
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        processRequest(request,response);
    }

    protected void processRequest(HttpServletRequest request,
            HttpServletResponse response) {
        String responseMessage = request.getParameter("message");
        String responseNumber = request.getParameter("number");
        System.out.println(responseMessage+responseNumber);
    }

}

я установил плагин Tomcat в Eclipse. когда я щелкаю правой кнопкой мыши на проекте, а затем нажимаю запустить проект на сервере. Сервер Tomcat запускается в Eclipse, и отображается страница index.html ... но когда я ввожу некоторые значения в поля и нажимаю "Отправить", это дает ошибку 404. Я боролся с прошлыми 2 часами. Кроме того, я использую этот учебник http://www.ibm.com/developerworks/opensource/library/os-Eclipse-Tomcat/index.html

9
i_raqz

Вы получаете ошибку 404 из-за действия = "/ ReceiveMessagesServlet", пожалуйста, удалите косую черту. Попробуйте с действием = "ReceiveMessagesServlet". 

Когда вы добавляете косую черту в шаблон URL, тогда контейнер будет искать веб-приложение, развернутое с именем «ReceiveMessagesServlet». Поскольку этого нет, вы получите ошибку 404. 

11
donatello

Когда вы развертываете свое приложение в контейнере сервлетов, вашим URL-адресам может предшествовать контекстный путь, идентифицирующий ваше приложение среди других приложений в этом контейнере (т.е. /ReceiveMessagesServlet становится /MyApp/ReceiveMessagesServlet).

Поэтому вы должны принять эту возможность во внимание и соответственно изменить ваши URL-адреса, например, с помощью <c:url> в JSTL:

<form action="<c:url = value = '/ReceiveMessagesServlet' />" method="post"> 

Альтернативно, без JSTL:

<form action="${pageContext.request.contextPath}/ReceiveMessagesServlet" method="post"> 
7
axtavt

Ошибки в вашем сервлете могут привести к тому, что Tomcat пометит его как недоступный, как я получил в своем журнале сервера:

02.06.2013 13:32:43 org.Apache.catalina.core.ApplicationContext log ИНФОРМАЦИЯ: Обозначение сервлета Imager как недоступного 02.02.2013 13:32:43 org.Apache.catalina.core.StandardWrapperValve вызывает SEVERE: Allocate исключение для сервлета Imager Java.lang.ClassNotFoundException com.project.test.ImageThumber

Вы должны посмотреть журнал по причинам . В моем случае отсутствует баночка с некоторыми тестовыми классами.

0
cavila