2013-10-29 85 views
1

我有一個使用Java SE開發的瘦客戶機。我的瘦客戶端需要連接到Web服務器才能:使用Servlet + JSON + MySQL配置Web服務和瘦客戶機

  1. 從數據庫請求信息。
  2. 發送更新,插入,&刪除請求。

瘦客戶端永遠不會直接連接到數據庫。 在互聯網上閱讀&討論後,我得到了以下突出顯示技術:

  1. 安裝數據庫服務器(MySQL的)&創建我的數據庫。
  2. 安裝Web服務器(Tomcat)。
  3. 將SQL查詢&邏輯移至Web服務器。
  4. Web服務器將有執行SQL語句的Servlet。
  5. 我的瘦客戶端會向網絡服務器請求結果,網絡服務器將從MySQL數據庫獲取數據,&使用JSON格式將結果集返回到我的瘦客戶端。
  6. 瘦客戶端將解碼來自JSON的格式。
  7. 在我的瘦客戶機中處理數據,然後將任何更新發回到更新我的數據庫的合理Web服務器。

我需要的:

  • 這是更好的方式來做到這一點,或者還有另外一個想法,我們可以一起工作。
  • 我是否需要使用任何其他技術來實現這一點。
  • 在哪裏我可以得到一些工作的例子。
  • 我想向其他人發佈完整的工作文檔,以簡單的步驟從中獲益,而無需在互聯網上搜索幾天。
  • 我希望你們所有人都會分享我們。

使用的技術:

  • Tomcat服務器。
  • MySQL服務器。
  • 適用於瘦客戶端的Java SE。
  • Servlet for logic &數據庫操作。

回答

1

我一直在研究類似的工作。這是我們正在做的處理它。

我們有一個Web客戶端,對於瘦客戶端來說,需要來自後端數據庫的信息。它通過訪問一個REST風格的Web服務來完成此操作,該服務將進行數據庫調用並將信息以JSON包的形式返回給客戶端。

所使用的工具:

所有這些工具都非常適合開發Web服務。 Roo允許快速開發和簡單的方法將項目的所有元素組合在一起。它不僅僅支持SqlServer,Hibernate和Tomcat,並且不需要IDE(即使Spring Tool Suite具有內置的GUI外殼),但它依賴於Maven。我絕對喜歡它。它使用了AspectJ的大部分魔力,但是一旦你過去了AspectJ的神祕感,它就變得非常直觀。

繼承人一個很好的教程爲小豆:http://docs.spring.io/spring-roo/reference/html/beginning.html

希望這有助於!

編輯: 這是袋鼠與Hibernate會創建

域實體存儲庫:

@RooJavaBean 
@RooToString 
@RooJpaEntity(table = "Example") 
@RooJson 
public class Example { 

    private String name = "default"; 
    public Example(String name){ 
     this.name = name; 
    } 
} 

庫:

package com.example.repositories; 

import org.springframework.roo.addon.layers.repository.jpa.RooJpaRepository; 

@RooJpaRepository(domainType = Example.class) 
public interface ExampleRepository { 
} 

一旦你有了這些,你創建一個控制器類即能夠執行如下HTTP請求:

@RooWebJson(jsonObject = Example.class) 
@Controller 
@RequestMapping("/example/") 
public class ExampleController { 
    @Resource 
    ExampleRepository exampleRepo; 

    @RequestMapping(method = RequestMethod.PUT, value ="/{name}") 
    public void putExample(@PathVariable("name") String name) { 
     exampleRepo.save(new Example(name)); 
    } 
} 

調用方法putExample()是通過向「http:// {host}/example/somename」發送Htpp PUT請求完成的。 RequestMapping還有很多選項,例如請求中包含的特定標頭。來自請求的JSON/xml也可以交給服務供該方法使用。

添加新的查詢,可以做到像這樣:

@Query("select * from Example e where e.name = ?1) 
List<Example> getAllByName(String name); 

添加這個方法到倉庫教室將給你一個新的SQL查詢。注意:查詢是用選擇語言的JPA編寫的。這是Hibernate的方式。

這裏有一些與RESTful服務相關的約定。比如,Http PUT和POST只應該用來做Sql UPDATE或者INSERT查詢,Http GET應該用於Sql SELECT,Http DELETE用於Sql DELETE等,但是它最多隻能給Web服務器設計器。

我應該說明Roo是一個快速應用開發(RAD)套件。它可以用於原型應用程序。你需要做一些編程,但它會少一些。

讓我知道這是否有助於澄清事情!

+0

這真的很酷,但我已經在java SE中準備好了瘦客戶端,我需要將邏輯和SQL語句移到服務器端,所以客戶端只有GUI。請求將拋出Web服務器來從中得到響應。我不想創建一個Web應用程序,只需要創建一個例如將JSON返回給我的瘦客戶機的servlet。 –

+0

這基本上就是我們正在做的。 Web服務沒有GUI,它只處理HTTP請求,例如客戶端會發送一個http GET到「http:// host/service /」,服務將返回一個JSON包中的任何需要返回的包。服務本身只包含用於訪問後端數據庫的邏輯。 你看過使用RESTful Web服務的服務器端應用程序嗎? – Vae

+0

是的,我讀了RESTful&瞭解它,也是JSON。所以JSON將是我從數據庫獲取數據的方式,但是INSERT,UPDATE,DELETE呢? –