Добавление страницы ошибки блокирует все сервлеты в tomcat 7

У меня есть динамический веб-проект в eclipse, который использует аннотации для сопоставления сервлетов следующим образом:

@WebServlet("/LoginController")
public class LoginController extends HttpServlet {
    ....
}

У меня также есть страницы jsp, которые используют эти сервлеты, например:

<form method="post" action="LoginController">

Все работало как char, пока я не решил добавить страницы ошибок для ошибок 404 и 500. Небольшой поиск в Google привел меня к java2s, и я обнаружил, что необходимо изменить файл web.xml, чтобы указать страницы ошибок. Но в моем проекте нет файла web.xml в каталоге WEB-INF (кстати, я использую Eclipse Indigo в качестве IDE и Tomcat 7.0.14). Поэтому я добавил один следующим образом:

<?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-app_2_3.dtd">
<web-app>
    <error-page>
        <error-code>
            404
        </error-code>
        <location>
            /404.html
        </location>
    </error-page>

    <error-page>
        <error-code>
            500
        </error-code>
        <location>
            /500.html
        </location>
    </error-page>
</web-app>

Это вводит новую проблему. Мои сервлеты больше не работают! Все мои JSP работают нормально. Но все запросы к моим сервлетам приводят меня на страницу с ошибкой 404. Например, я могу получить форму входа, так как JSP работают нормально. Но когда я отправляю свою форму входа, т. Е. LoginController, она выводит страницу с ошибкой 404.

Я думаю, что это можно решить, используя файл web.xml для отображения сервлета вместо аннотации WebServlet. Но есть ли способ использовать аннотацию WebServlet, а также предоставлять страницы ошибок? Я буду рад, если web.xml можно будет избежать отображения страниц ошибок. Кроме того, я не люблю редактировать какие-либо файлы конфигурации tomcat. Итак, как я могу решить проблему?


person Jomoos    schedule 01.01.2012    source источник


Ответы (1)


Удалите тип документа и используйте следующее объявление элемента веб-приложения:

<web-app xmlns="http://java.sun.com/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
  version="3.0">

Тип документа, который вы используете, объявляет ваше веб-приложение как веб-приложение 2.3, которое не поддерживает аннотации.

person JB Nizet    schedule 01.01.2012