в чем разница между restcontroller и controller

Русские Блоги

Разница между @Controller и @RestController

Знание: аннотация @RestController эквивалентна комбинированному эффекту @ResponseBody + @Controller.

Если вы просто используете @RestController для аннотирования контроллера, метод в контроллере не может вернуть страницу jsp или html, настроенный преобразователь представления InternalResourceViewResolver не работает, а возвращаемое содержимое является содержимым в Return.

Если вам нужно вернуться на указанную страницу, вам нужно использовать @Controller с преобразователем представлений InternalResourceViewResolver.
Если вам нужно вернуть на страницу содержимое JSON, XML или настраиваемый mediaType, вам необходимо добавить аннотацию @ResponseBody к соответствующему методу.
Например:

1. Используя аннотацию @Controller, в соответствующем методе парсер представления может проанализировать возвращаемую страницу jsp, html и перейти на соответствующую страницу.

Если вы возвращаете json и другой контент на страницу, вам нужно добавить аннотацию @ResponseBody

@CrossOrigin
@Controller
public class FileUploadController <

// Переход на страницу загрузки файла
@RequestMapping(value=»/gouploadimg», method = RequestMethod.GET)
public String goUploadImg() <
// Переходим к uploadimg.html в каталоге шаблонов
return “uploadimg”;
>

// Обработка загрузки файла
@RequestMapping(value=»/testuploadimg», method = RequestMethod.POST)
public @ResponseBody String uploadImg(@RequestParam(“file”) MultipartFile file,
HttpServletRequest request) <
System.out.println («Вызов метода загрузки файла»);
String contentType = file.getContentType();
String fileName = file.getOriginalFilename();

2. Аннотации @RestController эквивалентны комбинации двух аннотаций @ Controller + @ ResponseBody, при возврате данных json не требуется добавлять аннотацию @ResponseBody перед методом, но с помощью аннотации @RestController вы не можете возвращать jsp, html-страницы, просматривать парсеры. Невозможно разобрать страницу jsp, html

@CrossOrigin
@RestController /* @Controller + @ResponseBody*/
public class HospitalController <

Источник

Русские Блоги

Анализ исходного кода @Controller и @RestController

2018 год закончился неосознанно, вы все еще беспокоитесь о неразличимости @Controller и @Restcontroller? Этот блог анализирует эти две аннотации на уровне источника и заслуживает прочтения.

в чем разница между restcontroller и controller. Смотреть фото в чем разница между restcontroller и controller. Смотреть картинку в чем разница между restcontroller и controller. Картинка про в чем разница между restcontroller и controller. Фото в чем разница между restcontroller и controller

Если вам неясно, посмотрите на следующий код:

Очевидно, что исходный код двух аннотаций содержит много аннотаций:

Аннотации @Controller включают в себя: @Target (), @Retention (RetentionPolicy.RUNTIME), @Documented, @Component

Аннотации @RestController включают в себя: @Target (ElementType.TYPE), @Retention (RetentionPolicy.RUNTIME), @Documented, @Controller, @ResponseBody

Поэтому анализ исходного кода также является анализом аннотаций.

Встроенные аннотации и метааннотации

Аннотации (также известные как метаданные) предоставляют нам формальный способ добавления информации в код, чтобы мы могли очень удобно использовать данные в более позднее время.

Есть три типа в Java SE5Встроенные аннотации

Указывает, что текущее определение метода переопределит метод в суперклассе

Если элемент аннотирован так, как он используется в программе, компилятор выдаст предупреждение

Закрыть неправильное сообщение с компилятором

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

Указывает, где можно использовать аннотацию. Возможные параметры ElementType включают в себя:

КОНСТРУКТОР: объявление конструктора

Изобретение относится к декларации домена (включая экземпляр enum).

LOCAL_VARIABLE: объявление локальной переменной

МЕТОД: Объявление метода

ПАКЕТ: декларация пакета

PARAMETER: объявление параметров

ТИП: класс, интерфейс (включая тип аннотации) и объявление enum

Указывает, на каком уровне информация аннотации должна быть сохранена. Необязательные параметры RetentionPolicy включают в себя:

ИСТОЧНИК: Комментарии будут отброшены в компиляторе

CLASS: аннотации доступны в файле класса, но будут удалены виртуальной машиной

RUNTIME: виртуальная машина сохраняет аннотации во время выполнения, поэтому вы можете прочитать информацию аннотации через механизм отражения

@DocumentedВключить этот комментарий в Javadoc@InheritedРазрешить подклассам наследовать аннотации в родительском классе

Теперь, когда мы понимаем роль @Target (), @Retention (RetentionPolicy.RUNTIME), @Documented, мы также можем настроить аннотацию @Algorithms:

@Компонентная аннотация

Исходный код аннотации @Component выглядит следующим образом:

Добавлена ​​аннотация @Component, указывающая на то, что это логический компонент, который сообщает Spring для создания компонента. Эквивалент роли в файле конфигурации xml.

@AliasFor аннотация

@AliasFor (annotation = Component.class) в @Controller указывает, что @Controller является псевдонимом для Компонента, который, по сути, является Компонентом, как указано в примечании «для преобразования в bean-компонент Spring в случае автоопределенного компонента.», Можно отсканировать в боб.

Точно так же @AliasFor (annotation = Controller.class) в @RestController указывает, что @RestController является псевдонимом Controller и Controller. По сути, это Component и Spring bean.

@ResponseBody аннотация

При обращении к аннотации @ResponseBody необходимо упомянуть существительное: Передача репрезентативного состояния (REST).

Что такое экспрессивная передача состояния? Разбери это на части:

Статус: при использовании TEST мы обращаем больше внимания на состояние ресурсов, а не на действия, предпринимаемые над ресурсами;

Передача: преобразование из одного приложения в другое в некоторой форме (например, JSON), например, с сервера на клиент.

В версии Spring 4.0 Spring поддерживает использование аннотации @ResponseBody и различных HttpMethodConverter для замены рендеринга на основе представления для достижения поддержки REST. Конечно, Spring поддерживает REST гораздо больше, чем этот.

Аннотация @ResponseBody указывает Spring отправлять возвращенный объект клиенту в качестве ресурса. Этот процесс пропускает процесс разрешения представления в обычном процессе модель / представление, но использует различные конвертеры сообщений Http, поставляемые с Spring, для преобразования данных, генерируемых контроллером, в форму представления, требуемую клиентом. Если Accept в заголовке запроса клиента указывает, что он может принять «application / json», а JSON Джексона находится под путем класса, объект, возвращаемый методом обработки, будет передан MappingJacksonHTTPMessageConverter, который будет преобразован в JSON и возвращен клиенту; если клиент Если вам нужен формат «text / html», то Jaxb2RootElementHttpMessageConverter сгенерирует ответ XML для клиента.

При обработке запросов @ResponseBody и @RequestBody являются введением и мощным способом включения преобразования сообщений. Однако если каждому методу в контроллере требуется функция преобразования информации, эти аннотации будут иметь определенную степень повторения.

Поэтому в Spring 4.0 появилась аннотация @RestController. Если вы используете аннотацию @RestController в классе контроллера, нам больше не нужно добавлять аннотацию @ResponseBody для каждого метода, поскольку Spring будет применять функцию преобразования сообщений ко всем методам в контроллере. Вот почему этот контроллер называется Rest Причина для контроллера является так называемой общеизвестной.

подводить итоги

@RestController эквивалентен @ResponseBody + @Controller.

Если ожидается, что результат, сгенерированный контроллером, будет виден, то сгенерированные им данные модели должны быть отображены в виде, чтобы они могли отображаться в браузере с помощью @Controller.

Если результат, сгенерированный контроллером, не нужно видеть, данные, сгенерированные контроллером, возвращаются непосредственно в браузер через конвертер сообщений, используя @RestController.

[1] Брюс Экель. Идеи программирования на Java (четвертое издание) [M]. Перевод Чэнь Хаопэна. Пекин: Пресса о машиностроении, 2007.

[2] Крейг Уоллс. Весенний бой (4-е издание) [М]. Перевод Чжана Вейбина. Пекин: издательство «Почта и телекоммуникации», 2016.

Источник

Русские Блоги

Разница между @Controller и @RestController

Точка знания: аннотация @RestController эквивалентна комбинированному эффекту @ResponseBody + @Controller.

Если вы просто используете @RestController для аннотирования контроллера, метод в контроллере не может вернуться на страницу jsp или html, настроенный преобразователь представления InternalResourceViewResolver не работает, возвращаемое содержимое является содержимым в Return.

Если вам нужно вернуться на указанную страницу, вам нужно использовать @Controller с распознавателем представлений InternalResourceViewResolver.
Если вам нужно вернуть JSON, XML или пользовательский контент mediaType на страницу, вам нужно добавить аннотацию @ResponseBody в соответствующий метод.

1. Используя аннотацию @Controller, в соответствующем методе анализатор представлений может проанализировать возвращаемую страницу jsp, html и перейти на соответствующую страницу.

Если вы возвращаете json и другой контент на страницу, вам нужно добавить аннотацию @ResponseBody

2. Аннотация @RestController эквивалентна комбинации аннотаций @ Controller + @ ResponseBody. Для возврата данных json не нужно добавлять аннотацию @ResponseBody перед методом, но, используя аннотацию @RestController, вы не можете вернуть jsp, html-страницу, просмотреть парсер Невозможно проанализировать JSP, HTML-страницу

Интеллектуальная рекомендация

Многослойная презентацияViewController Jap

Распечатать список с конца до головы

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

Типы данных и переменные

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

в чем разница между restcontroller и controller. Смотреть фото в чем разница между restcontroller и controller. Смотреть картинку в чем разница между restcontroller и controller. Картинка про в чем разница между restcontroller и controller. Фото в чем разница между restcontroller и controller

оглавление 1. Одно место 2. Случайное расположение 3. Добавьте баллы для оценки 4. Получение файла 5. Установите уровень сложности. 6. Срок завершения 7. Выберите заполнение пропусков. 1. Одно место Н.

Источник

Русские Блоги

Разница аннотаций @RestController и @Controller

Аннотация @RestController эквивалентна комбинированному эффекту @ResponseBody + @Controller

// Обычно используется для разделения интерфейса или внешнего и внутреннего интерфейса

1. Если вы просто используете @RestController для аннотирования Контроллера, методы Контроллера не могут возвращать страницы jsp, html, настроенный преобразователь представлений InternalResourceViewResolver не работает, а возвращаемое содержимое является содержимым взамен.

// Обычно используется для фоновых страниц

2. Если вам нужно вернуться на указанную страницу, вам необходимо использовать @Controller для взаимодействия с преобразователем представлений InternalResourceViewResolver.

Если вам нужно вернуть на страницу содержимое JSON, XML или настраиваемый mediaType, вам необходимо добавить аннотации @ResponseBody к соответствующему методу.

1. Если вы просто используете @RestController для аннотирования Контроллера, метод в Контроллере не может возвращать страницы jsp, html, настроенный преобразователь представлений InternalResourceViewResolver не работает, а возвращаемое содержимое является содержимым взамен.

2. Если вам нужно вернуться на указанную страницу, вам необходимо использовать @Controller для взаимодействия с преобразователем представлений InternalResourceViewResolver.

Если вам нужно вернуть на страницу содержимое JSON, XML или настраиваемый mediaType, вам необходимо добавить аннотации @ResponseBody к соответствующему методу.

Источник

Русские Блоги

Разница между @RestController и @Controller

Аннотация @RestController, эквивалентная комбинации двух аннотаций @ Controller + @ ResponseBody, для возврата данных json не требуется добавлять аннотацию @ResponseBody перед методом, но при использовании этой аннотации @RestController вы не можете вернуть jsp, html-страницу, парсер представления не может разобрать JSP, HTML-страница

Поймите комментарии ниже.

@ResponseBody указывает, что возвращаемый результат этого метода напрямую записывается в тело ответа HTTP, которое обычно используется при асинхронном получении данных [то есть AJAX]. После использования @RequestMapping возвращаемое значение обычно анализируется как путь перехода, но после добавления @ResponseBody Возвращенный результат не будет анализироваться как путь перехода, а будет непосредственно записан в тело ответа HTTP. Например, если вы получаете данные json асинхронно и добавляете @ResponseBody, он будет напрямую возвращать данные json. @RequestBody вставляет тело HTTP-запроса в метод и записывает тело запроса в объект, используя подходящий HttpMessageConverter.

Если используется @RestController, результат, возвращаемый после запроса, выглядит следующим образом.

в чем разница между restcontroller и controller. Смотреть фото в чем разница между restcontroller и controller. Смотреть картинку в чем разница между restcontroller и controller. Картинка про в чем разница между restcontroller и controller. Фото в чем разница между restcontroller и controller

Если вы используете @Controller, возвращаемый результат будет следующим;

в чем разница между restcontroller и controller. Смотреть фото в чем разница между restcontroller и controller. Смотреть картинку в чем разница между restcontroller и controller. Картинка про в чем разница между restcontroller и controller. Фото в чем разница между restcontroller и controller

Аннотация @Controller не может записать результат в тело ответа HTTP, поэтому он не может отображаться нормально.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *