【问题标题】:Calling Java Method from html without using a servlet不使用 servlet 从 html 调用 Java 方法
【发布时间】:2016-02-25 14:09:04
【问题描述】:

我的index.html 有一个特定的视图,我想通过调用一个使用 Web 服务并检索数据的 java 方法来更新这个视图(不重定向或重新加载页面)。我想在我的index.html 中显示数据。我尝试使用 servlet,但它重定向到另一个 url,这不是我想要做的。

有没有办法在我的index.html 中调用 java 或显示 java 类的属性?

【问题讨论】:

  • 您想在什么时候获取这些数据?在 index.html 的构建或页面加载后,可能是在某些用户点击之后?
  • 如果不想重新加载页面,您想使用带有 AJAX 的 servlet,而不是直接使用 servlet。这里的这个例子可能会帮助你 - mysamplecode.com/2012/04/jquery-ajax-request-response-java.html.

标签: java html


【解决方案1】:

我会使用 jquery 并将 ajax 调用回服务器。 ajax 调用完成后,您可以使用 javascript 更新 index.html 文件,而不必重新加载页面。

【讨论】:

    【解决方案2】:

    您可以使用 servlet,但必须使用 Ajax 对 servlet 进行异步调用,而无需重新加载整个页面。

    $.ajax({
        type:"post",
        url: "redirector?operacion=515&id_orden="+id_orden+"&id_acto="+id_acto, 
        dataType: "text",
        success: function(response){
            //Do the stuffs you need with the response here.
        },
        error: function(response,error){
            console.log(response);
            console.log(error);
        }
    
    });
    

    这是使用 jquery 进行 ajax 调用的示例,其中“redirector”是我的 servlet 的名称,而在我的 servlet 上,这是我拥有的代码:

    case 515:
    
        PrintWriter writer = response.getWriter();
        response.setContentType("text/html");
        response.setCharacterEncoding("UTF-8");
    
        try {
        Integer id_acto = Integer.parseInt(request.getParameter("id_acto"));
        String resultado = consultasBBDD.consultarNivelesPorActo(id_acto);
        writer.print(resultado);
    
        } catch (Exception e) {
        System.out.println("Error recuperando niveles de exigencia");
        }
    
        writer.flush();
        writer.close();
       break;
    

    在 ajax 调用的dataType 属性上,您必须指定响应的类型。还要记住,在您的 servlet 上,当您进行 ajax 调用时,您不能执行 request.getRequestDispatcher(urlToGo);

    希望对我有帮助,并为我糟糕的英语感到抱歉!

    【讨论】:

      【解决方案3】:

      一种方法是将您的 Java 功能公开为 REST 服务。

      泽西 REST 端点

      @Path("/rest/emp/")
      public class EmployeeService {
          @GET
              @Path("/{param}")
              public EmployeDTO getMsg(@PathParam("param") String id) {
      
      
      
                  return getEmployeeDetails(id);
      
              }
      
          }
      

      EmployeDTO.java

      String name;
      String id;
      String address;
      //getters and setters
      

      index.html

      <!DOCTYPE html>
      <html>
          <head>
              <title>Sample Page</title>
              <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
              <script src="employee.js"></script>
          </head>
      
          <body>
              <div>
                  <p id="eid">The ID is: </p>
                  <p id="eName">The Employee Name: </p>
                  <p id="eAddress">The Employee Address:</p>
              </div>
          </body>
      </html>
      

      employee.js

      $(document).ready(function() {
          $.ajax({
              url: "/rest/emp/10" (Your Rest end point URL)
          }).then(function(data) {
             $('#eid').append(data.id);
             $('#eName').append(data.name);
             $('#eAddress').append(data.address);
      
          });
      });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-01-31
        • 2012-11-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-14
        • 1970-01-01
        相关资源
        最近更新 更多