本文概述
- 创建Servlet
- 包括服务器端代码
- 检索JSON数据
实作
创建Stock Exchange的JSON数据源示例:
我们已经实现了股票价格类别并刷新监视列表方法为:
/**
* Generate random stock prices.
*/
private void refreshWatchList() {
final double MAX_PRICE = 100.0;
// $100.00
final double MAX_PRICE_CHANGE = 0.02;
// +/- 2%StockPrice[] prices = new StockPrice[stocks.size()];
for (int i = 0;
i <
stocks.size();
i++) {
double price = Random.nextDouble() * MAX_PRICE;
double change = price * MAX_PRICE_CHANGE
* (Random.nextDouble() * 2.0 - 1.0);
prices[i] = new StockPrice(stocks.get(i), price, change);
}updateTable(prices);
}
创建Servlet 在此, 我们为JSON格式的股票报价创建一个servlet文件。以下是创建servlet的步骤:
1)创建一个Servlet
- 在程序包资源管理器中, 选择客户端程序包:com.google.gwt.sample.stockwatcher.client
- 在Eclipse中, 打开“新建Java类”向导(“文件”> “新建”> “类”)。
文章图片
2)在Package下, 将名称从.client更改为.server
- 在名称下, 输入JsonStockData。
- Eclipse将为服务器端代码创建一个包, 并为JsonStockData类创建一个存根。
文章图片
3)用以下代码替换存根:
package com.google.gwt.sample.stockexchange.server;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Random;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class JsonStockData extends HttpServlet {private static final double MAX_PRICE = 100.0;
// $100.00
private static final double MAX_PRICE_CHANGE = 0.02;
// +/- 2%@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {Random rnd = new Random();
PrintWriter out = resp.getWriter();
out.println('[');
String[] stockSymbols = req.getParameter("q").split(" ");
boolean firstSymbol = true;
for (String stockSymbol : stockSymbols) {double price = rnd.nextDouble() * MAX_PRICE;
double change = price * MAX_PRICE_CHANGE * (rnd.nextDouble() * 2f - 1f);
if (firstSymbol) {
firstSymbol = false;
} else {
out.println(", ");
}
out.println("{");
out.print("\"symbol\": \"");
out.print(stockSymbol);
out.println("\", ");
out.print("\"price\": ");
out.print(price);
out.println(', ');
out.print("\"change\": ");
out.println(change);
out.println("}");
}
out.println(']');
out.flush();
}}
包括服务器端代码 GWT由内部构建servlet容器Jetty组成, 该容器托管以JSON格式生成库存数据的servlet。在GWT中包含服务器端代码的步骤是:
- 在StockWatcher / war / WEB-INF / web.xml下编辑以下代码
<
?xml version="1.0" encoding="UTF-8"?>
<
!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<
web-app>
<
!-- Default page to serve -->
<
welcome-file-list>
<
welcome-file>
StockExchange.html<
/welcome-file>
<
/welcome-file-list>
<
!-- Servlets -->
<
servlet>
<
servlet-name>
jsonStockData<
/servlet-name>
<
servlet-class>
com.google.gwt.sample.stockexchange.server.JsonStockData<
/servlet-class>
<
/servlet>
<
servlet-mapping>
<
servlet-name>
jsonStockData<
/servlet-name>
<
url-pattern>
/stockexchange/stockPrices<
/url-pattern>
<
/servlet-mapping>
<
/web-app>
检索JSON数据 【GWT JSON用法】在开发模式下调试StockExchange。
- 此时, 库存数据仍来自客户端代码。
- 确保开发模式代码服务器正在运行, 并将股票代码传递到Servlet URL http:// localhost:8888 / stockexchange / stockPrices?q = ABC + DEF
文章图片
推荐阅读
- GWT JavaScript本机接口(JSNI)
- GWT简介
- GWT国际化
- GWT安装详细步骤
- GWT HTMLPanel用法
- GWT历史记录机制
- GWT网格用法
- GWT FormPanel用法
- GWT FlowPanel用法