龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > JAVA开发 >

Java开发者结合Node.js编程入门教程(3)

时间:2014-09-04 02:43来源:网络整理 作者:网络 点击:
分享到:
在我们的项目中,我们想要加载所有名称为Pabst的啤酒列表。如果你不熟悉啤酒行业,你可以试下Pabst Brewing公司生产的美式淡啤。这些啤酒上面带有蓝绶带

在我们的项目中,我们想要加载所有名称为Pabst的啤酒列表。如果你不熟悉啤酒行业,你可以试下Pabst Brewing公司生产的美式淡啤。这些啤酒上面带有蓝绶带和柯尔特{敏感词}图案,他们包含所有的麦芽糖饮料种类。

首先你需要下载一个json文件,里面包含需要返回的所有数据。你可以用下面的URL来实现这点:
https://dl.dropboxusercontent.com/u/72466829/beers.json

下载结束后,使用mongoimport命令把它导入到数据库中,命令如下:

$ mongoimport --jsonArray -d yourDBName -c beers --type json --file /tmp/beers.json -h yourMongoHost --port yourMongoPort -u yourMongoUsername -p yourMongoPassword

你可以看到如下结果:

connected to: 127.0.0.1:27017
Tue Jun 10 20:09:55.436 check 9 24
Tue Jun 10 20:09:55.437 imported 24 objects

第5步: 创建Beer模型对象

  我们已经创建了一个数据库连接类并且已经把啤酒信息载入到MongoDB数据库里了,是时候创建一个模型对象来控制我们的啤酒信息了。创建一个新文件,名为Beer.java并把它放到/src/main/java/com/strongloop/data目录下。创建好该文件后,在其中添加如下代码:

package com.strongloop.data;
 
public class Beer {
  private String id;
  private String name;
  private String description;
 
  public String getId() {
    return id;
  }
  public void setId(String id) {
    this.id = id;
  }
  public String getName() {
    return name;
  }
  public void setName(String name) {
    this.name = name;
  }
  public String getDescription() {
    return description;
  }
  public void setDescription(String description) {
    this.description = description;
  }
}

 注意: 提供好的JSON文件中包含了更多我们将会使用到的信息,所以可以找出来看看,并向其中添加一些额外的功能来拓宽你的学习经验。

第6步: 创建REST服务

  猜猜看该干什么了?不错,我们终于准备好要创建基于REST的web服务了,它使我们可以获取到上一个步骤当中载入进来的啤酒信息。为此,我们需要创建一个新的名为BeerWS.java的文件,并把它放到/src/main/java/com/strongloop/webservice目录下。创建好之后,添加下列代码:

package com.strongloop.webservice;
 
import java.util.ArrayList;
import java.util.List;
import javax.enterprise.context.RequestScoped;
import javax.inject.Inject;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import com.strongloop.data.DBConnection;
import com.strongloop.data.Beer;
import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
import com.mongodb.DBObject;
 
@RequestScoped
@Path("/beers")
public class BeerWS {
 
  @Inject
  private DBConnection dbConnection;
 
  private DBCollection getBeerCollection() {
    DB db = dbConnection.getDB();
    DBCollection beerCollection = db.getCollection("beers");
    return beerCollection;
  }
 
  private Beer populateBeerInformation(DBObject dataValue) {
    Beer theBeer = new Beer();
    theBeer.setName(dataValue.get("name"));
    theBeer.setDescription(dataValue.get("name"));
    theBeer.setId(dataValue.get("_id").toString());
 
    return theBeer;
  }
 
  // 获取所有啤酒
  @GET()
  @Produces("application/json")
  public List<Beer> getAllBeers() {
    ArrayList<Beer> allBeersList = new ArrayList<Beer>();
 
    DBCollection beers = this.getBeerCollection();
    DBCursor cursor = beers.find();
    try {
      while (cursor.hasNext()) {
        allBeersList.add(this.populateBeerInformation(cursor.next()));
      }
    } finally {
      cursor.close();
    }
 
    return allBeersList;
  }
}

第7步: 浏览着啤酒信息傻乐

  喔,搞定。我们已经写好了一个REST服务,可以从数据库中获取所有的啤酒信息。现在把你的代码部署到你的应用服务器吧, 在浏览器中打开下列地址看看它是否工作正常:
http://yourserverlocation/ws/beers

  如果所有东西都正常,你将会看到所有的啤酒信息列表,如下图所示:

创建 Node 应用

  如果你按照上面的步骤使用java进行编程,你会意识到使用javaEE创建应用尽管进展很快,但是创建一个类似REST服务的简单应用还是很麻烦。不要误解,我仍然很喜欢用javaEE,但是发现对于很多场景,比如创建返回json数据的REST服务,Node更适用。接下来,我们将要使用StrongLoop的LoopBack API创建一个简单的web服务。另外,我会向你展示如何在苹果OSX系统上安装Node。

步骤1:安装 Node

精彩图集

赞助商链接