Javascript到javaweb应用程序
我正在尝试在eclipse中执行一个简单的web项目。我的目标是让.jsp/html文件成为表示层,让javascript处理逻辑,让Java处理服务器端的东西。对于我的简单测试,我只希望我的javascript代码能够与web服务器联系,并让java代码返回一个日期。这是我现在拥有的(注意我只显示“故障”部分) .jsp(Timer.jsp): 爪哇: 我确信JavaScript是错误的,可能是问题所在。所以本质上,我的目标是让标题id“date”从javascript获取日期,javascript将从javaservlet获取值 如果有人能给我指出正确的方向,无论是资源方面,还是你所拥有的,那就太棒了。谢谢大家! 编辑:这是我最后使用的代码。经过数小时的努力找出问题所在……eclipse中没有提到右键单击HTML并在服务器上运行。一个耻辱的错误,但我永远不会忘记 下面是我用来返回简单日期字符串的代码: .jsp(Timer.jsp): 爪哇:Javascript到javaweb应用程序,java,javascript,web-applications,servlets,Java,Javascript,Web Applications,Servlets,我正在尝试在eclipse中执行一个简单的web项目。我的目标是让.jsp/html文件成为表示层,让javascript处理逻辑,让Java处理服务器端的东西。对于我的简单测试,我只希望我的javascript代码能够与web服务器联系,并让java代码返回一个日期。这是我现在拥有的(注意我只显示“故障”部分) .jsp(Timer.jsp): 爪哇: 我确信JavaScript是错误的,可能是问题所在。所以本质上,我的目标是让标题id“date”从javascript获取日期,javascr
至少有两个问题 第一:servlet的结果是Timer.jsp呈现的结果。并且Timer.jsp对servlet存储在请求中的日期不做任何处理。如果您只希望servlet返回格式化的日期,则不需要转发到JSP。只需将日期写给回复的作者即可 第二:JavaScript代码甚至在发送请求之前都会尝试使用响应的内容更改标题的innerHTML。这不行。我的建议是,为了使您的JS代码更易于编写、理解和在浏览器之间移植,请使用jQuery及其AJAX功能:
$('#date').load('CoopTimer');
至少有两个问题 第一: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) {
}
});
}
使用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) {
}
});
}
我为
servlet
添加了一个标记。您应该查看我们在SO的文档:如果您想发送AJAX请求,那么您不想转发到jsp,您需要直接写入响应输出流(可能是json)。我为servlet
添加了一个标记。您应该查看我们在SO的文档:如果您想发送AJAX请求,那么您不想转发到jsp,您需要直接写入响应输出流(可能是json);我会找出是什么在试图发出请求,然后将响应发送给它?第二:我已经读了很多关于jQuery的书,它让事情变得简单多了。有没有一种方法可以使用HttpRequest()根据响应而不是我正在做的事情来获取赋值?或者这只适用于jQuery?首先:如果URL的控件要返回当前日期,则只需返回当前日期,而无需找出试图发出请求的内容。请求就是请求,servlet应该总是做同样的事情。第二:当然,没有jQuery也是可能的。jQuery没有比您自己编写的任何脚本更强大的功能。但它使事情变得如此简单和便携,以至于不使用它就像是在射自己的脚。当我在加载时,我应该使用什么地址?我遇到了与使用HTTPRequest.open时相同的问题,在那里它找不到CoopTimer文件。[警告]SRVE0190E:找不到文件:/CoopTimer.java您需要使用servlet映射到的URL。这应该在关于servlet的最基本教程或书籍中介绍。我的Javascript现在将成功联系服务器,但是我不认为Java没有正确返回字符串,或者我的Javascript没有正确接收值。当我在eclipse中测试并运行页面时,Servlet地址/CoopTimer将显示字符串。但是,如果我转到Timer.jsp,它不会显示字符串。相反,它会显示Object.First:So,而不是说equest.getRequestDispatcher(“/Timer.jsp”).forward(请求,响应);我会找出是什么在试图发出请求,然后将响应发送给它?第二:我已经读了很多关于jQuery的书,它让事情变得简单多了。有没有一种方法可以使用HttpRequest()根据响应而不是我正在做的事情来获取赋值?或者这只适用于jQuery?首先:如果URL的控件要返回当前日期,则只需返回当前日期,而无需找出试图发出请求的内容。请求就是请求,servlet应该总是做同样的事情。第二:当然,没有jQuery也是可能的。jQuery没有比您自己编写的任何脚本更强大的功能。但它使事情变得如此简单和便携,以至于不使用它就像是在射自己的脚。当我在加载时,我应该使用什么地址?我遇到了与使用HTTPRequest.open时相同的问题,在那里它找不到CoopTimer文件。[警告]SRVE0190E:找不到文件:/CoopTimer.java您需要使用servlet映射到的URL。这应该包含在关于servlet的最基本的教程或书籍中
$("#date").load("http://127.0.0.1:14949/CoopTimer/CoopTimer");
/**
* @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");
}
$('#date').load('CoopTimer');
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) {
}
});
}