контроллер spring mvc, эквивалентный контроллеру javaee

#jakarta-ee #spring-mvc #model-view-controller #java-ee-6 #java-ee-7

#джакарта-ee #spring-mvc #model-view-controller #java-ee-6 #java-ee-7

Вопрос:

Я использовал spring.

Существует ли эквивалентная стратегия контроллера для чистого простого java-ee 6/7? Например, есть контроллеры spring, которые обрабатывают параметры пути, параметры запроса, возвращаемые типы, перенаправление, перенаправление на представления с объектом ModelAndView для переноса данных?

 @Controller
class MyControllerClass {

      @RequestMapping...
      method(){
         ServiceCall()...
      //put something to modelAndView object here and redirect to jsp page.
      return "home"; // this will redirect data to home.jsp

      }
}
  

Ответ №1:

Одной из идей было бы использовать реализацию JAX-RS на Джерси.

Контроллер будет выглядеть так:

 @Path("same_as_the_class_request_mapping")
public class MyControllerClass{

    @Path("pretty_much_same_as_the_method_request_mapping")
    @GET //or whatever you need
    public Viewable roaster(){
        //do whatever
        return new Viewable("home", some_model_object);
    }
}
  

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

Джерси также дает вам возможность интеграции с Spring, что позволяет вызывать службы Spring из контроллеров Джерси. Ознакомьтесь с этим для получения более подробной информации

Комментарии:

1. будет ли этот контроллер сервлетом? откуда я могу знать?

2. Нет, это не сервлет. Идея практически такая же, как у контроллера Spring MVC. Нет необходимости переходить к сервлетам. Jersey выполняет большинство необходимых вам действий точно так же, как Spring MVC выполняет большинство необходимых действий без использования сервлетов

3. итак servlet thread , это под капотом? Как обычный сервлет? 2) как обрабатывать идентификатор в обоих параметрах запроса или пути 3) значит, это единственный способ в чистом javaee?

4. Это не сервлет. Это просто класс, который вызывается сервлетом Джерси (который есть com.sun.jersey.spi.container.servlet.ServletContainer ) для обработки соответствующих запросов

5. одной из причин, по которой я переключился с spring на javaee pure, было то, что spring создавал объекты, в то время как java ee создает потоки сервлетов. последнее происходит быстро. если это тот же случай с jax-rs, это не оптимальный выбор.?