Struts - регистрация для каждого слоя (Action, DAO) - PullRequest
1 голос
/ 03 августа 2011

Я новичок в Struts, и я хотел бы понять, как мне вести ведение журналов для каждого уровня (JSP / ActionForm, Action, DAO) приложения.

Я замечаю, что со временем файл журнала ошибок может оказаться слишком загроможденным и неприветливым для просмотра. Как улучшить шаблоны ведения журналов, чтобы отделить ошибки, создаваемые каждым слоем приложения?

и я не смог найти способ обработки исключений на странице jsp.

Шаблон кода для действий

public ActionForward perform(ActionMapping mapping, 
                              ActionForm form, 
                              HttpServletRequest request, 
                              HttpServletResponse response) 
   throws IOException, ServletException { 

   try {
         // calls the DAO
   }
   catch (CustomDAOException e) {
     log.error(e);
     // inform application there is an error
   }
   catch (Exception e) {
     log.error(e)
     // inform application there is an error
   }
}

Шаблон кода для DAO

public void update() throw CustomDAOException {
try {
    // Prepare a statement to insert a record
    String sql = "INSERT INTO my_table (col_string) VALUES(?)";
    PreparedStatement pstmt = connection.prepareStatement(sql);

    // Insert 10 rows
    for (int i=0; i<10; i++) {
        // Set the value
        pstmt.setString(1, "row "+i);

        // Insert the row
        pstmt.executeUpdate();
    }
} catch (SQLException e) {
    throw new CustomDAOException(e);
}

1 Ответ

0 голосов
/ 03 августа 2011

Установите обработчик исключений в вашем Struts-config, позвольте всем исключениям всплыть и зарегистрируйте их там. Это сделает ненужным весь код перехвата и регистрации исключений.

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

Полагаю, вы могли использовать древнюю версию Struts 1, я видел похожий код, в котором им приходилось перехватывать исключения в действиях, очевидно, потому что обработчики исключений не работали с ранними версиями Struts. Теперь это исправлено, первое, что вы должны сделать, это обновить приложение по крайней мере до 1.2, предпочтительно до 1.3. Использование устаревшей версии веб-фреймворка - это плохо, среди исправлений, которые вы упускаете, есть исправления безопасности, поэтому ваше приложение может быть небезопасным.

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

...