Я знаю, что это плохая идея встроить бизнес-логику в ваши сервлеты, это принято делать на стороне сервера приложений. Иногда у вас есть много параметров в вашем запросе, и все они вам нужно отправить на классы, которые представляют вашу бизнес-логику. Как было бы лучше сделать это? (Я думал о JavaBeans, но они были предназначены для другого пурпуса.) Спасибо.Как отправить параметры запроса в бизнес-логику
ответ
Вы должны разделить свою бизнес-логику на отдельный класс, который реализует интерфейс, и класс сервлета должен просто отвечать за десериализацию входного потока в какой-то объект запроса, передачу его в объект бизнес-логики, а затем сериализация ответа. Если вы добавите немного магии DI, то может оказаться довольно простым найти и построить правильную реализацию класса бизнес-логики для использования.
Пример
public interface TheBusiness {
MyBusinessResponse doProcess(MyBusinessRequest request);
}
public final class MyBusinessClass implements TheBusiness {
@Override
public MyBusinessResponse doProcess(MyBusinessRequest request) {
// all the complex logic goes here.
return response;
}
}
public class MyBusinessServlet extends HttpServlet {
private final TheBusiness theBusiness;
private final ObjectMapper objectMapper;
public MyBusinessServlet() {
theBusiness = // locate and construct implementation.
objectMapper = // Initialise Jackson deserialisation.
}
public void doGet(HttpServletRequest request, HttpServletResponse response) {
final MyBusinessRequest requestBody = objectMapper.readValue(
request.getInputStream(), MyBusinessRequest.class);
final MyBusinessResponse responseBody = theBusiness.doProcess(requestBody);
objectMapper.writeValue(response.getOutputStream(), responseBody));
}
}
Единственная сложная вещь здесь инстанцировании ваши MyBusinessClass. Существуют шаблоны для различных структур DI, которые могут помочь там. В основном они предполагают использование сервлета, предоставляемого инфраструктурой, для выполнения всех этих маршаллинга и развязывания для вас, и вам просто нужно закодировать бизнес-логику и соответствующим образом аннотировать класс. И Spring-MVC, и Джерси делают это. Важно то, что класс сервлета имеет дело со всем взаимодействием типа HTTP и с сериализацией, в то время как логика инкапсулирована в другое место за интерфейсом, поэтому каждый класс может быть хорошо протестирован изолированно.
- 1. Как отправить параметры запроса в Android HttpPost
- 2. Как отправить параметры в тело HTTP-запроса?
- 3. Как отправить параметры с помощью http-запроса
- 4. Как отправить параметры с помощью запроса GET?
- 5. Как отправить и обработать параметры запроса с помощью запроса Oauth?
- 6. ie9 отправить запрос потерять параметры запроса
- 7. Отправить параметры для запроса Swift 3 Alamofire
- 8. IBM worklight - Как отправить параметры запроса в файл PHP?
- 9. Как отправить параметры из одного HTTP-запроса другому в jmeter
- 10. Как отправить параметры запроса из одного веб-приложения в другое?
- 11. Как отправить параметры sql-запроса в другой запрос?
- 12. Как отправить специальные символы в параметры запроса весной
- 13. Tsung - Как отправить массив или объект в параметры запроса?
- 14. Как отправить параметры запроса при использовании JsonArrayRequest в Volley
- 15. Как отправить параметры django
- 16. Как отправить параметры в Qthread
- 17. Как отправить параметры в рельсы?
- 18. Как отправить параметры в очереди?
- 19. Как отправить параметры методу?
- 20. Golang: Отправить параметры ПОЧТОЙ
- 21. Как отправить параметры запроса к прыжку WebFlow контроллера
- 22. RestTemplate: как отправить URL и параметры запроса вместе
- 23. Как отправить и Получать параметры запроса с просьбой HTTP
- 24. AngularJS - Как отправить общие параметры URL для всего запроса?
- 25. Отправить URL-закодированные параметры в Node.js с использованием модуля запроса
- 26. Реальный активный ресурс: как отправить параметры сообщения в тело запроса, а не как строки запроса?
- 27. Отправить параметры в HTTPService
- 28. Как работают параметры запроса в CodeIgniter?
- 29. Невозможно отправить параметры моего запроса в bluemix deployed node.js
- 30. Добавить параметры для запроса
Если вы говорите JavaBeans, вы имеете в виду EJB? Потому что они на самом деле должны жить в бизнес-логике. – fvu
Нет, я имею в виду JavaBeans. Я еще не изучал EJB. –
Любой класс с нулевым конструктором arg, свойства которого доступны через getters и seters, сериализуемый, является JB. См. [Здесь] (http://stackoverflow.com/questions/3295496/what-is-a-javabean-exactly). Первоначально (назад, когда COM и SOM были ключевыми словами) бобы должны были стать краеугольным камнем структуры компонентов, в то время как их использование намного более общее. Поэтому не стесняйтесь использовать бобы, хотя я чувствую, что вы окажете себе одолжение, если параллельно вы начнете узнавать о EJB. Учебник Oracle JEE очень хорош, ИМО. – fvu