#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, это не оптимальный выбор.?