【问题标题】:Calling a java method in ajax在ajax中调用java方法
【发布时间】:2013-04-03 08:46:48
【问题描述】:

我正在 Netbeans Ide 中创建一个 jsp 应用程序。我在 ajax 中调用 java 类方法时遇到问题。是否可以这样做

我的 java 类是这样的:

public class Hello
{
    public String execute(String s)
    {
        return "success";
    }
}

我无法弄清楚如何使用 ajax 调用执行方法: 我目前的ajax代码是:

var val="test string";
$.ajax({
type: "GET",
url: "http://localhost:8084/Shade/src/java/mail/Main.execute",
data: val,

async: true,
cache: false,
success: function (msg) {

alert("hi");
$(".col-1").html(msg);
});

提前感谢:)

【问题讨论】:

  • 看看:link
  • Servlet 在哪里? Java 本身不提供 HTTP 连接,您必须使用服务器/框架(Tomcat、Jetty、JBoss)。它们都使用Servlet规范,你的业务类必须实现Servlet并在服务器中正确声明。
  • 或者,不使用 Servlet,而使用 SOAP(为您管理 servlet)。对于新手来说,第一种方法应该更容易。
  • 如果您使用像 Spring 或 Struts 这样的 RESTFul API,则可以通过 AJAX (JSON) 调用方法。否则,您必须向以 XML 响应的 URL 发送请求。

标签: java ajax jsp


【解决方案1】:

AJAXAsynchronous JavaScript And XML 的首字母缩写。它提供了与服务器异步通信的能力。

简单来说,您可以向服务器发送请求并继续与用户进行用户交互。您无需等待服务器的响应。一旦响应到达,UI 中的指定区域将自行更新并反映响应信息。整个页面不需要重新加载。

因此,您不能以url 的身份直接访问Java 类来发出您的Ajax 请求。它应该是任何映射的 url,如 JSPServletsPHP 等。

创建一个 JSP(例如hello.jsp

<%
String strResponse;
mail.Main objMain = new mail.Main();
strResponse = objMain.execute();
%>

<%=strResponse %>

在 Ajax 请求中

url: "hello.jsp",

编辑:添加示例:

<script type="text/javascript" src="js/jquery.min.js"></script> 
<script type="text/javascript">
  $(function(){
      function getData() {
          var dataToBeSent  = {
            uName : $("#userName").val() , //
            passwd: $("#password").val()
            }; // you can change parameter name

          $.ajax({
                url : 'getDataServlet', // Your Servlet mapping or JSP(not suggested)
                data :dataToBeSent, 
                type : 'POST',
                dataType : 'html', // Returns HTML as plain text; included script tags are evaluated when inserted in the DOM.
                success : function(response) {
                    $('#outputDiv').html(response); // create an empty div in your page with some id
                },
                error : function(request, textStatus, errorThrown) {
                    alert(errorThrown);
                }
            });
      }

});

在 Servlet/JSP 中访问您的参数request.getParameter("uName");

【讨论】:

  • @Baadshah:谢谢你.. :)。你能告诉我那是什么吗?所以,我可以编辑。
  • :) 我想你不知道可能是你忘记了。为了使用java类文件,我们必须在jsp中导入它,对吧?
  • @Baadshah:根据 OP 的示例,我写了 mail.Main 其中mail 是包名称。 :)
  • 谢谢。我只需要一件事,我应该如何将 ajax 中的变量数据传递给我的 jsp 文件并因此传递给 java 方法执行?
  • 如果uName传入javascript是数组对象,我们如何在servlet中访问uName?那是var uName = [{id: 1, value: 'one'}, {id: 2, value: 'two'}];。我们如何在 servlet 中也访问对象变量?
【解决方案2】:

您不能直接调用该方法。您应该将 URL 映射到要调用的方法。 这可以在 servlet 中完成。如果您已经通过 Java 代码提供页面,则只需添加一个新方法来提供包含所需内容的页面。

【讨论】:

    猜你喜欢
    • 2019-10-15
    • 1970-01-01
    • 1970-01-01
    • 2012-03-30
    • 1970-01-01
    • 2015-05-07
    • 2012-09-28
    • 2011-05-29
    • 1970-01-01
    相关资源
    最近更新 更多