1

В настоящее время я использую очень простую структуру MVC, Bear Bibeault's Front Man, которая для тех, кто не знаком, похож на Spring MVC (по крайней мере, в концепции). Одна из проблем, с которыми я сталкиваюсь, - это правильно обрабатывать исключения.Как вы обрабатываете/регистрируете ошибки в веб-приложении Java MVC?

В настоящее время я делаю что-то вроде этого,

try { 
    //do something 
}catch (Exception ex) { 
    logger.error("Logging error", ex); 
    Map model = new HashMap(); 
    model.put("error", ex.getLocalizedMessage()); 
    cc.setScopedVariable("model", model); 
    cc.forwardToView(ERROR_VIEW); 
} 

По существу я вхожу исключение, а затем вперед на странице просмотра ошибок.

Однако это кажется мне неправильным способом сделать это. Это приводит к большому количеству кода шаблона, который не очень суровый.

Что такое лучший способ обработки/регистрации журналов в веб-приложении?

ответ

5

Вы можете сделать все ваши записи внутри error JSP file.

Добавьте это в свой файл web.xml.

<error-page> 
<exception-type>java.lang.Throwable</exception-type> 
<location>/error.jsp</location> 
</error-page> 

В файле Jsp добавить

<%@page isErrorPage="true" %> 

Затем вы можете разместить протоколирование внутри <% %> и отобразить сообщение об ошибке в то же время. Вся логика ведения журнала будет в одном месте, и ваш код начнет выглядеть более чистым.


Вместо того, чтобы использовать скриптлет в вашем JSP-файле, вы могли бы указать точку местоположения на сервлет. Сервлет может обрабатывать всю вашу обработку, а затем переходить на страницу JSP.

Вы также можете использовать эту технику для разных исключений, чтобы вы могли обрабатывать исключения по-разному.

+0

Требуется ли использование скриптов на странице JSP-ошибки? Я пытаюсь отойти от кода в JSP. –

+0

JSPs, представление, не должно содержать код обработки ошибок. Ошибки должны обрабатываться в соответствующем сегменте и выводиться дружественное пользователю сообщение. – doomspork

+1

Вы также можете использовать сервлет вместо страницы JSP. – scheibk

1

Существуют различные виды исключений, поэтому вы должны сначала определить, как вы хотите показать их пользователю. Пересылка их на страницу для отображения ошибки может быть не лучшим выбором для всех ошибок, с которыми они сталкиваются, также иметь в виду, что отображение ошибки без контекста может смущать некоторых конечных пользователей.

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

Вы можете вернуть их на страницу, в которой произошла ошибка, и заполнить там появляется сообщение об ошибке. AJAX/Comet можно использовать для отображения ошибок в реальном времени для пользователя, не снимая их с страницы, где произошла ошибка.

Смежные вопросы