html ajax调用servlet,Ajax请求Servlet无效解决办法

Ajax请求Servlet无效

项目建立的是动态的网页项目

Servle是在src中,ajax创建在WebContent中的

这是xml配置:

javascript

Ctrl.JavaScript

javascript

/js

这个是ajax的js文件代码

var req;

var url = "/js?aid=" + aid;

alert(url);

//创建一个XMLHttpRequest对象req

if(window.XMLHttpRequest) {

//IE7, Firefox, Opera支持

req = new XMLHttpRequest();

alert("支持");

}else if(window.ActiveXObject) {

//IE5,IE6支持

req = new ActiveXObject("Microsoft.XMLHTTP");

alert("不支持");

}

//var url = "/js?aid=" + aid;

//req.open("get", "/src/Ctrl/JavaScript.java", true); //发送请求

//req.open("get","JavaScript.java", true); //发送请求

alert(url);

//onreadystatechange属性存有处理服务器响应的函数,有5个取值分别代表不同状态

req.onreadystatechange = callback;

//send函数发送请求

req.send(null);

}

function callback() {

alert("成功进入callback,状态为" + req.readyState );

if(req.readyState == 4 && req.status == 200) {

alert("status为" + req.status );

var check = req.responseText;//得到js处理过后的值

alert(" req.responseText="+check);//验证是否是成功调用了servlet

show (check);

} alert("status为" + req.status );

}

function show(str) {

if(str == "OK") {

var show = "恭喜!!用户名可用!";

System.out.println("***********当前show的值是:" + show + "**********");

alert("用户名可用");

}

else if( str == "NO") {

var show = "对不起,用户名不可用!!请重新输入!";

System.out.println("***********当前show的值是:" + show + "**********");

alert("用户名已存在");

}

}

下面是servlet中的代码:(printf在控制台根本没有显示)

package Ctrl;

import java.io.IOException;

import java.io.PrintWriter;

import java.sql.ResultSet;

import javax.servlet.ServletException;

import javax.servlet.annotation.WebServlet;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import DB.DBBean;

import Entities.Applicant;

/**

* Servlet implementation class JavaScript

*/

@WebServlet("/JavaScript")

public class JavaScript extends HttpServlet {

private static final long serialVersionUID = 1L;

/**

* @see HttpServlet#HttpServlet()

*/

public JavaScript() {

super();

// TODO Auto-generated constructor stub

}

/**

* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)

*/

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

// TODO Auto-generated method stub

System.out.println("*********protected void doGet************");

checkAid(request, response);

}

/**

* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)

*/

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

// TODO Auto-generated method stub

//doGet(request, response);

checkAid(request, response);

System.out.println("*********protected void doPost************");

}

private void checkAid(HttpServletRequest request,

HttpServletResponse response) throws IOException {

// TODO Auto-generated method stub

response.setContentType("text/html;charset=UTF-8");

PrintWriter out = response.getWriter();

DBBean db = new DBBean();

String aid = request.getParameter("aid");

System.out.println("***********当前aid的值是:" + aid + "**********");

String count = null;

try {

response.setContentType("text/html");

response.setHeader("Cache-Control", "no-store");

response.setHeader("Pragma", "no-cache");

response.setDateHeader("Expires", 0);  //通过以下几行代码设置浏览器不进行Ajax处理页面的缓存

db.init();

String sql = "SELECT count(aid) FROM applicant where aid=?";

System.out.println(sql);

System.out.println("**********调用javascript的方法checkAid*********");

ResultSet rs = db.executeQuery(sql, aid);//执行sql语句,where子句中aid=ap.getAid()

while (rs.next()) {

count = rs.getString(1);

}

if(count.equals("0")) {

out.write("OK");

}

else {

out.write("NO");

}

} catch (Exception e) {

e.printStackTrace();// 提示出错信息

} finally {

db.close();

}

}

}

url也是改了很多遍,除了打印出alert,servlet里面是都没有任何反应,还劳驾各位大神帮忙看看了!!

------解决思路----------------------

一个是你url的问题,一个是生成JavaScript.class这个字节码文件存放路径问题!

我根据你贴的代码,修改了下,搞了个示例是可以访问的

0958067.jpg

下面这个字节码文件存放的路径,你看看你原来的是不是这样搞的

0958068.jpg

示例源码

http://pan.baidu.com/s/1bnaZZP1http://

------解决思路----------------------

你的web.xml中的url 为 /js

但是 你的servlet注解中拦截的url地址为 @WebServlet("/JavaScript")

这样,你的前台请求和后台的处理对应不起来,所以请求到不了后台,servlet就没有反应了

将这两个URL统一一下就好了,或者都改为URL,或者都改为JavaScript