当前位置: 首页 > 知识库问答 >
问题:

如何在客户端服务器Web交互期间执行Python代码

白迪
2023-03-14

我目前正在编写一个客户端/服务器Web应用程序使用JavaServlet和Python。虽然我在客户端交互方面遇到了问题,主要是在生成输入方面。生成输入需要通过在客户端本地执行python脚本来修改用户输入的数据,然后通过POST请求提交给Servlet服务器。在此之后,Servlet将把接收到的数据传递到另一个python脚本服务器端,以验证给定输入的有效性。Python在这个过程中是必要的,因为计算是巨大的(2^4096)位长度

所以我真正想问的是;

当用户使用表单访问网页,填写表单,然后单击提交按钮时,如何从表单字段中提取数据,将内容作为输入参数传递到本地python脚本中,执行python脚本。然后将新的计算数据从python脚本返回到web浏览器,以便向服务器发送POST请求。

共有1个答案

邢寒
2023-03-14

这里有两种可能性:

1)Java控制器

从Java Servlet中获取表单数据:

String Form_text_data = request.getParameter("text_input");

如果有许多字段,你可以实例化一个StringBuilder(与所有请求归档,你需要)得到一个字符串的所有目标字段答案-一定要做健全的检查这些字段之前,将他们添加到您的StringBuilder。

然后将String结果从字符串生成器传递给Runtime类,该类具有exec方法:

StringBuilder Python_script_command = new StringBuilder("python PATH/TO/YOUR/PYTHON_SCRIPT.py");

Python_script_command.append(Form_text_data) // Repeat this as many time as you wish for each form fields, but be sure to make sanity check before to avoid any injections that you do not want

Process p = Runtime.getRuntime().exec(Python_script_command.toString());

然后,您可以通过以下方式绑定输出:

       BufferedReader stdInput = new BufferedReader(new 
             InputStreamReader(p.getInputStream()));

        BufferedReader stdError = new BufferedReader(new 
             InputStreamReader(p.getErrorStream()));

    // read the output from the command
    System.out.println("Here is the standard output of the command:\n");
    while ((s = stdInput.readLine()) != null) {
        System.out.println(s);
    }

有关更多详细信息,请参阅本文:

http://alvinalexander.com/java/edu/pj/pj010016

2)执行从python API框架,如FLASK

您也可以直接在python中构建REST API,当用户提交表单时,您可以通过POST请求将其发送到您的python应用程序

然后,提取您需要的数据非常简单:

from flask import Flask, request
app = Flask(__name__)

@app.route('/', methods=['GET', 'POST'])
def index():
    default_name = '0' 
    data = request.form.get('input_name', default_name) #here is an example on one data getter from a form field

有关更多详细信息,请参见此答案(如何在Flask中获取表单数据?)

然后直接在python中使用这些数据,再次进行各种理智检查

 类似资料:
  • 我目前正在考虑构建一个简单的MMORPG。 这个想法是拥有一个 .NET 服务器和可下载的客户端应用程序。 组织客户端-服务器交互的最简单而有效的方法是什么? 我想到了一个网络服务,但只要客户端必须快速执行许多游戏操作(例如移动、拾取物品、攻击其他玩家等),它看起来效率很低。 创建自定义通信协议是一项非常复杂的任务。 是否存在现成的解决方案?

  • 本文向大家介绍详解Android客户端与服务器交互方式,包括了详解Android客户端与服务器交互方式的使用技巧和注意事项,需要的朋友参考一下 最近的Android项目开发过程中一个问题困扰自己很长时间,Android客户端与服务器交互有几种方式,最常见的就是webservices和json。要在Android手机客户端与pc服务器交互,需要满足下面几种条件:跨平台、传输数据格式标准、交互方便。

  • 问题 你需要通过HTTP协议以客户端的方式访问多种服务。例如,下载数据或者与基于REST的API进行交互。 解决方案 对于简单的事情来说,通常使用 urllib.request 模块就够了。例如,发送一个简单的HTTP GET请求到远程的服务上,可以这样做: from urllib import request, parse # Base URL being accessed url = 'ht

  • 问题内容: 我有stfw,但是找不到在Java中创建Web服务客户端的简单/独立方法。 有人在此链接/示例吗? 问题答案: 使用Axis2怎么样? 只需按照快速入门指南进行操作,就可以轻松应对。 这是另一个更具描述性的指南

  • 客户端交互性 所有的WebDAV客户端分为三类—独立应用程序,文件浏览器扩展或文件系统实现,这些分类定义了WebDAV用户可用的功能性。表 C.1 “常用WebDAV客户端”给WebDAV常见软件进行了分类,并提供了的简短描述。 表 C.1. 常用WebDAV客户端 软件 类型 Windows Mac Linux 描述 Adobe Photoshop 独立的WebDAV应用程序 X 图像编辑软件,

  • 我想在一些计算机之间建立点对点连接,这样用户就可以在没有外部服务器的情况下聊天和交换文件。我最初的想法如下: 我在服务器上制作了一个中央服务器插座,所有应用程序都可以连接到该插座。此ServerSocket跟踪已连接的套接字(客户端),并将新连接的客户端的IP和端口提供给所有其他客户端。每个客户端都会创建一个新的ServerSocket,所有客户端都可以连接到它。 换句话说:每个客户端都有一个Se