Добавление страницы ошибок блокирует все сервлеты в Tomcat 7 - PullRequest
0 голосов
/ 01 января 2012

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

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

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

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

Все это работает как символ, пока я не решил добавить страницы ошибок для ошибок 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. Итак, как я могу решить проблему?

1 Ответ

3 голосов
/ 01 января 2012

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

<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 веб-приложением, которое не поддерживает аннотации..

...