Каково различие между Struts 1.x и Struts 2.x

Переходит к / u / bobbykjack в / r / PHPhelp для поиска проблемы.

Проблема в том, что функция запроса использовала процедурные вызовы и метод объекта, из-за чего объект не обновлял переменную insert_id.

Старый код:

public function query($str) {
  $this->results = mysqli_query(self::$db, $str);
  if($this->results===false) {
    echo $this->mysqli_error();
  }
  else
    return $this->results;
}

Новый код:

public function query($str) {
  $this->results = parent::query($str);
  if($this->results===false) {
    echo $this->mysqli_error();
  }
  else
    return $this->results;
}

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

15
задан Tom11 2 June 2016 в 06:21
поделиться

2 ответа

Основное отличие состоит в том, что в Struts1.x запрос направляется непосредственно сервлету, тогда как в Struts2.x запрос и ответ проходят через стек перехватчика или фильтра. Обычную логику можно поместить в классы фильтров, а разработчик может сосредоточиться на бизнес-логике. Кроме того, существуют различия в структуре каталогов.

Лучше узнать о различиях между Struts1.x и Struts2.x по темам. Вот ссылка на http://www.geekinterview.com/question_details/64360 :


1. Классы действий

В Struts 1.x классы действий должны расширять класс Action (или DispatchAction), а метод выполнения имеет номер параметра и тип возврата ActionForward, но в struts 2.x класс действия также может быть простым pojo с методом execute, возвращающим только строку без каких-либо входных параметров.


2. Зависимость сервлета

Контейнер не обрабатывает Struts2.x , в отличие от Struts1.x , Действия как пару запрос / ответ и действие struts2.x все еще может получить доступ к исходному запросу и ответу.


3. Получение ввода

  • В Struts1.x bean-компоненты формы используются для определения свойств, геттеров и сеттеров, в struts2.x геттеры / сеттеры определяются в самих классах действий.
  • Класс bean-компонентов Struts1.x должен расширять ActionForm или ValidatorForm, но bean-компоненты Struts2.x также могут быть POJO.

4. Возможность тестирования

  • В Struts1.x метод execute () предоставляет API сервлета для тестирования.
  • Struts2.x Внедрение зависимостей используется для упрощения процесса тестирования.

5. Языки выражений

  • Struts1.x JSTL в качестве языка выражений, тогда как Struts2.x использует OGNL (язык обозначений объектной графики) в качестве языка выражений, который является очень сильным чем JSTL.
  • Struts2.x также может использовать JSTL.

6. Преобразование типов

  • В Struts1.x свойства почти представлены в строковой форме, преобразователи относятся к классам, которые не настраиваются.
  • Struts 2.x использует OGNL для преобразования типов

7. Проверка

Проверка на стороне сервера выполняется в классах действий в Struts2.x гораздо более простым способом.

16
ответ дан 1 December 2019 в 01:53
поделиться

Это совершенно другой веб-фреймворк ... Struts2 - это в основном старая веб-работа.

Некоторые различия:

  • Struts2 работает с POJO, больше никаких ActionForms. Все атрибуты запросов заполняются в «стандартных» Java-классах.
  • Действия Struts2 не связаны с Servlet API, они не получают HttpServletRequest и HttpServletResponse в качестве параметров. Кроме того, они с состоянием (действия Struts 1 были без сохранения состояния).
  • В Struts2 есть множество улучшений, таких как API-интерфейс перехватчика, плюс множество интеграций.
  • Конфигурация совершенно иная.

Я рекомендую вам «удалиться» «Struts1 в пользу современных веб-фреймворков.

14
ответ дан 1 December 2019 в 01:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: