当前位置: 首页 > 面试题库 >

在嵌入式Tomcat上从Spring-Boot Web应用程序运行Python脚本

商琛
2023-03-14
问题内容

我正在尝试制作一个Web应用程序,该应用程序在Spring-boot上使用HTML
Form接收来自用户的输入(在嵌入式Tomcat上运行);我需要将此输入作为命令行参数传递给位于硬盘上某个地方的Python脚本。

这是我的控制器,可从HTML表单获取数据(从表单获取数据工作正常。)

@Controller
public class PortalController {
    @RequestMapping(value="")
    public String hello(){
        return "portal/welcome";
    }
    @RequestMapping(value="",method=RequestMethod.POST)
    public String addAObjectForm(@RequestParam String val) throws IOException {
        String cmd = "python Fetch.py \""+val+"\"";
        System.out.println(cmd);
        Runtime.getRuntime().exec(cmd);
        return "redirect:/";
    }
}

变量“ cmd”最后存储该值: python Fetch.py "Command-line-arg-from-html"

Python代码正在抓取网络。 该代码太大,无法移植到Java。 我的v.sweet老师要求我在Spring-
Boot上制作网络应用。
由于该应用程序在Tomcat上运行,因此好像无法像在控制台上一样直接执行Py脚本。有人可以建议一种方法吗?非常感谢您的帮助。

注意:Spring-Boot Project和Python Script都可以独立运行而没有问题。

我遇到的问题是,代码仅在控制台上打印变量“ cmd”并继续。数据库中没有反映出任何更改(应该由Py脚本完成),这表明该脚本未执行。这是控制台窗口:

2018-03-03 05:44:47.733  INFO 10752 --- [  restartedMain] o.s.j.e.a.AnnotationMBeanExporter        : Registering beans for JMX exposure on startup
2018-03-03 05:44:47.771  INFO 10752 --- [  restartedMain] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path ''
2018-03-03 05:44:47.771  INFO 10752 --- [  restartedMain] org.OpenLyrics.Portal.PortalApplication  : Started PortalApplication in 3.161 seconds (JVM running for 7.414)
2018-03-03 05:44:55.737  INFO 10752 --- [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring FrameworkServlet 'dispatcherServlet'
2018-03-03 05:44:55.738  INFO 10752 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : FrameworkServlet 'dispatcherServlet': initialization started
2018-03-03 05:44:55.765  INFO 10752 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : FrameworkServlet 'dispatcherServlet': initialization completed in 26 ms
python Fetch.py "Argument 1"
python Fetch.py "Argument 2"
python Fetch.py "Argument 3"

问题答案:

我挖了很多互联网,找到了解决方案。

可以使用以下命令执行此操作:

String fetching = "python " + "c:\\Fetch.py \"" + songDetails + "\"";
String[] commandToExecute = new String[]{"cmd.exe", "/c", fetching};
Runtime.getRuntime().exec(commandToExecute);


 类似资料:
  • 我刚刚进入spring boot应用程序教程(1.5.8版)。我创建了一个简单的hello world独立应用程序,它支持log(log4j2)。当我执行应用程序时,我得到一个错误,端口8080已经在使用中。我有点困惑,我以为这个应用程序是独立的程序,不需要web容器或应用服务器。我想你可以根据阅读来部署它。 为了避免异常,在阅读了一些关于它的文章后,我通过提供参数使其工作。 我读到spring

  • 我下面介绍了spring的RESTAPI,但我无法让它在tomcat服务器上运行(尝试了tomcat 7和9)。在eclipse中,我确实以- 编辑 尝试在项目上安装mvn,然后java-jarproject.jar 编辑2 我将项目导出到一个可运行的jar(并将所需的库打包到生成的jar中),但是 提供 编辑3 我没有删除我的m2,因为那里有很多东西,但我现在通过eclipse的spring工具

  • 我正在尝试在Tomcat上部署多个spring boot web应用程序。所有应用程序都有相同的application.properties。如何拆分在Tomcat上运行的不同应用程序的配置文件。

  • 我有一个Spring Boot项目,我想在嵌入式spring tomcat上部署该项目,因为服务器(suse-linux)没有应用程序容器。我怎么能这么做?是.war还是un.jar?我如何配置嵌入式tomcat以指向服务器上安装的java?。 pom.xml .罐子 谢谢你的帮助。

  • 我怎么能做到..以编程方式有什么方法可以做到这一点。 Pls救命!

  • 是否有一种方法来运行一个Spring Boot应用程序(可运行的war),以便它监听两个端口--一个带有SSL,一个不带有SSL。我使用的是嵌入式Tomcat8。 SSL当前正在使用 任何建议都欢迎一如既往!

  • 我试图使用Intellij启动一个Spring应用程序,但我得到了下面的错误。我尝试将Tomcat依赖项放在pom.xml中,但这并不奏效(我后来也发现不需要这样做)。 应用程序应该可以正常工作,因为它已经在一个同事的电脑上工作了,所以我不太确定为什么我会得到这个错误。我已经尝试了几个修复,我在这里遇到了,但没有一个奏效。下面是我的: