之前写了关于
JavaFX与后台通信的blog,里面只提交了一个Field的值,如果要提交两个甚至更多的Field的值就很麻烦了(通过组装字符串,后台解析。)所以就想到了json,之前看网上的资料说javafx自带了json的包,但是在javafx1.1里面没有找到,就找了个第三方的包org.json。
废话不多说,直接改原来的程序就可以了,使用post提交。
import javafx.io.http.*;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.ext.swing.SwingButton;
import java.io.DataInputStream;
import javafx.scene.layout.HBox;
import javafx.ext.swing.SwingTextField;
import org.json.JSONObject;
def field:SwingTextField = SwingTextField {
columns: 10
text: "Ivan"
editable: true
}
def field2:SwingTextField = SwingTextField {
columns: 10
text: "dd"
editable: true
}
var t:String= bind field.text;
var p:String = bind field2.text;
function sendHttp(){
HttpRequest {
method:HttpRequest.POST;
location:"http://localhost:8080/JavaScriptWeb/moo";
onOutput: function(os: java.io.OutputStream) {
try {
var json:JSONObject = JSONObject{};
json.put("name1",t);
json.put("name2",p);
var temp:String = "obj={json.toString()}";
os.write(temp.getBytes());
os.flush();
} finally {
os.close();
}
}
onInput: function(is: java.io.InputStream) {
try {
def data:DataInputStream = new DataInputStream(is);
field.text = data.readLine();
} finally {
is.close();
}
}
}.enqueue();
}
Stage {
title : "Http"
scene: Scene {
width: 200
height: 200
content: [HBox{
content:[
field,field2
SwingButton {
text: "Click"
action: function() {
sendHttp();
}
}
]
}
]
}
}
代码添加了一个Field,核心代码在onOutput里面,就是调用了JSONObject类的一些方法而已。实际作用就是组装了一个如下的字符串。"obj=\{\"name1\":\"{t}\",\"name2\":\"{p}\"\}"将这个字符串提交到后台。
package test;
import org.json.JSONObject;
import org.json.JSONException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletException;
import java.io.PrintWriter;
import java.util.Enumeration;
/**
* Created by IntelliJ IDEA.
* User: Ivan
* Date: 2009-4-3
* Time: 19:55:13
*/
public class MooServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, java.io.IOException {
doGet(request,response);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, java.io.IOException {
String obj = request.getParameter("obj");
JSONObject jsonObj = null;
try {
jsonObj = new JSONObject(obj);
} catch (JSONException e) {
e.printStackTrace();
}
PrintWriter writer = response.getWriter();
try {
writer.write("Hello "+ jsonObj.getString("name1") + jsonObj.getString("name2"));
} catch (JSONException e) {
e.printStackTrace();
}
writer.flush();
writer.close();
}
}
依然是调用了JSONObject类的方法,解析出了字符串。然后返回即可。当然了,这里你还可以组装一个字符串返回,供前台去解析,不啰嗦了。
此方法相对于想在成熟的java的Ajax框架来说肯定差不少,但是目前而言还是个不错的解决方案。
分享到:
相关推荐
javafx界面开发工具,方便大家下载 javafx_scenebuilder-2_0-windows
javafx_scenebuilder
JavaFx SceneBuilder2.0 看好多人官网下载不了我放这里面
javafx scene builder 2.0-windows.msi.7z
Java11以后的版本不再集成Javafx,需要单独下载
javafx_scenebuilder-2_0-macosx-universal.dmg mac 版本的 JavaFx开发设计工具,外网下载很慢,我贡献出来
javafx_scenebuilder-2_0-windows.msi 官方下载地址: https://www.oracle.com/java/technologies/javafxscenebuilder-1x-archive-downloads.html
linux系统下,可用如下两...java --module-path /home/ubuntu20/javafx-sdk-18/lib --add-modules javafx.controls,javafx.fxml -jar EQMSAny_jar.jar 其中 /home/ubuntu20/javafx-sdk-18 是上包所解压后的你放置的路径
javaFX语法后台交互文档(3M)javaFX语法后台交互文档(3M)
javafx-sdk-17.0.2-lts-windows-x64
javafx_scenebuilder-2_0-windows.msi javafx_scenebuilder-2_0-macosx-universal.dmg javafx_scenebuilder-2_0-linux-x64.tar.gz javafx_scenebuilder_samples-2_0.zip javafx_scenebuilder_kit_javadoc-2_0.zip
netbean中,java语言开发怎样很好很快地布局?这是一个开发效率的重要问题。这里提供了一个很好用的工具,可以方便快捷地绘制出java的界面,从而实现桌面程序的快捷开发。
NULL 博文链接:https://angkor.iteye.com/blog/410382
JavaFX是基于java语言的 图形化界面工具箱,带有大量的内置组件,如按钮,文本字段,表格,树,菜单,图表等; JavaFX支持 2D图形、3D图形、WebView; JavaFX编写的程序,可以运行在 Windows、Linux、Mac、iOS、Android / ...
javafx_scenebuilder-2_0-windows.exe
可视化布局环境,能让您快速设计用于JavaFX应用程序的用户界(UI),而无需编写任何代码。它允许图形界面(GUI)控件简单地被拖拽定位到一个JavaFX场景。当你建立用户界面布局时,FXML的布局代
最新JavaFx 2.0 電子書 In Pro JavaFX 2: A Definitive Guide to Rich Clients with Java Technology, Jim Weaver, Weiqi Gao, Stephen Chin, Dean Iverson, and Johan Vos show you how you can use the JavaFX ...