配置Web服务&瘦客户端使用Servlet + JSON + MySQL

时间:2013-10-29 15:30:33

标签: java mysql json tomcat

我有一个使用Java SE开发的瘦客户端。我的瘦客户端需要连接到Web服务器:

  1. 从数据库请求信息。
  2. 发送更新,插入和&删除请求。
  3. 瘦客户端永远不会直接连接到数据库。 读完后&在网上讨论我得到了以下突出技术:

    1. 安装数据库服务器(MySQL)&创建我的数据库。
    2. 安装Web服务器(Tomcat)。
    3. 移动SQL查询&逻辑到Web服务器。
    4. Web服务器将具有执行SQL语句的Servlet。
    5. 我的瘦客户端将从Web服务器请求结果,Web服务器将从MySQL数据库获取数据,&使用JSON格式将结果集返回给我的瘦客户端。
    6. 瘦客户端将解码JSON格式。
    7. 在瘦客户端中处理数据,然后将任何更新发送回Web服务器,这些更新对于更新我的数据库是合理的。
    8. 我需要什么:

      • 这是更好的方法,或者我们可以使用另一个想法。
      • 我是否需要使用任何其他技术来实现这一目标。
      • 我可以在哪里找到一些有用的例子。
      • 我希望向其他人发布一份完整的文档,以便通过简单的步骤从中获益,而无需在数天内搜索互联网。
      • 我希望你们所有人都能分享我们。

      二手技术:

      • Tomcat服务器。
      • MySQL服务器。
      • 瘦客户端的Java SE。
      • Servlet for logic&数据库操作。

1 个答案:

答案 0 :(得分:1)

我一直在做类似的工作。以下是我们正在处理的问题。

我们有一个Web客户端,与您的瘦客户端类似,需要来自后端数据库的信息。它通过访问RESTful Web服务来完成此操作,该服务将进行数据库调用并将信息返回到JSON包中的客户端。

使用的工具:

所有这些工具都可以很好地协同开发Web服务。 Roo允许快速开发和简单的方法将项目的所有元素结合在一起。它不仅适用于SqlServer,hibernate和Tomcat,而且不需要IDE(例如Spring Tool Suite有内置的GUI shell),但它依赖于Maven。我非常喜欢它。它使用AspectJ的大部分魔力,但是一旦你超越了AspectJ的神秘感,它就变得非常直观。

这是Roo的一个很好的教程:http://docs.spring.io/spring-roo/reference/html/beginning.html

希望这有帮助!

编辑: 这是一个具有hibernate的Roo将创建的存储库

域名实体:

@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请求的Controller类:

@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));
    }
}

通过向“http:// {host} / example / somename”发送Htpp PUT请求来调用方法putExample()。 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)工具包。它可以用于原型应用程序。你需要做一些编程,但它会更少。

请告诉我这是否有助于澄清事情!