- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
关于二进制数据和GWT,已经有几个问题。阅读它们之后,我仍然不确定以下条件是否可行(不过我是一个完整的GWT初学者!):
我有一些非常复杂的数据文件,仅以二进制形式存在,我无法将它们转换为XML或JSON之类的东西。我有一个封闭的源库,尽管该库接受byte []并返回我可以使用的Java对象。为了使我的GWT应用程序运行,我“打印”了这些二进制数据文件之一,并将生成的byte []硬编码到我从GWT应用程序代码访问的.java文件中。一切正常。显然,这只是一个测试,在已部署的应用程序中,我无法对这些数据文件进行硬编码。我想将它们放置在我的GWT应用程序所在的目录中,并通过我的GWT应用程序“加载”它们。
我认为我可以使用GWT从服务器上“加载”文本文件,对吗?为什么我不能用GWT读取二进制数据?还是可以将二进制数据文件读取为文本,将字符串读取为byte []?我读了很多有关base64编码的内容,尽管我不太了解他们在说什么,但是GWT可以阅读它。我可以将服务器配置为以base64编码的形式提供这些二进制数据文件,然后通过GWT读取它们吗?
还是有其他解决方案?如果可以的话,我不想触摸任何JS代码。这就是为什么我开始使用GWT;)
谢谢你的帮助 :)
最佳答案
假设我们使用的是HTML 4。
GWT客户端无法“读取”文件。 GWT客户端是在浏览器上运行的javascript。浏览器安全性不允许您读取本地文件。您必须让servlet代理在服务器上为您读取文件。
设置文件的mime类型是因为您希望浏览器下载文件并调用本地PC来调用适当的软件-例如,pdf调用pdf阅读器或xls调用ms excel。与GWT Java或Javascript无关(启用下载除外)。
为什么需要GWT客户端读取二进制文件?如果这样做,您的体系结构可能是错误的。 “错”是一个不客气的词。也许,错位是一个更好的词。您的AJAX瘦客户端-服务器概念不正确。进入GWT门后,将桌面处理概念和习惯放到门口。
GWT是Java,但不是Java
我一直在提醒人们,GWT Java只是Javascript的更连贯的表示形式。使用GWT Java进行编码时,请始终记住您实际上是使用Javascript而不是Java进行编码。将所有Java源代码翻译成Javascript
因此,GWT编译器需要在源代码中提供所有Java类。 GWT编译器无法将Java字节码jar / class文件转换为Javascript。如果您的库使用字节码,或者您的源库在调用链的任何地方调用字节码库,则编译将失败。
服务器端和客户端GWT之间的混乱
GWT RPC有时会使GWT新手感到困惑。他们似乎没有意识到远程servlet是唯一编译为字节码的部分,因为它在服务器上运行。特别是在使用Vaadin的情况下,因为它们故意使服务器和浏览器之间的界限模糊。因此,GWT新手开始思考,“为什么我的字节码库仅在应用程序的某些部分起作用?”
ajax客户端服务器体系结构
GWT仅仅是一个启用Web的UI。您为什么不能在服务器上做任何您想做的事情,而让服务器反映它正在对UI进行或已完成的工作?为什么必须在浏览器上完成?
只需将您的GWT接口想象成一个强大的JSP。假设您正在编写一个JSP。您是否让JSP将二进制数据吸收到浏览器中并让JSP生成Javascript来分析那里的二进制数据?
我已经编写了复杂的统计分析,而我只是使用浏览器来反映服务器上正在执行的操作。工程师认为他/她正在他/她的PC上运行分析。生成图表/报告。但这一切都是通过调用SAS在服务器上完成的。
面向服务的模式/体系结构
您的服务器将提供服务。您的浏览器GWT客户端将请求这些服务。
打开一个文件,读取该文件,分析该文件,生成分析的视觉/模拟表示并将其传递给浏览器。只需将GWT浏览器客户端视为基于服务器的操作的显示监视器即可。 GWT是魔术师的窍门,可以帮助我想到这种错觉,以使工程师们感觉到他们正在本地PC上进行分析。当然,作为工程师,大多数人都知道浏览器实际上并没有在做这项工作。
当您的用户对分析感到满意时,请获得您的服务以生成结果的mime表示,以便浏览器可以下载该结果以调用mime映射的相应本地PC软件。
在服务器上执行此操作,然后将其反映在浏览器上。
进一步编辑:关于二进制数据...
网络应用程序中使用base64编码的动机是:身份验证 token ,图片,音频文件的传输-以便它们的二进制表示形式和顺序不会被字节序之类的体系结构细节所弄乱。
例如,请勿尝试编写浏览器应用来读取原始的二进制电子表格-在将任何二进制元素发送到浏览器应用之前,始终让服务器将其转换为XML或JSON(最好是JSON),其中任何二进制元素均应使用base64编码。或者,如果您的生活目标是攀登珠穆朗玛峰,请发明与架构无关的编码,代替base64来传输二进制数据。
如果用于浏览器的操作系统处理(例如音频,图片,pdf),则仅使用二进制信息。发送二进制数据仅由javascript例程处理没有意义。 javascript例程将不得不使用多余的处理时间来翻译它(除非再次,如果您生活中的目的是攀登...)。
关于gwt - 二进制数据和GWT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11048223/
我想知道 GWT、GWT-RPC、EXT-GWT 和 Smart GWT 之间的区别。目前,我设法借了有关 GWT 的书籍,据我所知,它只是一个旨在促进快速高效的 Ajax(异步 JavaScript
不,这不是问如何让 Guava 在 GWT 中工作,因为我已经让它工作了。 我的问题是,当我执行继承时 我希望在命名空间 com.google.common.collect 中找到一个文件 Coll
Ext GWT 和 GWT-Ext 之间有区别吗?因为我在浏览 Ext GWT 时看到了这个页面 http://gwt-ext.com/demo/ .有什么帮助吗? 最佳答案 ExtGWT 由开发 E
调查gwt-dispatch之后和 Google Wave I/O presentation (Best practices) ( video here ),我想知道为什么官方 GWT 版本 (2.0
我在我的应用程序中使用带有 ext 的 GWT 2.0.3。该项目不再处于积极开发状态并且已被 Smart GWT 取代。我正在为此应用程序使用 HMVC 模式。现在使用现有的 GWT 2.0.3 和
当我尝试在 Windows Vista 上为 ie 8 使用 GWT 开发模式插件时,我不断看到安装插件的提示。 运行插件后我仍然总是看到这个页面。有谁知道如何解决这样的问题? 最佳答案 看这个:Ca
我正在尝试对 GWT RPC 序列化策略进行一些背景阅读,发现 GWT 在编译后将 *.gwt.rpc 文件中的可序列化类型列入白名单。 以下是我的应用程序中生成的一个此类 .gwt.rpc 文件的摘
如果 Enum 实现了 java.io.Serializable,我无法将它序列化为 GWT。它会成功编译 GWT,但在运行时,我会感到害怕: Type 'com....security..Admin
是否有可以与 GWT 一起使用的进度条小部件,还是必须自己制作?我尝试在 google-web-toolkit-incubator、gwtupload 和 upload4gwt 中使用进度条,但没有任
由于 Javadoc 没有说明使用 com.google.gwt.core.shared.GWT 的原因,它似乎包含 com.google.gwt.core.client.GWT 的功能子集,前者存在
我必须在 gwt 中创建一个图像按钮,它使用三个图像(左侧图像、中心拉伸(stretch)图像和右侧图像)。左侧图像和右侧图像具有圆角。中心图像想要拉伸(stretch)取决于按钮标题大小.创建的 I
我正在尝试在 GWT 的垂直面板中设置 align 属性,如下所示: vpanel = new VerticalPanel(); vPanel.setHorizontalAlignment(HasHo
我想在 GWT 中添加可编辑的组合框,请告诉我解决方案? 最佳答案 试试 Advanced GWT Components , 具体来说 org.gwt.advanced.client.ui.widge
我在使用 GWT Designer 配置 GXT 时遇到问题。我拥有 Eclipse、GWT 插件和 GXT 的所有新版本,但无法将 GXT 配置为与 GWT Designer 一起使用。我设置了我的
我们有一个当前使用 Capistrano 部署的应用程序。该应用程序使用 php 作为后端,使用 GWT 作为前端。 我已经设法通过 Ant 文件编译 GWT,但想用自定义 Capistrano 任务
这应该很简单,但不知何故我找不到在 GWT 中创建简单超链接的方法。基本上,我想在用户点击某些东西时加载另一个页面。 Hyperlink似乎仅指向内部 GWT 应用程序状态。我想我可以把链接放在 HT
在 GWT 界面中哪个更好,使用带有 javacode 的普通 MVP,还是 UiBinder?从性能、编辑、简单性方面。 最佳答案 这就是Google says : Besides being a
GWT 2.5.0 开发模式 我在下面对文件上传做了一个简单的测试, startupUrl: http://127.0.0.1:8888/UploadTest.html?gwt.codesvr=127
我需要创建一个SuggestBox,在按下时将显示所有选项 Enter键。 我已经写了以下实现,看来是 工作正常。 我希望有人审查我的实现情况,并让我知道 在任何特定情况下都会引起问题。 另外,要传递
在哪里可以找到有关 GWT 和 GWT-Ext 延迟加载的更多信息? 最佳答案 快速谷歌搜索显示 nice blog entry由 GWT 团队提供。 关于 GWT-Ext,我无话可说,但无论采用何种
我是一名优秀的程序员,十分优秀!