2014-12-22 3 views
3


Я отчаянно пытаюсь выполнить Servlet из формы HTML действий и получаю следующее сообщение об ошибке:Tomcat 7.0: запрошенный ресурс (Servlet) не доступен

HTTP Status 404 -/WSE_Web/QueryServlet

Тип: отчет о состоянии

сообщение:/WSE_Web/Que ryServlet

описание: Запрошенный ресурс (/ WSE_Web/QueryServlet) недоступен.

Я просмотрел несколько вопросов здесь и учебники, но я не могу найти то, что мне не хватает (также я не очень хорошо знаком с сервлетами и веб-программированием).
Я использую Eclipse с Tomcat 7.0.12.

Моя форма Действие:

enter image description here

Мой Servlet класс:

package servlet; 

import java.io.*; 
import javax.servlet.*; 
import javax.servlet.annotation.*; 
import javax.servlet.http.*; 

@WebServlet("/QueryServlet") 
public class QueryServlet extends HttpServlet { 
    private static final long serialVersionUID = 1L; 

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     PrintWriter out = response.getWriter(); 
     out.println("Hello World"); 
    } 
} 

Мой web.xml:

<?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_3_0.xsd" id="WebApp_ID" metadata-complete="true" version="3.0"> 
    <display-name>WSE_Web</display-name> 
    <welcome-file-list> 
    <welcome-file>index.html</welcome-file> 
    </welcome-file-list> 
</web-app> 

Структура проекта:

enter image description here

+0

Попробуйте изменить действие на '/ QueryServlet' с косой чертой. – RealSkeptic

+0

Посмотрите http://stackoverflow.com/questions/6535676/webservlet-annotation-with-tomcat7 – rickz

+0

Не уверен, что ссылка на http://java.sun.com/xml/ns/javaee/web- app_3_0.xsd ** и ** http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd в том же файле 'web.xml'. Это верно?. AFAIK, вам нужно придерживаться 3.0 для tomcat, чтобы знать и обрабатывать ваши аннотации. – ochi

ответ

0

Если ваш контекст приложения /WSE_Web, ваше приложение является правильным и должно работать.

Но если /WSE_Web не ваше приложение изменение контекста URL-шаблон для:

@WebServlet("/WSE_Web/QueryServlet") 

Чтобы убедиться, что вы также можете использовать web.xml файл:

<web-app> 
    ... 
    <servlet> 
     <servlet-name>QueryServlet</servlet-name> 
     <servlet-class>servlet.QueryServlet</servlet-class> 
    </servlet> 

    <servlet-mapping> 
     <servlet-name>QueryServlet</servlet-name> 
     <url-pattern>/QueryServlet</url-pattern> 
    </servlet-mapping> 
</web-app> 
+0

. Моя HTML-страница работает на http: // localhost: 8080/WSE_Web/и при нажатии на форму действия я нажимаю http: // localhost: 8080/WSE_Web/QueryServlet, так что все должно быть хорошо. –

+0

@FrankWittich: Вы пытались '/ WSE_Web/QueryServlet' вместо'/QueryServlet'? –

+0

Да, к сожалению, не помогло. Результат всегда один и тот же. –

0

Убедитесь, что у вас есть надлежащее HTML:

<input type='text' name='query' size='96'/><!-- your missing the `/` at the end --> 
<input type='submit' name='subButton' value='Search!'/><!-- your missing the `/` at the end --> 

изменить также значение метода для get, так как у ou являются переопределяющими только doGet()

<form method='get' action='QueryServlet'> 
... 
</form> 
Смежные вопросы