2012-01-13 41 views
3

這個問題是關於一個使用JSP作爲ExtJS控制器的適當架構。ExtJS的JSP後端

我對服務器端開發相當陌生,但我對ExtJS 4非常熟悉,每天都會更好地使用Java和SQL。

我想創建一個JSP控制器到來自ExtJS商店的數據。我有服務器上運行的MSSQL數據庫和Tomcat。

我成功創建了一個從數據庫讀取並返回JSON數據的JSP(sqlData.jsp)。我將查詢名稱傳遞給此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還處理來自ExtJS的框架store.save()電話。這意味着JSP需要接收POST請求,然後根據一堆JSON數據進行更新(ExtJS以GET方式發送讀取請求,而像store.save()這樣的寫入方法是POST)。

我的計劃是在Java中添加一些東西來識別它是POST還是GET請求。然後,如果它是POST請求,我會將它發送到JSP中的其他Java方法來解析JSON並將其寫入數據庫。

當然,我將不得不改變我的「查詢」表中有更多/插入語句鏈接到相同的查詢名稱(即:[query_id],[query_name],[select_query],[update_query])。

這個後端實現是否有意義?

其他人使用JSP和ExtJS來實現這個更流暢嗎?

我注意到有一個api配置選項,我可以在我的代理中設置爲不同的操作指定不同的URL(READ,WRITE,DELETE等)。我應該創建一個單獨的JSP並使用此配置直接指示所有寫入請求嗎?

在代理上添加一個writer: 'json'配置,以便它在之前解析是否明智嗎?我想我不得不在JSP中解析它,所以我不認爲我應該這樣做。

任何指針將不勝感激。

+2

我承認我已經做了很多ExtJS工作已經有幾年了(當時我正在考慮回顧問題)......但是這不是應該由各種[Ext.Direct工具包?](http://www.sencha.com/forum/showthread.php?67992-Ext.Direct-Server-side-Stacks)...或者他們不支持將更改推回到服務器? – Joe 2012-01-13 21:54:26

+0

以前從未使用過Ext.Direct。我喜歡它們的外觀,好像它會插入到一個servlet中,檢查出它... – 2012-01-13 22:31:01

回答

8

因爲你的後端是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

+0

謝謝晁,這個似乎是贏家。我現在已經轉換爲servlet,並且正在計算Spring集成。 – 2012-01-15 17:03:23

2

我會跳過jsp,直接轉到servlets。即在Servlet中實現返回json和處理POST,PUT等東西的邏輯......

jsps是爲了表達意見。但在你的情況下,你的視圖層是它自己在客戶端運行的應用程序。你只需要這些數據。

Servlet API puts允許您處理請求,獲取http方法和流數據到響應。

+0

清除了一些東西,可能會將它轉換爲帶有上面提到的Ext.Direct庫@Joe之一的servlet。 – 2012-01-13 22:51:39

1

我的建議是與MVC服務器端框架。我最喜歡的是Grails,它可以讓你直接處理輸入和輸出的JSON對象。它也非常簡單,使用grails來讀取和寫入數據到數據庫。

+0

謝謝,檢查出Grails。 – 2012-01-13 22:48:17