繁体   English   中英

Javascript到Java Web应用程序

[英]Javascript to Java Web Application

我正在尝试在Eclipse中做一个简单的Web项目。 我的目标是使.jsp / html文件成为表示层,使用javascript处理逻辑,并用Java处理服务器端的东西。 对于我的简单测试,我只希望能够使我的JavaScript代码与Web服务器联系并让Java代码返回日期。 这是我现在所拥有的(请注意,我仅显示“麻烦”部分)

.jsp(Timer.jsp):

<div ><h2 id="date" class="main"></h2></div>

JavaScript(timer.js):

var xhr = new XMLHttpRequest();
    document.getElementById("date").innerHTML = xhr.responseText;
    xhr.open("GET", "CoopTimer", true);
    xhr.send();

Java的:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // TODO Auto-generated method stub
    DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
    Date date = new Date();

    request.setAttribute("date", dateFormat.format(date).toString());

    request.getRequestDispatcher("/Timer.jsp").forward(request, response);

}

我确定JavaScript是错误的,可能是麻烦所在。 因此,从本质上讲,我的目标是让标头ID“日期”从javascript获取日期,而javascript将从java servlet获取值。

如果有人能指出正确的方向,无论是资源,您有什么用,那将是非常棒的。 谢谢!

编辑:这是我使用的最终代码。 经过数小时的尝试来找出问题所在……在Eclipse中没有提及右键单击服务器上的HTML和运行方式。 一个可耻的错误,但我永远不会忘记。

这是我用来返回简单日期字符串的代码:

.jsp(Timer.jsp):

<div ><h2 id="date" class="main"></h2></div>

Javascript(timer.js)

$("#date").load("http://127.0.0.1:14949/CoopTimer/CoopTimer");

Java的:

/**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
        Date date = new Date();

        response.setContentType("text/plain");  
        response.setCharacterEncoding("UTF-8"); 
        response.getWriter().write(date.toString());

        //System.out.println("PING");
    }

至少有两个问题。

首先:Servlet的结果是Timer.jsp呈现的内容。 而且Timer.jsp不会对servlet存储在请求中的日期做任何事情。 如果只希望servlet返回格式化的日期,则无需转发到JSP。 只需将日期写给回复的作者即可。

第二:您的JavaScript代码甚至在发送请求之前,尝试使用响应的内容更改标头的innerHTML。 这行不通。 为了使您的JS代码更易于编写和理解以及在浏览器之间移植,我的建议是使用jQuery及其AJAX函数:

$('#date').load('CoopTimer');

使用jquery进行ajax调用本身很简单。 这是javascript代码段

function pullResultFromServlet() {
  var url = 'servletURL';
  $.ajax({
    url: url,
    dataType: 'json',
    data:{
      "dateValue: $('#date').val(),
    },
    type: 'POST',
    success: function(responseFromServlet) {
      // further processing
      }


    },
    error: function(jqXHR, textStatus, errorThrown) {
    }
  });
}

暂无
暂无

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

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