Бэкэнд JSP для ExtJS - PullRequest
       6

Бэкэнд JSP для ExtJS

3 голосов
/ 14 января 2012

Этот вопрос касается правильной архитектуры, использующей JSP в качестве контроллера для ExtJS.

Я довольно новичок в разработке на стороне сервера, но я довольно хорошо знаком с ExtJS 4 и ежедневно совершенствуюсь с Java и SQL.

Я пытаюсь создать контроллер JSP для записи данных из хранилищ в ExtJS.У меня есть база данных MSSQL и Tomcat, работающие на сервере.

Я успешно создал JSP (sqlData.jsp), который читает из базы данных и возвращает данные JSON.Я передаю имя запроса в эту JSP, затем он ищет, что запрос из таблицы «запроса» (столбцы: [query_id],[query_name],[query]).Затем он выполняет запрос и возвращает данные в формате JSON - это нормально работает для получения данных в ExtJS из базы данных.

Чтобы использовать эту настройку бэкэнда, я обычно настраиваю хранилище следующим образом:

var store = Ext.create('Ext.data.Store', {
    model: 'aModel',
    proxy: {
        type: 'ajax',
        url: 'sqlData.jsp?queryName=aQueryName',
        reader: 'json'
    },
    autoLoad: true
});

Почему-то мне нужен этот sqlData.jsp, чтобы также обрабатывать вызов store.save() из среды ExtJS,Это означает, что JSP должен получить запрос POST, а затем выполнить обновление, основанное на куче данных JSON (ExtJS отправляет запрос на чтение в виде GET, а методы записи, такие как store.save(), являются POST).

Мой план состоял в том, чтобыдобавьте что-нибудь в Java, чтобы узнать, является ли это запросом POST или GET.Затем, если это запрос POST, я бы отправил его другому методу Java в JSP, чтобы проанализировать JSON и записать его в базу данных.

Конечно, мне пришлось бы изменить свою таблицу «запросов», чтобы иметь другой столбец для операторов обновления / вставки, связанных с тем же именем запроса (т. Е. [query_id],[query_name],[select_query],[update_query]).

Имеет ли эта внутренняя реализацияиметь смысл?

Кто-нибудь еще использует JSP и ExtJS для достижения этого сглаживания?

Я заметил, что есть параметр конфигурации api, который я могу установить в моем прокси-сервере для указания различных URL-адресов для различных операций (READ, ЗАПИСАТЬ, УДАЛИТЬ и т. Д.).Должен ли я создать отдельный JSP и вместо этого направлять все запросы на запись, используя эту конфигурацию?

Было бы разумнее добавить конфигурацию writer: 'json' на прокси, чтобы она анализировала перед POSTING?Я подумал, что мне придется разбирать его в JSP в любом случае, поэтому я не думал, что должен.

Любые указатели будут высоко оценены.

Ответы [ 3 ]

8 голосов
/ 14 января 2012

, поскольку ваш бэкэнд является Java, я действительно рекомендую использовать Spring 3.0 MVC для кодирования вашего бэкенда.

JSP не подходит для того, что вы делаете, потому что:

  1. функции, которые вы пишете там, не могут быть проверены модулем.
  2. функции, которые вы пишете там, не могут быть использованы повторно.
  3. код, который вы пишете в JSP, функциональный, а не объектно-ориентированный, вы не можете внедрить необходимые сервисы в JSP.

Spring 3.0 MVC действительно хорошо взаимодействует с ExtJS 4, а именно с RESTful URL и согласованием контента.

В этом примере показано, как объединить две вещи вместе.http://java.dzone.com/articles/extjs-4-file-upload-spring-mvc

2 голосов
/ 14 января 2012

Я бы пропустил jsp и просто пошел прямо к сервлетам.т. е. реализовать логику в сервлетах как для возврата json, так и для обработки таких вещей, как POST, PUT и т. д.Но в вашем случае ваш уровень представления - это собственное приложение, работающее на клиенте.Вам нужны только данные.

Положения API сервлета позволяют обрабатывать запросы, получать метод http и передавать данные в ответ.

1 голос
/ 14 января 2012

Мой совет: переходите на серверную инфраструктуру MVC.Мой фаворит - Grails, который позволяет вам работать с объектами JSON как для ввода, так и для вывода.Его также очень просто читать и записывать данные в базу данных.

...