【发布时间】:2009-11-30 09:09:14
【问题描述】:
我正在尝试使用 Ajax 和 servlet 做一个简单的应用程序。但是当我试图执行应用程序时,它不起作用。 请检查代码,让我知道会出现什么问题?
function createRequest()
{
alert("hai createRequest()");
try
{
req=new XMLHttpRequest();
}
catch(trymicrosoft)
{
try
{
req=new ActiveXObject("Msxml2.XMLHTTP");
}
catch(othermicrosoft)
{
try
{
req=new ActiveXObject("Microsoft.XMLHTTP");
}
catch(failed)
{
req=null;
}
}
}
if(req==null)
alert("req==null");
}
function startRequest()
{
alert("hai startRequest()");
createRequest();
alert("hai created Request()");
var username=document.getElementById("user").value;
req.open("get","http://localhost:8080/login/CheckLogin?user="+username,true);
req.onreadystatechange=handleStateChange;
alert("hai returned from handle state change");
req.send(null);
}
function handleStateChange()
{
alert("hai handleStateChange()");
if(req.readyState==4)
{
if(req.status==200)
{
var message=req.responseXML.getElementsByTagName("valid")[0].childNodes[0].nodeValue;
document.getElementById("results").innerHTML=message;
}
else
{
alert("Sorry status failed");
document.getElementById("results").innerHTML="Sorry problem in status";
}
}
else
{
alert("Sorry readyStatus failed");
document.getElementById("results").innerHTML="Sorry problem in readyState";
}
}
上面的函数是用Javascript和servlet写的
package com.assignment.login;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class CheckLogin extends HttpServlet
{
public void doGet(HttpServletRequest request,HttpServletResponse response)throws IOException,ServletException
{
System.out.println("Hai i have entered into servlet");
String userId=request.getParameter("user");
if(userId!=null && !userId.equals("jeya"))
{
response.setContentType("text/xml");
response.getWriter().write("<valid>U can use this id</valid>");
}
else
{
response.setContentType("text/xml");
response.getWriter().write("<valid>U cannot use this id</valid>");
}
}
public void doPost(HttpServletRequest request,HttpServletResponse response)throws IOException,ServletException
{
doGet(request,response);
}
}
但在输出中,正在打印以下警报,
Hai start request
Hai create request
Hai created request
Hai returned from handle state change
hai handle state change
sorry readyStatus failed
hai handle state change
sorry readyStatus failed
hai handle state change
sorry readyStatus failed
hai handle state change
sorry status failed
我的 web.xml,
<web-app>
<servlet>
<servlet-name>CheckLogin</servlet-name>
<servlet-class>com.assignment.login.CheckLogin</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>CheckLogin</servlet-name>
<url-pattern>/CheckLogin</url-pattern>
</servlet-mapping>
在 servlet 中,我打印了“我已进入 servlet”,但它没有在服务器窗口中打印出来。那会是什么问题,请给我建议来解决它...提前谢谢.. .
编辑: 这是我尝试执行上述应用程序时发生的异常。但是 CheckLogin 类在正确的位置...但是相同的代码在 Eclipse 中工作。所以请任何人告诉我可能是什么问题??? 请求的资源 (/login/CheckLogin) 不可用。
【问题讨论】:
-
尝试直接从浏览器中触发它,然后查看它是否命中您的 servlet。
-
我没有使用除文本编辑器之外的任何特殊编辑器。所以每次我都会直接将它触发到浏览器中。
-
是的,它没有命中 servlet,这就是我的问题。
-
感谢大家的宝贵建议。
-
下一步:jQuery。您不希望在生产中使用此样板 JS 代码。
标签: java javascript ajax servlets