繁体   English   中英

从 Javascript/HTML 调用 Java

[英]Call Java from Javascript/HTML

我想在 HTML 文件中调用我的 Java 方法,但我不知道如何调用。

这是Java类:

package GET;

import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.apache.commons.collections4.MultiValuedMap;
import org.apache.commons.collections4.multimap.ArrayListValuedHashMap;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.*;
import java.util.*;

public class ProductController {

    public MultiValuedMap<String, MultiValuedMap<String, String>> fahrradlenker= new ArrayListValuedHashMap<>();
    public MultiValuedMap<String, String> flatbarlenker= new ArrayListValuedHashMap<>();
    public MultiValuedMap<String, String> rennradlenker= new ArrayListValuedHashMap<>();
    public MultiValuedMap<String, String> bullhornlenker= new ArrayListValuedHashMap<>();

    @SuppressWarnings("Duplicates")
    public void lenkertyp() throws  IOException {
        ObjectMapper mapper = new ObjectMapper();


        URL urlForGetRequest = new URL("https://www.maripavi.at/produkt/lenkertyp");
        String readLine = null;
        HttpURLConnection connection = (HttpURLConnection) urlForGetRequest.openConnection();
        connection.setRequestMethod("GET");
        int responseCode = connection.getResponseCode();
        if (responseCode == HttpURLConnection.HTTP_OK) {
            BufferedReader in = new BufferedReader(
                    new InputStreamReader(connection.getInputStream()));
            StringBuffer response = new StringBuffer();
            while ((readLine = in .readLine()) != null) {
                response.append(readLine);
            } in .close();

            String lenker =response.toString();
            List<String> list = mapper.readValue(lenker, new TypeReference<List<String >>() {});

            for (int i=0; i<list.size();i++){
                String s = list.get(i);
                if (s.contains("Flatbarlenker")){
                    fahrradlenker.put("Flatbarlenker", flatbarlenker);
                }else if (s.contains("Bullhornlenker")){
                    fahrradlenker.put("Bullhornlenker", bullhornlenker);
                }else{
                    fahrradlenker.put("Rennradlenker", rennradlenker);
                }
            }

        } else {
            System.out.println("GET NOT WORKED");
        }
    }

这是 HTML 文件,我想在其中调用上面的 Java 方法:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Home</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
    <p>Configure your handlebar <a href="../js/call.js" >here</a></p>
    <More-sharebar><a href="../js/call.js" onclick="javascript:f()">More options</a></More-sharebar>
</body>
</html>

我创建了一个 JavaScript 文件来调用 Java 方法,但这也不起作用:

function f() {
    var lenkertyps = new Packages.GET.ProductController.lenkertyp();
}

这是我的项目的结构:

在此处输入图片说明

您无法直接在 JavaScript 中使用在 Java 中声明的类和函数。

鉴于此,您有 3 个主要选择:

  1. 用 JavaScript 重写 Java 类和函数。 这可能是可能的,除非您需要任何 DB/FS 操作或存储机密信息(如 API 机密)。
  2. 将您的 Java 功能拆分为可重用的一次性操作(例如:将字符串写入 DB 表),将这些功能公开为 API,从前端使用 JS。 这个选项很难从头开始正确实现,所以如果你需要它,你很可能想使用一些框架。
  3. 根据您的目的,您可能还想使用WebAssembly

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM